Xmonadを使ってみた

参考サイト

基本的に下の2つに書かれている内容だけで、使えるようになった。

HTTPS://WIKI.ARCHLINUXJP.ORG/INDEX.PHP/XMONAD:TITLE=ARCH LINUX JAPAN
Archlinuxを使う気は全くないが、情報がまとまっているのが非常に助かる。
タイル型ウィンドウマネージャという新たな世界観に衝撃を受けた!XmonadをつかってワクワクCUI生活 | Futurismo
必要最小限の情報がまとまっていて、取っ掛かりとして助かった。

Xmonad起動

mod(Altキー)-shift-returnでターミナルが起動だけをたよりに、ログインした。壁紙も何も表示されないので、いつ起動したのかよくわからない。頃合いを見計らって、キー入力してターミナルを起動した。

Emacsのキーと衝突する

AltキーはEmacsと衝突するので絶対に使えない。Windowsキーを使う例もあったけど、自分のキーボードにWindowsキーはないからダメだった。参考サイトをベースに、無変換キーを使うことにした。Xmodmapを使うのは15年ぶりぐらいで、完全に忘れていた。

$ xmodmap
xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Eisu_toggle (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

となっていたので、無変換キーと変換キーにSuper_LとSuper_Rを割り当てることにした。xevでkeycodeをしらべて、~/.Xmodmapに以下を記述した。

keycode 100 = Super_R
keycode 102 = Super_L

xmonad.hsに以下を記述した。

import XMonad

main = do
	xmonad $ defaultConfig
		{modMask     = mod4Mask
		}

この時点では、マシンを起動するたびにターミナルを起動して

xmodmap ~/.Xmodmap

を行っていた。なので、上の変更を行ったあと、次のログインでターミナルが起動できなくなり、別マシンからsshでログインしてXmonadを終了させた。多分よくある話だと思う。

xmonad起動前にxmodmapを実行する

.xsessionからxmonadを起動していたわけでない*1ので、今の仕組みを調べてみた。/usr/share/xsessions/以下が起動設定みたいだったので、そこから辿って/usr/bin/xmonad-sessionを見ると

#!/bin/bash

if [ -r ".xmonad/xmonad-session-rc" ]
then
  . .xmonad/xmonad-session-rc
fi

exec xmonad "$@"

となっていたので、.xmonad/xmonad-session-rcに

xmodmap ~/.Xmodmap

とだけ書いた。

JAVAのUIアプリの表示がおかしくなる

Debianを使う目的が、JAVAGUIアプリを必要としている。で、確かめてみたら表示がおかしい。参考サイトにあった対策を試したら、それで問題はなくなった。

xmonad.hsに以下を記述した。

import XMonad
import XMonad.Hooks.SetWMName

main = do
	xmonad $ defaultConfig
		{modMask     = mod4Mask
		,startupHook = setWMName "LG3D"
		}

dmenuの導入

参考サイトにあったdmenuを導入した。Windwosだとcraftlaunchを使っているので、気に入った。

XMobarは導入しない

参考サイトにあったxmobarを試してみたが、邪魔だったのですぐに外した。

urxvtの導入

参考サイトにあった、urxvtを導入した。ターミナルに強いこだわりはないので、これにした。

スクリーンショット

これでWindow Manager周りの設定は完了した。普段は大体この感じで作業している。EmacsFirefoxでmaster windowを入れ替えたり、もうひとつターミナルを起動するぐらい。


20151013_screenshot

*1:昔の知識をベースに今どきの自動化された設定に抵抗してもいいことは何もない。