ログイン
編集不可のページディスカッション情報添付ファイル

2010-12-26 18:19:02時点のリビジョン5

メッセージを消す
clear/dwm

MMA

なにこれ

dwm (dynamic window manager)
ウィンドウマネージャです。

http://dwm.suckless.org/

利点

欠点

導入

上記のURLにアクセスしてソースコードを持ってくる。下の方の"Download"のところ
デフォルトの設定のまま使うなら、展開してできるディレクトリ内に入ってmakeし、できた実行ファイルを適当な場所に配置するだけ。とりあえず起動してみて雰囲気を掴むといいかもしれない。
manはこちら
グラフィカルログイン時にdwmを起動するには、.xinitrcや.xsessionの最後に"exec dwm"とでも書いておけば良い

画面上の要素

バー

上にあるやつ。

タグ

仮想デスクトップ「のようなもの」。
何が「のようなもの」なのかというと、このタグは「個々のウィンドウに対して」設定されるもの。「このウィンドウは1番と3番」のようにタグ番号を設定しておいて、操作に応じて「n番が設定されているウィンドウを表示」しているに過ぎない。

操作

dwmに対する操作は"修飾キー + 別のキー"という形で行う。修飾キーは初期設定ではMod1。Mod1がどのキーかは、xmodmapをオプションなしで実行すればわかる(AltとかMetaのはず)。
初期設定でのキーバインドは以下のとおり。

Mod1-Shift-Enter

端末(初期設定ではxterm)を開く

Mod1-Shift-c

フォーカスのあたっているウィンドウを閉じる

Mod1-Shift-q

ウィンドウマネージャの終了

Mod1-[1...n]

n番のタグが設定されているウィンドウを表示

Mod1-0

すべてのウィンドウを表示

Mod1-Shift-[1...n]

フォーカスのあたっているウィンドウにn番のタグを設定(他のタグの設定は消去される)

Mod1-Shift-Control-[1...n]

フォーカスのあたっているウィンドウにn番のタグを追加/削除(他のタグの設定は残る)

Mod1-Shift-0

フォーカスのあたっているウィンドウにすべてのタグを設定(タグを切り替えても常に表示されるようになる)

Mod1-b

バーの表示/非表示の切り替え

Mod1-Shift-space

フォーカスのあたっているウィンドウの状態をタイル/フローティングで切り替える

Mod1-左クリック

ドラッグしてウィンドウを移動(ウィンドウはフローティング状態へ)

Mod1-右クリック

ドラッグしてウィンドウサイズを変更(同上)

Mod1-中クリック

Mod1-Shift-spaceに同じ

And more

manを参照のこと

ウィンドウ配置

素のdwmは3つのウィンドウ配置モードをサポートしている。
各モードごとの解説はComing soon。

タイル

フローティング

最大化

設定

基本

dwmの設定はconfig.hの各項目を編集することで行う。設定が完了したらmakeして、できたdwmをそれまでのものと置き換えるだけ。config.hは設定専用に作られており、かつwell-commentedなので迷うことは少ない。だいたい分かる。

修飾キーの変更

初期状態では修飾キーがMod1、すなわちAltキーに割り当てられている。"Alt + 何か"のキーバインドを持つアプリケーションを実行すると入力を全部dwmに吸い込まれて非常に残念な気持ちになれるので、修飾キーを変更するのがおすすめ。たいていWindowsキー(や、それに相当するもの)が遊んでいるのでこいつに割り当ててしまう。
具体的な方法はComing soon。

フォントや色の設定

やはり見た目にはこだわりたい。
具体的な方法はComing soon。

個別ルールの設定

先に述べた通り、タイル型ウィンドウマネージャとの相性が悪いアプリケーションも存在する。ツールボックスウィンドウを大量に表示するものやスキンを使うメディアプレーヤー系統が当てはまる。そういったものは常にフローティングで表示するように設定しておくと幸せになれる。
具体的な方法はComing soon。

今使っている.xsession(のdwmに関わる部分)

# 1分間隔で時刻を表示しつつdwmの生存確認。dwmが居なくなったら終了
while true; do
    xsetroot -name "|$(date +"%m/%d %H:%M")|"
    pgrep -afU $(id -u) dwm
    if [ $? -eq 1 ]; then
        exit 0
    else
        sleep 60
    fi
done & # <- バックグラウンドで走らせる
exec dwm