xmonad wurde in Haskell geschrieben und basiert weitestgehend auf den Ideen von dwm. Durch den hohen Abstraktionsgrad benötigt es allerdings nur ~500 Zeilen Quelltext (Haskell), statt 2000 Zeilen in C, und bietet doch mehr Funktionen und leichtere Anpassungen.
Fuer die, die ihren Basteltrieb an einer vielversprechenden Fensterverwaltung ausleben wollen, hier eine knappe Anleitung. Auf die entspr. Rechte sollte man achten, saemtliche sudos habe ich weggelassen.
Installation
Neben der Versionsverwaltung Darcs [7]:
Code: Select all
emerge darcs
Code: Select all
emerge layman
layman -a haskell
Code: Select all
PORTDIR_OVERLAY="/usr/portage/local/layman/haskell"
source /usr/portage/local/layman/make.conf
Code: Select all
x11-wm/xmonad-darcs savedconfig extensions
dev-lang/ghc binary
Code: Select all
dev-haskell/cabal ~x86
dev-haskell/mtl ~x86
dev-haskell/x11 ~x86
dev-haskell/x11-extras-darcs ~x86
dev-lang/ghc ~x86
x11-wm/xmonad-darcs ~x86
Da wir oben das use-Flag savedconfig gewaehlt haben, bricht die Installation von xmonad-darcs:
Code: Select all
emerge xmonad-darcs
env-update && source /etc/profile
Code: Select all
cd /etc/portage/
mkdir -p savedconfig/x11-wm/
cd savedconfig/x11-wm/
cp /var/tmp/portage/x11-wm/xmonad-darcs-0/work/xmonad-darcs-0/Config.hs xmonad-darcs-0
nano xmonad-darcs-0
Code: Select all
/etc/portage/savedconfig/x11-wm>diff xmonad-darcs-0.org xmonad-darcs-0
29a30
> import XMonadContrib.DynamicLog
44c45
< modMask = mod1Mask
---
> modMask = mod4Mask
55c56
< defaultGaps = [(0,0,0,0)] -- 15 for default dzen
---
> defaultGaps = [(15,0,0,0)] -- 15 for default dzen
97c98
< ratio = 1%2
---
> ratio = 9%13
109c110,111
< logHook = return ()
---
> logHook = dynamicLog
> -- logHook = return ()
111d112
< -- |
120,122c121,127
< [ ((modMask .|. shiftMask, xK_Return), spawn "xterm") -- @@ Launch an xterm
< , ((modMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"") -- @
@ Launch dmenu
< , ((modMask .|. shiftMask, xK_p ), spawn "gmrun") -- @@ Launch gmrun
---
> [ ((modMask .|. shiftMask, xK_Return), spawn "xterm +sb -e zsh") -- @@ Launch an xterm
> -- , ((modMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"") -
- @@ Launch dmenu
> , ((modMask, xK_e ), spawn "claws-mail") -- @@ Launch claws-mail
> , ((modMask, xK_f ), spawn "gftp") -- @@ Launch gftp
> , ((modMask, xK_g ), spawn "gqview") -- @@ Launch gqview
> , ((modMask, xK_o ), spawn "opera") -- @@ Launch opera
> , ((modMask, xK_v ), spawn "gvim") -- @@ Launch gvim
165,168c170,173
< ++
< [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust f)
< | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
< , (f, m) <- [(view, 0), (shift, shiftMask)]]
---
> -- ++
> -- [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust f)
> -- | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
> -- , (f, m) <- [(view, 0), (shift, shiftMask)]]
Code: Select all
emerge xmonad-darcs
Wie man oben an zB. folgender Zeile sehen kann,
Code: Select all
import XMonadContrib.DynamicLog
Code: Select all
defaultGaps = [(15,0,0,0)] -- 15 for default dzen
Da dzen in Portage nicht allzu aktuell ist, habe ich mich entschieden, die subversion-Variante zu nutzen (hier beispielsweise in /opt):
Code: Select all
emerge subversion
cd /opt
svn checkout http://dzen.googlecode.com/svn/trunk/ dzen
cd dzen
nano confik.mk
make clean install
Um die Ausgaben von xmonad und dzen zu verbinden, kann man folgendes Skript (~/dzen_xmonad.sh) nutzen:
Code: Select all
#!/bin/sh
FG='white'
BG='steelblue'
FONT='-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*'
# create a pipe for xmonad to talk to
PIPE=$HOME/.xmonad-status
rm -f $PIPE
/usr/bin/mkfifo -m 600 $PIPE
[ -p $PIPE ] || exit
/usr/local/bin/dzen2 -e '' -ta l -fg $FG -bg $BG -fn $FONT < $PIPE &
xmonad-darcs > $PIPE &
wait $!
pkill -HUP dzen2
wait
Code: Select all
exec ~/dzen_xmonad.sh
Das Ergebnis
Der Ressourcenverbrauch ist zwar hoeher:
Code: Select all
dwm:
----
PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15 0 2636 1196 1008 S 0.0 0.2 0:00.02 dwm
xmonad + dzen:
--------------
PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21 0 2704 1084 928 S 0.0 0.2 0:00.00 dzen_xmonad.sh
15 0 2548 1004 844 S 0.0 0.2 0:00.00 dzen2
18 0 5428 2528 1700 S 0.0 0.5 0:00.01 xmonad-darcs
Viel Spass beim Spielen.
[edit]Ganz vergessen, so sieht's aus: http://img527.imageshack.us/img527/6232/xmonadhh8.jpg[/edit]
[01] http://xmonad.org/
[02] http://modeemi.fi/~tuomov/ion/
[03] http://www.suckless.org/wiki/wmii
[04] http://www.suckless.org/wiki/dwm
[05] http://www.lab1702.net/fnurt/larswm/
[06] http://www.nongnu.org/stumpwm/
[07] http://darcs.net/
[08] http://projects.gunnarwrobel.de/scripts/wiki/layman
[09] http://www.haskell.org/~gentoo/gentoo-haskell/
[10] http://gotmor.googlepages.com/dzen
[11] http://xmonad.org/contrib.html
[12] http://www.suckless.org/wiki/tools/xlib

