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

MMA
1と10のリビジョン間の差分 (その間の編集: 9回)
2010-12-13 18:39:45時点のリビジョン1
サイズ: 2463
編集者: clear
コメント:
2011-01-09 00:35:42時点のリビジョン10
サイズ: 8451
編集者: clear
コメント: ゆくゆくはちゃんとしたチュートリアルを書くかもしれない
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
<<TableOfContents>>
行 2: 行 4:
dwm (dynamic window manager)<<BR>>
ウィンドウマネージャです。<<BR>>
dwm (dynamic window manager) - 最小主義的なウィンドウマネージャ
行 7: 行 8:
== 利点 ==
 * タイル型である
  * 敷き詰めるようにウィンドウを配置してくれるので、ウィンドウ配置に悩まなくてよい。画面を最大限に活用できる
 * シンプルで軽い
== 特徴 ==
 * タイル型
  * 敷き詰めるようにウィンドウを配置してくれるので、画面を最大限に活用できる
   * 特に「何かを見ながら何かを書く」ときに強い
  * そもそもタイル型が適していない(ほとんど使い物にならない)アプリケーションもある
   * 小さなウィンドウをたくさん出すものは大変なことになる
    * 小さなダイアログや設定ウィンドウがタイル化された結果残念な気持ちになることがある
   * フローティング(いわゆる普通のウィンドウマネージャと同じ)モードにもできる
 * シンプル
行 15: 行 21:
  * ちょっと設定を変えたくなったらmakeする作業が待っている。特に色周りに凝り出すと非常に面倒
行 16: 行 23:
 * 比較的充実したキーボード操作
 
== 導入 ==
=== 基本的な方針 ===
設定がヘッダファイル(config.h)に記されているので、これを編集し、makeして自分用の実行ファイルを作ることとなる。各種パッケージ管理システムで検索すれば見つかるかと思われるが、自分の環境に合った設定を施さないと色々と不都合が生じる可能性が高いので、コンパイルして使うことを強く推奨。ただし、パッケージ管理システム上にあるものはOSに合わせた設定が施されている場合もあるようなので、雰囲気を掴むために使ってみる分には良いかもしれない。
行 17: 行 29:
== 欠点 ==
 * タイル型である
  * 小さなダイアログや設定ウィンドウがタイル化された結果残念な気持ちになることがある
  * そもそもタイル型が適していない(ほとんど使い物にならない)アプリケーションもある
   * gimpとか悲惨だった。小さなウィンドウをたくさん出すものは大変なことになる。スキンを使うメディアプレーヤー系も同様
    * フローティング(いわゆる普通のウィンドウマネージャと同じ)モードにもできるのでそちらを使う
    * 特定のものに対して特別扱いする設定を書けるので、それを活用して常にフローティングで表示するようにすると若干幸せ
 * 設定がヘッダファイル
  * ちょっと設定を変えたくなったらmakeする作業が待っている
   * 特に色周りに凝り出すと非常に面倒
   * ウィンドウごとに特別扱いしたくなったときもmake。新しいGUIアプリを導入するたびにちゃんと使えるか確認する必要がある
  * 名前はdynamicだが設定は非常にstatic
 * ウィンドウマネージャの操作が特定のキーに集中している(初期状態ではMod1、AltとかMeta)
  * 利点と取るか欠点と取るか
  * 「特定のキー」は変えられるが、一つに依存する面は避けられない
  * 仮にもそのキーが使えない(そもそもキーボード上に存在しないとか…)ようなことがあれば非常に残念なことになる(私です)
   * 具体的にはウィンドウマネージャの終了ができない。killするしかない
=== ソースコードの入手 - コンパイル - 実行 ===
上記のURLにアクセスして圧縮されたソースコードを持ってくる。下の方の"Download"のところ。展開するとディレクトリが一つできるので、その中に入ってmakeを実行するとdwmという実行ファイルができる。make installすることもできるが、あらかじめ用意しておいた適当な場所(~/binとか)に自分で配置して、そこにパスを通しておくのがおすすめ。あとは、.xinitrcや.xsessionでdwmを起動すれば良い。
行 35: 行 32:
== 導入 ==
under construction
 * 一番最初だけは設定に手を加えず起動してみることをおすすめする。操作は[[#操作|こちらを参照]]。
  * とりあえず、「Alt + Shift + Enterでxtermが起動」し、「Alt + Shift + qでdwmが終了する」これだけを覚えておけば大丈夫だ、問題ない。
 * manは[[http://man.suckless.org/dwm/1/dwm|こちら]]

=== 設定してみる ===
流れとしては「config.hを編集してmake、実行ファイルを置き換え -> 試す」の繰り返し。設定はconfig.hの各項目を編集することで行う。このファイルは見ればだいたい分かるように作られている。詳しくは[[#設定|こちら]]で。

== 予備知識 ==
用語など。

=== フォーカスについて ===
dwmでは、twmなどと同じくfocus-follows-mouse([[http://www.jp.freebsd.org/www.freebsd.org/doc/ja_JP.eucJP/books/handbook/x-understanding.html|ここ]]の5.2.3節を参照)でウィンドウのフォーカスが切り替わる。

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

=== タグ ===
仮想デスクトップ「のようなもの」。何が「のようなもの」なのかというと、このタグは「個々のウィンドウに対して」設定されるもの。「このウィンドウは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-j, Mod1-k||ウィンドウのフォーカスを移動||
||Mod1-h, Mod1-l||(タイル配置時)ウィンドウの幅を変更||
||Mod1-Enter||(タイル配置時)スタックのトップウィンドウを切り替え||
||Mod1-左クリック||ドラッグしてウィンドウを移動(ウィンドウはフローティング状態へ)||
||Mod1-右クリック||ドラッグしてウィンドウサイズを変更(同上)||
||Mod1-中クリック||Mod1-Shift-spaceに同じ||
||And more||manを参照のこと||

== ウィンドウ配置 ==
素のdwmは3つのウィンドウ配置モードをサポートしている。
 * 画面解像度が小さいときはタイル、大きくなったらフローティングを使うようにすると良いかもしれない

=== タイル ===

=== フローティング ===
=== 最大化 ===

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

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

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

=== 今使っている.xinitrc/.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/reading|こちら]]を参照

なにこれ

dwm (dynamic window manager) - 最小主義的なウィンドウマネージャ

http://dwm.suckless.org/

特徴

  • タイル型
    • 敷き詰めるようにウィンドウを配置してくれるので、画面を最大限に活用できる
      • 特に「何かを見ながら何かを書く」ときに強い
    • そもそもタイル型が適していない(ほとんど使い物にならない)アプリケーションもある
      • 小さなウィンドウをたくさん出すものは大変なことになる
        • 小さなダイアログや設定ウィンドウがタイル化された結果残念な気持ちになることがある
      • フローティング(いわゆる普通のウィンドウマネージャと同じ)モードにもできる
  • シンプル
    • ソースコードは単一のファイルで2000行ほど、それに設定を記したヘッダファイルが一つ
    • minimalistにはおすすめ
  • 設定がヘッダファイル
    • 使い方が良く分からないGUIのインターフェースとかそんなものはない
    • ちょっと設定を変えたくなったらmakeする作業が待っている。特に色周りに凝り出すと非常に面倒
  • 仮想デスクトップ「のようなもの」が使える
  • 比較的充実したキーボード操作

導入

基本的な方針

設定がヘッダファイル(config.h)に記されているので、これを編集し、makeして自分用の実行ファイルを作ることとなる。各種パッケージ管理システムで検索すれば見つかるかと思われるが、自分の環境に合った設定を施さないと色々と不都合が生じる可能性が高いので、コンパイルして使うことを強く推奨。ただし、パッケージ管理システム上にあるものはOSに合わせた設定が施されている場合もあるようなので、雰囲気を掴むために使ってみる分には良いかもしれない。

ソースコードの入手 - コンパイル - 実行

上記のURLにアクセスして圧縮されたソースコードを持ってくる。下の方の"Download"のところ。展開するとディレクトリが一つできるので、その中に入ってmakeを実行するとdwmという実行ファイルができる。make installすることもできるが、あらかじめ用意しておいた適当な場所(~/binとか)に自分で配置して、そこにパスを通しておくのがおすすめ。あとは、.xinitrcや.xsessionでdwmを起動すれば良い。

  • 一番最初だけは設定に手を加えず起動してみることをおすすめする。操作はこちらを参照

    • とりあえず、「Alt + Shift + Enterでxtermが起動」し、「Alt + Shift + qでdwmが終了する」これだけを覚えておけば大丈夫だ、問題ない。
  • manはこちら

設定してみる

流れとしては「config.hを編集してmake、実行ファイルを置き換え -> 試す」の繰り返し。設定はconfig.hの各項目を編集することで行う。このファイルは見ればだいたい分かるように作られている。詳しくはこちらで。

予備知識

用語など。

フォーカスについて

dwmでは、twmなどと同じくfocus-follows-mouse(ここの5.2.3節を参照)でウィンドウのフォーカスが切り替わる。

バー

上にあるやつ。

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

タグ

仮想デスクトップ「のようなもの」。何が「のようなもの」なのかというと、このタグは「個々のウィンドウに対して」設定されるもの。「このウィンドウは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-j, Mod1-k

ウィンドウのフォーカスを移動

Mod1-h, Mod1-l

(タイル配置時)ウィンドウの幅を変更

Mod1-Enter

(タイル配置時)スタックのトップウィンドウを切り替え

Mod1-左クリック

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

Mod1-右クリック

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

Mod1-中クリック

Mod1-Shift-spaceに同じ

And more

manを参照のこと

ウィンドウ配置

素のdwmは3つのウィンドウ配置モードをサポートしている。

  • 画面解像度が小さいときはタイル、大きくなったらフローティングを使うようにすると良いかもしれない

タイル

フローティング

最大化

設定

修飾キーの変更

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

フォントや色の設定

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

個別ルールの設定

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

今使っている.xinitrc/.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)