2010年7月26日
タイル型ウィンドウマネージャ stumpwm 導入
stumpwmとは、タイル型ウィンドウマネージャの一種。
ratpoisonの後継でcommon lispで実装されています。
Cで書かれたratpoisonより若干重くはなりますが、拡張性に優れており、設定ファイルもcommon lispでかけるのでいろいろと便利。
ついこの間ratpoisonからstumpwmへ乗り換えたので、導入について書いてみたいと思います。
1・乗り換えた理由
ratpoisonでもほとんど満足でしたか、一つ不満点がありました。
xrandrで解像度を変更するときに、ratpoisonを再起動しないと解像度が反映されないのが非常に面倒なことです。
再起動するとグループも再構成されてしまい、ウィンドウを再配置する必要があります。
(さらに自分の環境が悪いのかもしれませんが、既存のウィンドウを他のグループに移動しようとするとウィンドウが消えると言う妙な事柄になります)
最近割と頻繁にディスプレイを変えることがあり面倒なので、その辺に対応しているstumpwmをインストールしてみました。
2・インストール
$ sudo apt-get install stumpwm
以上。
common lispだとかいろいろ入ります。
3・設定
設定ファイルは ~/.stumpwmrc にcommon lispで記述します。
;; -*- lisp -*-
(in-package :stumpwm)
(setf *shell-program* "/bin/zsh")
;; 色
(set-fg-color "#000000")
(set-bg-color "#FFFFFF")
(set-border-color "#000000")
;; フォーカスがあるウィンドウの色
;; デフォルトは白ですが、何か自己主張が激しい(?)ので暗い赤に
(set-focus-color "#883333")
;; フォーカスが無いのは暗い青に
(set-unfocus-color "#333388")
;; フォント
(set-font "-xos4-terminus-bold-r-normal--14-140-72-72-c-0-iso8859-7")
;; あらかじめグループを作成しておく
(run-commands "gnewbg 1")
(run-commands "gnewbg 2")
(run-commands "gnewbg 3")
(run-commands "gnewbg 4")
(run-commands "gnewbg 5")
(run-commands "gnewbg 6")
(run-commands "gnewbg 7")
(run-commands "gnewbg 8")
(run-commands "gnewbg 9")
(run-commands "gnewbg 10")
;; 1番を選択
(run-commands "gselect 1")
;; 以下、独自コマンド
; urxvt起動
(defcommand urxvt () () (run-shell-command "urxvt"))
; 音楽プレーヤのコントロール
; audio_ctlはシェルスクリプトで、
; playが渡されたら rhythmbox-client --play 実行するように書いている
(defcommand mprev () () (run-shell-command "audio_ctl prev"))
(defcommand mplay () () (run-shell-command "audio_ctl play"))
(defcommand mpause () () (run-shell-command "audio_ctl pause"))
(defcommand mstop () () (run-shell-command "audio_ctl stop"))
(defcommand mnext () () (run-shell-command "audio_ctl next"))
(defcommand mshuffle () () (run-shell-command "audio_ctl shuffle"))
(defcommand mrepeat () () (run-shell-command "audio_ctl repeat"))
(defcommand volup () () (run-shell-command "audio_ctl volup"))
(defcommand voldown () () (run-shell-command "audio_ctl voldown"))
(defcommand mnotify () () (run-shell-command "audio_ctl notify"))
; music
(define-key *root-map* (kbd "M-z") "mprev")
(define-key *root-map* (kbd "M-x") "mplay")
(define-key *root-map* (kbd "M-c") "mpause")
(define-key *root-map* (kbd "M-v") "mstop")
(define-key *root-map* (kbd "M-b") "mnext")
(define-key *root-map* (kbd "M-s") "mshuffle")
(define-key *root-map* (kbd "M-r") "mrepeat")
(define-key *root-map* (kbd "C-0") "volup")
(define-key *root-map* (kbd "C-9") "voldown")
(define-key *root-map* (kbd "x") "mnotify")
; term
(define-key *root-map* (kbd "C-c") "urxvt")
(define-key *root-map* (kbd "c") "urxvt")
; colon
; stumpwmのデフォルトはセミコロンなため、コロンに変更して置く
(define-key *root-map* (kbd "C-:") "colon")
(define-key *root-map* (kbd ":") "colon")
;; group
;; M-Fxで切り替え *top-map* とすることでシングルストロークで実行出来る
(define-key *top-map* (kbd "M-F1") "gselect 1")
(define-key *top-map* (kbd "M-F2") "gselect 2")
(define-key *top-map* (kbd "M-F3") "gselect 3")
(define-key *top-map* (kbd "M-F4") "gselect 4")
(define-key *top-map* (kbd "M-F5") "gselect 5")
(define-key *top-map* (kbd "M-F6") "gselect 6")
(define-key *top-map* (kbd "M-F7") "gselect 7")
(define-key *top-map* (kbd "M-F8") "gselect 8")
(define-key *top-map* (kbd "M-F9") "gselect 9")
(define-key *top-map* (kbd "M-F10") "gselect 10")
(define-key *root-map* (kbd ",") "gmove")
;;