Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Deutsche Dokumentation
  • Search

[Fensterverwaltung] xmonad installieren

Dokumentation, Tipps und Tricks.
Post Reply
  • Print view
Advanced search
2 posts • Page 1 of 1
Author
Message
Knieper
l33t
l33t
Posts: 846
Joined: Thu Nov 10, 2005 12:14 pm

[Fensterverwaltung] xmonad installieren

  • Quote

Post by Knieper » Fri Aug 03, 2007 4:21 pm

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: Select all

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

Code: Select all

emerge layman
layman -a haskell
Nach dem Hinzufuegen folgender Zeilen zur /etc/make.conf:

Code: Select all

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: Select all

x11-wm/xmonad-darcs savedconfig extensions
dev-lang/ghc binary
und die noetigen keywords in der /etc/portage/package.keywords setzen:

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
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: Select all

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: 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
Ein moeglicher Diff zur Originaldatei koennte wie folgt aussehen:

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)]]
Jetzt noch kompilieren:

Code: Select all

emerge xmonad-darcs
dzen [10] installieren
Wie man oben an zB. folgender Zeile sehen kann,

Code: Select all

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: Select all

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: Select all

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: 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
und in der ~/.xinitrc aufrufen:

Code: Select all

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: 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
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
Top
wudmx
Guru
Guru
Posts: 527
Joined: Wed Aug 07, 2002 10:12 am

  • Quote

Post by wudmx » Thu Oct 04, 2007 11:25 am

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: Select all

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: Select all

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: Select all

x11-wm/xmonad extensions savedconfig
/etc/portage/package.keywords

Code: Select all

=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!
Top
Post Reply
  • Print view

2 posts • Page 1 of 1

Return to “Deutsche Dokumentation”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic