unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* [ANN] Guile-WM 0.1/Guile XCB 1.1
@ 2013-08-25  7:30 mark
  2013-08-24 21:06 ` Mark H Weaver
  0 siblings, 1 reply; 21+ messages in thread
From: mark @ 2013-08-25  7:30 UTC (permalink / raw)
  To: guile-user


Hi all,

I feel like it's time to announce Guile-WM, my stab at an all-Guile
Window Manager. It's actually more of a toolkit for writing X
applications, with the window manager stuff being what's implemented so
far. It includes live REPL support, the usual
keymap/minibuffer/user-defined command paradigm, and more. I'll put the
README at the end of the email.

Archive: http://www.markwitmer.com/dist/guile-wm-0.1.tar.gz
Git:     http://github.com/mwitmer/guile-wm

I've also dramatically revamped Guile XCB. Previously the variable names
and symbols used came directly from the XML-XCB files, and they weren't
very Scheme-y. I've normalized them to typical lowercase-dash-separated
form. I also made the interface "smarter" so that the you don't have
to deal with ugly details of the X protocol when it isn't absolutely
necessary.

On top of the core X protocol stuff, I added an optional (but highly
recommended) event loop that uses delimited continuations to let you
switch back and forth pretty seamlessly between your code and an X event
loop.

Archive: http://www.markwitmer.com/dist/guile-xcb-1.1.tar.gz
Git:     http://github.com/mwitmer/guile-xcb

Feel free to share your ideas, questions, or comments!

Thanks

-- 
Mark Witmer

                         ━━━━━━━━━━━━━━━━━━━━━
                                GUILE-WM


                              Mark Witmer
                          mark@markwitmer.com
                         ━━━━━━━━━━━━━━━━━━━━━


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 Prerequisites





1 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.
  • tinywm-inspired window management: Though I do some reparenting and
    highlight the focused window.
  • 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).
  • "icccm" support: Ha ha, not really, but I have a few bits and pieces
    implemented
  • 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
─────────────

  • Command-line options. Mainly to let you pick a different init file.
  • A more sophisticated tiling window manager algorithm
  • 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 doesn't support XInput2 yet,
    but we don't have to wait for them…
  • 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).



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2013-12-03 21:51 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-25  7:30 [ANN] Guile-WM 0.1/Guile XCB 1.1 mark
2013-08-24 21:06 ` Mark H Weaver
2013-08-24 23:07   ` Amirouche Boubekki
2013-08-24 23:40     ` Matt Wette
2013-08-25  6:49       ` Klaus Schilling
2013-08-25 12:49         ` dsmich
2013-08-25 22:00   ` mark.d.witmer
2013-08-25 18:03     ` Mark H Weaver
2013-08-26 18:38       ` mark
2013-08-25 19:33         ` Mark H Weaver
2013-08-26 10:22           ` Alex Sassmannshausen
2013-08-27 13:04             ` mark.d.witmer
2013-08-26 15:42               ` dsmich
2013-08-26 18:19               ` Alex Sassmannshausen
2013-11-29 21:53               ` Mark H Weaver
2013-11-30  5:13                 ` mark.d.witmer
2013-12-03 21:51                   ` Ludovic Courtès
2013-12-01  4:48                 ` Feng Shu
2013-12-02  4:34                   ` mark.d.witmer
2013-12-02 12:25                     ` msematman
2013-12-03  8:25                     ` Feng Shu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).