Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Fensterverwaltung] xmonad installieren
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation
View previous topic :: View next topic  
Author Message
Knieper
l33t
l33t


Joined: 10 Nov 2005
Posts: 846

PostPosted: Fri Aug 03, 2007 4:21 pm    Post subject: [Fensterverwaltung] xmonad installieren Reply with quote

Da sich bei xmonad [1] in letzter Zeit einiges getan hat, habe ich mich als dwm-Nutzer entschieden, doch mal ueber den Tellerrand zu schauen. xmonad reiht sich in die Reihe der kachelnden Fensterverwalter :wink: (tiling window manager, zB. ion [2], wmii [3], dwm [4], larswm [5], stumpw [6]) ein und gehoert somit zur Klasse derer, die den Namen auch verdient haben. Anders, als zB. die Standardvertreter der Bloatdesktops (Gnome, KDE, XFCE) oder zB. Fluxbox, werden Fenster automatisch nach bestimmten Vorlieben angeordnet und der Nutzer muss nicht unnoetigerweise mit der Maus durch die Gegend schubsen.

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:

emerge darcs


benötigt man auch noch layman [8], um auf das Haskell-Overlay [9] zugreifen zu koennen:
Code:

emerge layman
layman -a haskell


Nach dem Hinzufuegen folgender Zeilen zur /etc/make.conf:
Code:

PORTDIR_OVERLAY="/usr/portage/local/layman/haskell"
source /usr/portage/local/layman/make.conf


hat man das Overlay auch schon konfiguriert und kann die noetigen use-Flags in der /etc/portage/package.use:
Code:

x11-wm/xmonad-darcs savedconfig extensions
dev-lang/ghc binary


und die noetigen keywords in der /etc/portage/package.keywords setzen:
Code:

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


Das binary-use-flag bei ghc verhindert das elende Kompilieren und "elend" trifft's beim ghc wirklich. "extensions" sorgt dafuer, dass man auch mit den optionalen Erweiterungen [11] spielen kann.

Da wir oben das use-Flag savedconfig gewaehlt haben, bricht die Installation von xmonad-darcs:
Code:

emerge xmonad-darcs
env-update && source /etc/profile

wahrscheinlich ab. Allerdings liegen jetzt die Quelltexte auf dem Rechner und man kann die individuelle Konfiguration durchfuehren. Ob man die "Konfigurationsdatei" von der Netzseite holt, aus dem darcs-Verzeichnis oder aus dem tmp-Verzeichnis ist dabei egal:
Code:

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


Ein moeglicher Diff zur Originaldatei koennte wie folgt aussehen:
Code:

/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)]]


Jetzt noch kompilieren:
Code:

emerge xmonad-darcs


dzen [10] installieren
Wie man oben an zB. folgender Zeile sehen kann,
Code:

import XMonadContrib.DynamicLog

nutze ich hier die logHooks mit dem dynamischen Logger, der einfache (oder auch komplexe) Statusmeldungen ausgibt. Damit die auch angezeigt werden, habe ich am oberen Rand etwas Platz gelassen:
Code:

defaultGaps = [(15,0,0,0)] -- 15 for default dzen

und werde dort dzen einblenden, das die Nachrichten dann ausgibt.

Da dzen in Portage nicht allzu aktuell ist, habe ich mich entschieden, die subversion-Variante zu nutzen (hier beispielsweise in /opt):
Code:

emerge subversion
cd /opt
svn checkout http://dzen.googlecode.com/svn/trunk/ dzen
cd dzen
nano confik.mk
make clean install


Starten von dzen und xmonad
Um die Ausgaben von xmonad und dzen zu verbinden, kann man folgendes Skript (~/dzen_xmonad.sh) nutzen:
Code:

#!/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


und in der ~/.xinitrc aufrufen:
Code:

exec ~/dzen_xmonad.sh


Als Alternative koennte man zB. auch dmenu [12] nutzen oder es einfach weglassen.

Das Ergebnis
Der Ressourcenverbrauch ist zwar hoeher:
Code:

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

aber immer noch im akzeptablen Bereich. Die Bedienung ist nicht viel anders als bei dwm, unterscheidet sich aber zB. bei Fokuswechseln oder beim Austausch von Fenstern. Leider funktionierte die Maus nicht optimal. Schaltflaechen musste man zT. zweimal anklicken oder falsche Mauszeiger wurden angezeigt. Vielversprechend sind die vorhanden Moeglichkeiten, zB. den Kachelalgorithmus zu aendern, die Statuszeile beliebig anzupassen oder verschiedene Kachelmechanismen auf versch. Arbeitsoberflaechen zu nutzen.

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
Back to top
View user's profile Send private message
wudmx
Guru
Guru


Joined: 07 Aug 2002
Posts: 527

PostPosted: Thu Oct 04, 2007 11:25 am    Post subject: Reply with quote

Hi Knieper,

sehr schöne Anleitung. Habe auch vor kurzem xmonad installiert, allerdings nicht die darcs-Version, sondern xmonad-0.3, welches im September erschienen ist und auch im Haskell Overlay drin ist.

Hier noch ein paar Anmerkungen meinerseits, die ich bei meiner Installation anders gemacht:

Anstatt als ersten Schritt darcs über Portage zu installieren, habe ich mir ein vorkompiliertes Binary gezogen und dieses genutzt, bis ghc später über Portage dann installiert worden ist. Vorteil: das langwierige emerge darcs kann man sich sparen, zumal da ein altes ghc (6.4.2 oder so) installiert wird...

Code:
wget http://www.pps.jussieu.fr/~jch/software/files/darcs-1.0.7-i386-linux.gz
gunzip darcs-1.0.7-i386-linux.gz
mv darcs-1.0.7-i386-linux /usr/bin/darcs
chmod +x /usr/bin/darcs


Nachdem man den Haskell Overlay hinzugefügt hat, sollte man das darcs Binary wieder löschen:

Code:
rm /usr/bin/darcs


Wie gesagt, anstatt die unstable darcs Version habe ich xmonad-0.3 installiert. Hier meine Gentoo-spezifischen Dateien:

/etc/portage/package.use
Code:
x11-wm/xmonad extensions savedconfig


/etc/portage/package.keywords
Code:
=dev-lang/ghc-6.6.1
dev-haskell/mtl
dev-haskell/regex-base
dev-haskell/regex-compat
dev-haskell/regex-posix
=dev-haskell/cabal-1.1.6.2
dev-haskell/filepath
dev-util/darcs
dev-haskell/quickcheck
dev-haskell/html
net-im/centerim
x11-wm/xmonad
dev-haskell/x11
dev-haskell/x11-extras
x11-misc/dzen
x11-misc/xmobar


Es gibt mittlerweile ghc-6.8.0.20070921 im Overlay, man hat mir aber geraten ghc-6.6.1 zu nutzen, deshalb =dev-lang/ghc-6.6.1 .

Ansonsten bleibt noch zu sagen, dass ich wohl xmonad so installieren werde, wie es auf der xmonad Homepage beschrieben ist: ich finde es persönlich komisch und nicht gerade nützlich, wenn die Konfigurationseinstellungen in /etc/portage/savedconfig/... liegen. Die Konfigurationsdateien sollten im Home-Verzeichnis eines jeden Users liegen.

Gruß
wudmx

P.S.: @moderator: wäre schön, wenn man Kniepers HowTo in den sticky Thread eintragen würde!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum