xmonad
xmonad
Haskellで書かれたタイル型WM。設定ファイルもHaskell。
インストール
aptでxmonadをインストールしてやりましょう。ついでにdmenu(インストールするのはdwm-tools)とxmobarもインストールしておけば後で幸せになれるかも。
設定
なにはともあれ、無変換キーが存在しているキーボードならば、それをmod3(xmodmapを使いましょう)に割り当てておく。私のxmodmapはこんな感じ。
clear mod3 add mod3 = Muhenkan
$HOME/.xmonad/xmonad.hsへ設定を記述。設定例は/usr/share/doc/libghc6-xmonad-doc/examples/xmonad.hs.gz(Debian/Ubuntuの場合)を見ましょう。私のxmonad.hsは以下のとおり。 xmonad 0.9.1の時。ただし、
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import System.IO
-- Layout
import XMonad.Layout.Spiral
import XMonad.Layout.DragPane
myTerminal = "urxvt"
myManageHook = composeAll
[ className =? "Wmmixer" --> doShift "3:音楽"
, className =? "Audacious" --> doShift "3:音楽"
, className =? "Firefox" --> doShift "2:web"
, className =? "Smplayer" --> doShift "4"
, className =? "stalonetray" --> doIgnore
, className =? "Gimp" --> doFloat
, className =? "Skype.real" --> doFloat
, title =? "VLC メディアプレイヤー" --> doFloat
, title =? "MPlayer" --> doFloat
, title =? "MPlayer - Video" --> doFloat
]
myWorkspaces = ["1:ターミナル","2:web","3:音楽"] ++ map show [4..9]
myLayout = avoidStruts $ spiral (6/7) ||| dragPane Horizontal 0.1 0.5 ||| Full
mylogHook h = dynamicLogWithPP defaultPP {
ppTitle = shorten 80
, ppLayout = (>> "")
, ppOutput = hPutStrLn h
}
main = do
xmproc <- spawnPipe "xmobar $HOME/.xmobarrc"
xmonad $ defaultConfig {
terminal = myTerminal
, manageHook = myManageHook
, workspaces = myWorkspaces
, layoutHook = myLayout
, logHook = mylogHook xmproc
}
ついでに.xsessionも弄って、xmonadが起動したときに他のソフトも起動させるようにする。以下私の例。
#!/bin/sh PATH=$HOME/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin:/usr/lib/:$HOME/.cabal/bin: #xrdb -merge $HOME/.Xresources xmodmap $HOME/.Xmodmap /opt/atokx3/sample/iiimf_status_hide # $ fc-list :lang=ja を参考にフォントを指定 #uxterm -fa 'xft:VL ゴシック' -fs 11 -e screen -R & #urxvt -e screen -R & urxvt -e byobu & # NicoCacheを起動 java -jar $HOME/Nico/NicoCache_nl.jar & # Dropboxdを起動 $HOME/.dropbox-dist/dropboxd & # 音量調節アプリを起動 gnome-volume-control-applet & # systrayを起動 stalonetray -i 1 --geometry 6x1-0+0 -bg white & #壁紙を設定 Esetroot -scale $HOME/Img/Air___Exo-1680x1050.jpg numlockx on & exec xmonad
xmonad.hsで呼び出してるxmobarの設定はほとんどデフォルトのまま。若干いじってますが。以下.xmobarrc
Config { font = "xft:IPA UIゴシック-9:bold"
, bgColor = "black"
, fgColor = "grey"
, position = Static { xpos = 0 , ypos = 0, width = 1590, height = 16 }
, lowerOnStart = True
, commands = [ Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
, Run Memory ["-t","Mem: <usedratio>%"] 10
, Run Swap [] 10
, Run Date "%Y/%m/%d %k:%M:%S" "LA_ALL=ja date" 10
, Run StdinReader
, Run Com "$HOME/bin/myuptime.rb" [] "myuptime" 60
]
, sepChar = "%"
, alignSep = "}{"
, template = "%StdinReader% }{ %cpu% | %memory% * %swap% | <fc=#ee8a00>%date%</fc>| Uptime: <fc=#ee9a00>%myuptime%</fc>"
}
myuptime.rbはuptimeを加工して表示させてます。ちょっと問題があるので公開は勘弁してください。
操作方法
以下の表は本家のチートシートとmono-hateの週記さんを参考にしながら作成。
用語説明
- マスターエリア
- 一番見やすい場所。大抵は左だったり上だったり。
- フォーカス
- 操作している場所(という表現でいいのだろうか)。デフォルトで赤線で囲ってあるところ。
- mod
- modキーのこと。デフォルトはleft altな模様。
xmonad自体の操作
| コマンド | 動作 |
| mod + q | xmonadの再起動 |
| mod + shift + q | xmonadの終了 |
プログラムの起動と終了
| コマンド | 動作 |
| mod + p | dmenuの起動 |
| mod + shift + p | gmrunの起動 |
| mod + shift + c | フォーカスウインドウにあるプログラムの終了 |
| mod + Enter | Terminalの起動 |
workspaces
| コマンド | 動作 |
| mod + 数字 | 対応するワークスペースへ移動 |
| mod + shift + 数字 | 現在操作しているウインドウを対応するワークスペースへ移動させる |
layouts
| コマンド | 動作 |
| mod + t | Tile floating window(よく分からないので原文ママ) |
| mod + space | 次のレイアウトへ |
| mod + shift + speace | デフォルトのレイアウトへ |
- mod + t
- Alt(Mod)キー?を押しながらマウスでドラッグすると、そのエリアにあったソフトがタイルで管理されなくなるものを、再度タイルとして扱う機能でした。訳し方に困ったのでとりあえずそのままですが。
master area
| コマンド | 動作 |
| mod + h | マスターエリアを縮める |
| mod + l | マスターエリアを広げる |
| mod + m | フォーカスをマスターエリアへ |
| mod + , | 画面の分割具合を変更? |
| mod + . | 上に同じ? |
| mod + Enter | 現在操作しているウインドウをマスターエリアへ移動 |
windows
| mod + tab | フォーカスを次のウインドウへ |
| mod + shift + tab | フォーカスを前のウインドウへ |
| mod + j | フォーカスを次のウインドウへ |
| mod + shift + j | 次のウインドウと位置を交換 |
| mod + k | フォーカスを前のウインドウへ |
| mod + shift + k | 前のウインドウと位置を交換 |
尚、チートシートにあるXineramaの項目に関してはマルチディスプレイ環境じゃないのでよく分からないので省略してます。
Document
HaskellWikiのxmonadに関するDocumentを邦訳したもの(かなりいい加減な上に、もう内容が古い。また、時間がある時頑張って翻訳しよう)。
TrackBack URL: http://b-island.s60.xrea.com/hiki/hiki.cgi/tb/xmonad
Keyword(s):
References:[FrontPage]