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

MMA
2と3のリビジョン間の差分
2010-12-14 18:13:14時点のリビジョン2
サイズ: 4441
編集者: clear
コメント:
2010-12-15 02:29:14時点のリビジョン3
サイズ: 7999
編集者: clear
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 3: 行 3:
ウィンドウマネージャです。<<BR>> ウィンドウマネージャです。
行 20: 行 20:
   * OKボタン一つだけのメッセージボックスが画面の半分を占める状況を想像してみよう
行 21: 行 22:
   * gimpとか悲惨だった。小さなウィンドウをたくさん出すものは大変なことになる。スキンを使うメディアプレーヤー系も同様    * 特にgimp悲惨だった。小さなウィンドウをたくさん出すものは大変なことになる。スキンを使うメディアプレーヤー系も同様
行 32: 行 33:
  * 仮にもそのキーが使えない(そもそもキーボード上に存在しないとか…)ようなことがあれば非常に残念なことになる(私です)   * 仮にもそのキーが使えない(そもそもキーボード上に存在しないとか…)ようなことがあれば非常に残念なことになる(なった)
行 37: 行 38:
デフォルトの設定使うなら、展開してできるディレクトリ内に入ってmakeするだけ。初めはデフォルトの設定で使って雰囲気を掴むといいかもしれない。<<BR>> デフォルトの設定のまま使うなら、展開してできるディレクトリ内に入ってmakeし、できた実行ファイルを適当な場所に配置するだけ。とりあえず起動してみて雰囲気を掴むといいかもしれない。<<BR>>
行 39: 行 40:
dwmを使うには、.xinitrcや.xsessionの最後に"exec dwm"とでも書いておけば良い グラフィカルログイン時にdwmを起動するには、.xinitrcや.xsessionの最後に"exec dwm"とでも書いておけば良い
行 41: 行 42:
== 画面にあるもの == == 画面要素 ==
行 45: 行 46:
 * 右端に表示されているのはXのルートウィンドウのタイトル(WM_NAME)。  * 右端に表示されているのはXのルートウィンドウのタイトル(WM_NAME)。何もしなければdwmのバージョンが設定されたはず
行 47: 行 48:
   * 設定は xsetroot -name hogehoge で    * 設定は xsetroot -name hogehoge で。コマンドを組み合わせてお好みの文字列を作る
行 51: 行 52:
Coming soon 何が「のようなもの」なのかというと、このタグは「個々のウィンドウに対して」設定される。タグに対してウィンドウが存在するのではなく、「何番のタグにこのウィンドウを表示するのか」という情報に過ぎない。1つのウィンドウに対して複数設定可能なので、あるウィンドウに対してすべてのタグを設定する(i.e. 常に表示される)ことができる。
行 54: 行 55:
初期状態では、dwmに対する操作は"Mod1キー + 何かのキー"という形で行う。Mod1がどのキーかはxmodmapをオプションなしで実行すればわかる(AltとかMetaのはず)。これは変更可能。<<BR>>
以下はすべて初期状態でのキーバインドは以下のとおり。(良く使うもの)
dwmに対する操作は"修飾キー + のキー"という形で行う。修飾キーは初期設定ではMod1。Mod1がどのキーかはxmodmapをオプションなしで実行すればわかる(AltとかMetaのはず)。<<BR>>
初期設定でのキーバインドは以下のとおり。
行 57: 行 58:
||Mod1-Shift-c||フォーカスのあたっているウィンドウを閉じる||
行 58: 行 60:
||And more|| ||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つのウィンドウ配置モードをサポートしている。<<BR>>
各モードごとの解説はComing soon。

=== タイル ===
=== フローティング ===
=== 最大化 ===
行 61: 行 81:
Coming soon === 基本 ===
dwmの設定はconfig.hの各項目を編集することで行う。設定が完了したらmakeして、できたdwmをそれまでのものと置き換えるだけ。config.hは設定専用に作られており、かつwell-commentedなので迷うことは少ない。だいたい分かる。
行 63: 行 84:
== 今使っている.xsession(のdwmに関わる部分) == === 修飾キーの変更 ===
初期状態では修飾キーがMod1、すなわちAltキーに割り当てられている。"Alt + 何か"のキーバインドを持つアプリケーションを実行すると入力を全部dwmに吸い込まれて非常に残念な気持ちになれるので、修飾キーを変更するのがおすすめ。たいていWindowsキー(や、それに相当するもの)が遊んでいるのでこいつに割り当ててしまう。<<BR>>
具体的な方法はComing soon。

=== フォントや色の設定 ===
やはり見た目にはこだわりたい。<<BR>>
具体的な方法はComing soon。

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

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

なにこれ

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

http://dwm.suckless.org/

利点

  • タイル型である
    • 敷き詰めるようにウィンドウを配置してくれるので、ウィンドウ配置に悩まなくてよい。画面を最大限に活用できる
  • シンプルで軽い
    • ソースコードは単一のファイルで2000行ほど、それに設定を記したヘッダファイルが一つ
    • minimalistにはおすすめ
  • 設定がヘッダファイル
    • 使い方が良く分からないGUIのインターフェースとかそんなものはない
  • 仮想デスクトップ「のようなもの」が使える

欠点

  • タイル型である
    • 小さなダイアログや設定ウィンドウがタイル化された結果残念な気持ちになることがある
      • OKボタン一つだけのメッセージボックスが画面の半分を占める状況を想像してみよう
    • そもそもタイル型が適していない(ほとんど使い物にならない)アプリケーションもある
      • 特にgimpが悲惨だった。小さなウィンドウをたくさん出すものは大変なことになる。スキンを使うメディアプレーヤー系も同様
        • フローティング(いわゆる普通のウィンドウマネージャと同じ)モードにもできるのでそちらを使う
        • 特定のものに対して特別扱いする設定を書けるので、それを活用して常にフローティングで表示するようにすると若干幸せ
  • 設定がヘッダファイル
    • ちょっと設定を変えたくなったらmakeする作業が待っている
      • 特に色周りに凝り出すと非常に面倒
      • ウィンドウごとに特別扱いしたくなったときもmake。新しいGUIアプリを導入するたびにちゃんと使えるか確認する必要がある
    • 名前はdynamicだが設定は非常にstatic
  • ウィンドウマネージャの操作が特定のキーに集中している(初期状態ではMod1、AltとかMeta)
    • 利点と取るか欠点と取るか
    • 「特定のキー」は変えられるが、一つに依存する面は避けられない
    • 仮にもそのキーが使えない(そもそもキーボード上に存在しないとか…)ようなことがあれば非常に残念なことになる(なった)
      • 具体的にはウィンドウマネージャの終了ができない。killするしかない

導入

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

画面上の要素

バー

上にあるやつ。

  • 左からタグの一覧(デフォルトでは1から9)、現在のウィンドウ配置モード、現在フォーカスがあるウィンドウのタイトルが表示されている
  • 右端に表示されているのはXのルートウィンドウのタイトル(WM_NAME)。何もしなければdwmのバージョンが設定されたはず
    • ここに時計とか、ノートPCならバッテリ残量とかを表示するといい
      • 設定は xsetroot -name hogehoge で。コマンドを組み合わせてお好みの文字列を作る

タグ

仮想デスクトップ「のようなもの」。
何が「のようなもの」なのかというと、このタグは「個々のウィンドウに対して」設定される。タグに対してウィンドウが存在するのではなく、「何番のタグにこのウィンドウを表示するのか」という情報に過ぎない。1つのウィンドウに対して複数設定可能なので、あるウィンドウに対してすべてのタグを設定する(i.e. 常に表示される)ことができる。

操作

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

clear/dwm (最終更新日時 2011-09-18 22:22:49 更新者 clear)