Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mwitmer/guile-wm
A Window Manager Toolkit for Guile Scheme
https://github.com/mwitmer/guile-wm
Last synced: 3 months ago
JSON representation
A Window Manager Toolkit for Guile Scheme
- Host: GitHub
- URL: https://github.com/mwitmer/guile-wm
- Owner: mwitmer
- License: gpl-3.0
- Created: 2013-08-24T06:32:16.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2019-07-08T16:36:07.000Z (over 5 years ago)
- Last Synced: 2024-05-15T14:03:26.182Z (6 months ago)
- Language: TeX
- Size: 397 KB
- Stars: 221
- Watchers: 30
- Forks: 13
- Open Issues: 9
-
Metadata Files:
- Readme: README
- Changelog: ChangeLog
- License: COPYING
- Authors: AUTHORS
Awesome Lists containing this project
README
━━━━━━━━━━━━━━━━━━━━━
GUILE-WMMark Witmer
[email protected]
━━━━━━━━━━━━━━━━━━━━━Table of Contents
─────────────────1 Overview
2 Why?
3 What's Actually Implemented
4 What's Not Implemented
.. 4.1 Wish List
.. 4.2 Even Crazier Wish List
5 Sample
6 Installation and Prerequisites1 Overview
══════════Guile-WM is a framework for creating an X window manager (or any other
X application, really) and a set of useful modules designed for that
purpose. Users are encouraged to pick and choose from ones presently
available and contribute their own as well!Guile-WM relies /heavily/ on its user init file. In fact, it won't do
anything on its own without one. The intention is to provide something
100% configurable.2 Why?
══════Guile Scheme is just so much fun to work with, I wanted to build my
house out of it. (Also, StumpWM won't work in my Linux distribution
right now. And I find LOOP macros unsettling for some reason.)I didn't want to build a WM on top of xlib. It's obsolete, or should
be, anyway. XCB is great, and when I saw that it comes with XML files
that describe the X protocol so that you can easily implement an X
client in a different language, I decided to build the whole X client
stack in Scheme. Why not? So I made Guile XCB. And then, finally, I
got to work on this.3 What's Actually Implemented
═════════════════════════════• keymaps/minibuffer/user-defined commands: The usual emacs-style
stuff.
• A tiling window manager inspired by Stumpwm, as well as a drag/drop
window manager inspired by tinywm
• Built-in repl: make changes to the WM while it's running, talk to
the X server directly (if you're into that kind of thing), integrate
with Geiser in Emacs, etc. (Note: if you call a procedure that talks
to the X server, use the metacommand ,post to evalute the
expression. That way it'll run inside the event loop on the other
thread).
• Some icccm support
• And more! It's completely open, so you could implement whatever
window-management paradigm you like.4 What's Not Implemented
════════════════════════There's a lot more I'd like to do, but as you can see, it gets
progressively more grandiose and, um… crazy, perhaps.4.1 Wish List
─────────────• Some kind of window decoration
• Built-in replacements for those little X utility programs (xmodmap,
xsetbg, etc.) I did part of xrandr as a proof-of-concept.
• A status bar/modeline type thing
• Antialiased fonts! guile-pango would be good for this.
• Whatever else you want… ideas (and implementations) welcome.4.2 Even Crazier Wish List
──────────────────────────• Implement enough of a widget toolkit to actually run Guile Emacs
inside of Guile-WM all on Guile XCB. You would basically be running
a Lisp-machine at that point and all of your friends will be
jealous.
• Add support for XInput2 to Guile XCB w/touch gestures and whatnot
and build a hackable mobile device interface. Isn't it a tragedy
that smartphones are becoming the most common type of computer, but
you can't really hack on them? Real XCB does support XInput2 now, so
I'm running out of excuses…
• Build a WM on top of Wayland. That would require a Scheme Wayland
client, which could be built along the lines of Guile XCB, since the
Wayland projects comes with the same kind of XML spec files that XCB
uses.5 Sample
════════An annotated sample init file is included with the distribution as
"wm-init-sample.scm". It demonstrates how to set up the configurable
values in the available modules. Copy it to ~/.guile-wm to try it out.6 Installation and Prerequisites
════════════════════════════════You can use the typical ./configure, make, make install chain to build
Guile-WM.Guile-WM requires Guile XCB and the latest release of Guile (2.0.9).