xmonad

Homepage: http://tarsius.github.com/xmonad-emacs/

Author: Jonas Bernoulli

Updated:

Summary

Integrate XMonad and Emacs

Commentary

MAINTAINER WANTED.  I have stopped using xmonad and switched back to
wmii.  Xmonad is a nice window manager but I really like the way
windows are arranged in columns in wmii.  Making xmonad behave the
same way would have required learning haskell - and I just don't have
the time for this at the moment.  If you are interested in taking over
this library please contact me - but be aware that this library is not
quite usable yet in it's current form.

xmonad-emacs tries to create an even more enjoyable environment than
what you already get from just using both xmonad and emacs by making
the two aware of one another.

xmonad-emacs consists of xmonad.el which make emacs aware of xmonad
and XMonad.Util.Emacs to make xmonad aware of emacs.  Additionally a
shell script wrapper around emacsclient named emonad is provided
which allows using emacs as a menu, just like xmobar or dzen.

The two most important features of xmonad-emacs are:

* Instead of using one minibuffer per frame a dedicated minibuffer
  frame is used which is placed at the bottom (or top) of the screen
  and is visible on all workspaces.

* When completing input in the minibuffer the *Completions* buffer is
  shown in a dedicated frame.  This frame can eigher float over other
  X windows or is placed at one of the edges of the screen while other
  X windows are resized to make room for it.  Once input is confirmed
  or aborted the frame is removed.

This has at least the following benefits:

* Both the minibuffer and completion buffers appear in consistant
  places on the screen.

* The active buffer doesn't shrink when completing some input.

* Last but not least emacs can be used as a menu - from xmonad itself
  for example to spawn application but also by other applications like
  Uzbl that could benefit from using something a bit more advanced than
  Dmenu.

`xmonad-mode' can be turned off but this currently fails to restore
the previous configuration completely.  Most notably the minibuffer
frame is not removed because existing frames can not easily be
modified to use their own minibuffer window instead of the default
minibuffer frame.

For more information see http://tarsius.github.com/xmonad-emacs/.

Configuration:

TODO cleanup and extend

Emacs has to be configures as follows.  But before you do that you
should first configure Xmonad as described at
http://http://tarsius.github.com/xmonad-emacs/XMonad-Util-Emacs.html.

This example assumes a monitor resolution of 2560x1600.  The minibuffer
frame is places at the bottom and the completion frame at the left.

(add-to-list 'load-path "/path/to/emacs/xmonad/")
(require 'xmonad)
(setq xmo-minibuffer-frame-alist
      '((left               .    0)   ; pixels
        (top                . 1570)   ; pixels
        (width              .  282)   ; characters
        (height             .    2)   ; lines
        (strut-bottom       .   30)   ; pixels
        (strut-bottom-end-x . 1599))) ; pixels, do not forget this
(setq xmo-completions-frame-alist
      '((left               .    0)
        (top                .   19)
        (width              .   50)
        (height             .  103)
        (strut-left         .  468)
        (strut-left-end-y   . 1566))) ; do not forget this
(xmonad-mode 1)

****
**** This library REDEFINES `completion--insert-strings'
****             DEFINED IN `minibuffer.el'.
****

Dependencies