「Dwm」の版間の差分
(→ステータスバーの設定: 翻訳) |
(→ステータスバーの設定: 同期) |
||
(2人の利用者による、間の22版が非表示) | |||
4行目: | 4行目: | ||
[[de:Dwm]] |
[[de:Dwm]] |
||
[[en:Dwm]] |
[[en:Dwm]] |
||
− | [[ |
+ | [[pt:Dwm]] |
− | [[fr:DWM]] |
||
− | [[ru:Dwm]] |
||
[[zh-hans:Dwm]] |
[[zh-hans:Dwm]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|dmenu}} |
{{Related|dmenu}} |
||
− | {{Related| |
+ | {{Related|ウィンドウマネージャ}} |
{{Related articles end}} |
{{Related articles end}} |
||
− | [http://dwm.suckless.org/ dwm] は [[Xorg]] の動的ウィンドウマネージャです。タイル・スタック・フルスクリーンレイアウトでウィンドウを管理し、さらに[[#パッチ|パッチ]]を使うことで他のレイアウトも利用できます。レイアウトは動的に適用することができるため、アプリケーションを使用する環境と作業を最適化することが可能です。dwm はきわめて軽量かつ高速であり、C で書かれていてソースコードの行数を2000行以下から増やさないという設計目標を掲げています。[[xrandr]] や Xinerama による[[マルチディスプレイ]]もサポートしています。 |
+ | [http://dwm.suckless.org/ dwm] は [[Xorg]] の動的ウィンドウマネージャです。タイル・スタック・フルスクリーンレイアウトでウィンドウを管理し、さらに[[#パッチ|パッチ]]を使うことで他のレイアウトも利用できます。レイアウトは動的に適用することができるため、アプリケーションを使用する環境と作業を最適化することが可能です。dwm はきわめて軽量かつ高速であり、C で書かれていてソースコードの行数を2000行以下から増やさないという設計目標を掲げています。[[xrandr]] や Xinerama による [[マルチディスプレイ]] もサポートしています。 |
== インストール == |
== インストール == |
||
− | {{ |
+ | dwm は、パッケージ {{AUR|dwm}} または {{AUR|dwm-git}} でインストールできます。ビルドとインストールの '''前に'''、必要な [[Dwm#設定|設定]] の変更を行ってください。[[makepkg]] を参照してください。 |
+ | {{Tip|[https://git.suckless.org/dwm/file/README.html アップストリームの手順] に従うこともできますが、[[pacman]] がファイルを追跡せずにファイルをインストールします。}} |
||
− | {{AUR|dwm}} パッケージを[[インストール]]してください。もしくは [[ABS]] や {{AUR|dwm-git}} (開発版) パッケージを使って、必要に応じてソースを変更して dwm をソースからコンパイルしてください。[[Xorg]] 用の軽量・高速なダイナミックメニューである [[dmenu]] もインストールすると良いでしょう。 |
||
− | == |
+ | === 設定 === |
+ | dwm はコンパイル時にいくつかのソースファイル、特に {{ic|config.h}} を編集することで設定します。これらの設定に関する詳細な情報は、同梱され、コメントが付いています。{{ic|config.def.h}} と、dwm のウェブサイトの [https://dwm.suckless.org/customisation/ customisation section] を参照してください。 |
||
− | [[ディスプレイマネージャ]]のメニューから ''Dwm'' を選択してください。 |
||
+ | 公式サイトには、dwm に機能を追加するための [https://dwm.suckless.org/patches/ パッチ] が多数あります。これらのパッチは主に {{ic|dwm.c}} ファイルを変更するものですが、必要に応じて {{ic|config.h}} ファイルも変更されます。パッチの適用に関する情報は、[[パッケージにパッチを適用]] の記事を参照してください。 |
||
− | もしくは、{{Ic|startx}} や [[SLiM]] ログインマネージャで dwm を起動する場合、以下を {{ic|~/.xinitrc}} に追加します: |
||
− | exec dwm |
||
− | == |
+ | == 起動 == |
+ | 任意の[[ディスプレイマネージャ]]のメニューから ''Dwm'' を選択します。あるいは、[[startx]] で dwm を起動するには、{{ic|exec dwm}} を {{ic|~/.xinitrc}} に追加し、他のプログラムも同様に実行するように前置きします、例えば、以下のようにします。 |
||
− | [[#インストール]] でも触れたように、dwm の設定はコンパイル時にソースコード ({{ic|config.h}}, {{ic|config.mk}}, {{ic|dwm.c}}) を編集することで行います。 |
||
+ | redshift -O3500; xset r rate 300 50; exec dwm |
||
− | 変更を加えたら、PKGBUILD のチェックサムを更新してください。[[PKGBUILD#md5sums]] を参照。もしくは、{{ic|--skipinteg}} スイッチを付けて ''makepkg'' を実行することで整合性のチェックをスキップできます。 |
||
+ | == 使い方 == |
||
− | そして、dwm をコンパイル・インストールしてください: |
||
− | $ makepkg -fi |
||
+ | dwm の基本的な使い方については、[https://dwm.suckless.org/tutorial dwm チュートリアル] を参照してください。 |
||
− | 設定の変更が正しく行われていれば、上記のコマンドで dwm がコンパイルされ、パッケージがビルド・インストールされます。問題が発生した場合は、出力を確認してください。 |
||
+ | == ヒントとテクニック == |
||
− | 最後に、dwm を再起動することで変更が適用されます。 |
||
− | |||
− | {{Tip|簡単に再コンパイルできるように {{ic|.bashrc}} ファイルに {{ic|alias redwm<nowiki>=</nowiki>'cd ~/dwm; updpkgsums; makepkg -fi --noconfirm; killall dwm'}} と記述してエイリアスを作成しても良いでしょう。}} |
||
− | |||
− | === パッチ === |
||
− | |||
− | 公式ウェブサイトには dwm に機能を追加する多数の [http://dwm.suckless.org/patches/ パッチ] を記載しています。これらのパッチは主として {{ic|dwm.c}} ファイルに変更を加えますが {{ic|config.h}} ファイルを変更することもあります。パッチの適用については、[[ABS でパッチを適用]]を見て下さい。 |
||
− | |||
− | ==== ウィンドウタイリングパッチ ==== |
||
− | |||
− | デフォルトのタイリングモードでは縦に画面が分割されますが、[http://dwm.suckless.org/patches/bottom_stack Bottom Stack] パッチは横方向に画面を分割するタイリングモードを追加します。同じく、bstack horizontal はタイルを水平に分割します。[http://dwm.suckless.org/patches/gapless_grid gaplessgrid] パッチはウィンドウをグリッドのようにタイル化させることができます。 |
||
− | |||
− | dwm ではデフォルトで、全てのタグに選択したレイアウトが適用されます。タグにあわせて異なるレイアウトを使うようにするには [http://dwm.suckless.org/patches/pertag pertag] パッチを使って下さい。 |
||
− | |||
− | === config.h のカスタマイズ === |
||
− | |||
− | {{ic|config.h}} ファイルには dwm の基本的な設定が保存されています。ほとんどの設定は特に説明しなくてもわかるはずです。設定に関する詳しい情報は [http://dwm.suckless.org/customisation/ dwm のウェブサイト] を見て下さい。 |
||
− | |||
− | ==== カスタムキーバインド/ショートカットの追加 ==== |
||
− | |||
− | カスタムキーバインドを作成するには {{ic|config.h}} に2つエントリが必要です。1つは {{ic|/* commands */}} セクションの下に記述し、もう1つは {{ic|1=static Key keys[] = {}} セクションの下に記述します。 |
||
− | |||
− | static const char *''keybindname''[] = { "''command''", "''flags''", "''arguments''", NULL }; |
||
+ | === ステータスバーの設定 === |
||
− | {{ic|''keybindname''}} は何でもかまいません。{{ic|''command''}}, {{ic|''flags''}}, {{ic|''arguments''}} も何でもかまいませんが {{ic|""}} で囲む必要があります。 |
||
+ | ステータスバーのその他の例については、[https://dwm.suckless.org/status_monitor/] を参照してください。 |
||
− | 例: |
||
− | |||
− | {{ic|1={ MODKEY, XK_''key'', spawn, {.v = ''keybindname'' } <nowiki>}</nowiki>}} would bind {{ic|Mod+''key''}} to the command defined previously. |
||
− | |||
− | {{ic|1={ MODKEY<nowiki>|</nowiki>ShiftMask, XK_''key'', spawn, {.v = ''keybindname'' } <nowiki>}</nowiki>}} would bind {{ic|Mod+Shift+''key''}} Use ControlMask for {{ic|Ctrl}} key. |
||
− | |||
− | Single keys such as {{ic|Fn}} or multimedia keys have to be bound with the hex codes obtainable from the program ''xev''. |
||
− | |||
− | {{ic|1={ 0, 0xff00, spawn, {.v = ''keybindname'' } <nowiki>}</nowiki>}} would bind foo key {{ic|0xff00}} to {{ic|''keybindname''}}. |
||
− | |||
− | キーコードに関する情報は[[特別なキーボードキー#キーコード]]を見て下さい。 |
||
− | |||
− | === config.mk のカスタマイズ === |
||
− | |||
− | {{Warning|ソースからコンパイルしたソフトウェアを直接インストールするのは推奨されません。インストールしたファイルを [[pacman]] が追跡できなくなるからです。}} |
||
− | |||
− | {{ic|config.mk}} ファイルは Makefile によって include されます。GNU ''make'' で dwm をコンパイル・実行する方法を設定できます。 |
||
− | |||
− | パッケージを作成せずに、ソースから直接 dwm をインストールするときは、{{ic|config.mk}} を変更して適当なプレフィックスを設定してください: |
||
− | |||
− | {{Ic|PREFIX}} を修正: |
||
− | PREFIX = /usr |
||
− | X11 include フォルダ: |
||
− | X11INC = /usr/include/X11 |
||
− | X11 lib ディレクトリ: |
||
− | X11LIB = /usr/lib/X11 |
||
− | |||
− | {{Tip|システム全体の dwm に影響を与えずに設定変更をテストしたいだけなら、 {{ic|${HOME}/.local}} のようなローカルディレクトリに {{ic|PREFIX}} を変更します。もし、{{AUR|dwm}} を使ってコンパイルしているのであれば、注意してください。[[PKGBUILD]] は {{ic|config.mk}} よりも優先されるので、代わりに PKGBUILD の {{ic|PREFIX}} を変更する必要があります。- ''package()'' 関数を参照してください - そして、{{ic|pkgname}} も変更する必要があります。}} |
||
− | |||
− | === ステータスバーの設定 === |
||
{{Note|以下の設定を使うには {{Pkg|xorg-xsetroot}} パッケージのインストールが必要です。}} |
{{Note|以下の設定を使うには {{Pkg|xorg-xsetroot}} パッケージのインストールが必要です。}} |
||
99行目: | 44行目: | ||
Dwm はルートウィンドウの名前を読み取ってステータスバーに送信します。ルートウィンドウは他の全てのウィンドウが描画されるウィンドウで、ウィンドウマネージャによって作成されます。他のウィンドウと同じように、ルートウィンドウにもタイトル/名前が存在しますが、ルートウィンドウはバックグラウンドで動作するため基本的に名前は定義されていません。 |
Dwm はルートウィンドウの名前を読み取ってステータスバーに送信します。ルートウィンドウは他の全てのウィンドウが描画されるウィンドウで、ウィンドウマネージャによって作成されます。他のウィンドウと同じように、ルートウィンドウにもタイトル/名前が存在しますが、ルートウィンドウはバックグラウンドで動作するため基本的に名前は定義されていません。 |
||
− | dwm のステータスバーに表示したい情報は {{ic|~/.xinitrc}} や ([[ディスプレイマネージャ]]を使っている場合) {{ic|~/.xprofile}} で {{ic|xsetroot -name ""}} コマンドを使うことで定義します。例: |
+ | dwm のステータスバーに表示したい情報は {{ic|~/.xinitrc}} や ([[ディスプレイマネージャ]] を使っている場合) {{ic|~/.xprofile}} で {{ic|xsetroot -name ""}} コマンドを使うことで定義します。例: |
{{bc|xsetroot -name "Thanks for all the fish!"}} |
{{bc|xsetroot -name "Thanks for all the fish!"}} |
||
115行目: | 60行目: | ||
exec dwm |
exec dwm |
||
}} |
}} |
||
− | 上記の場合 [[ |
+ | 上記の場合 [[RFC:3339]] 形式で日付が表示され、起動時に [[PCManFM]] が実行されます。 |
− | {{note|更新間隔をゼロに等しくしたり、"sleep" 行を完全に削除することは、CPU 使用率を大幅に上昇させるので推奨されません ( |
+ | {{note|更新間隔をゼロに等しくしたり、"sleep" 行を完全に削除することは、CPU 使用率を大幅に上昇させるので推奨されません (使用率は ''top'' や [[powertop]] で観察して下さい)}} |
− | |||
− | ステータスバーのサンプルは [http://dwm.suckless.org/dwmstatus/ suckless wiki] にあります。 |
||
==== Conky ステータスバー ==== |
==== Conky ステータスバー ==== |
||
{{Ic|xsetroot -name}} を使うことでステータスバーに [[Conky]] を出力することができます: |
{{Ic|xsetroot -name}} を使うことでステータスバーに [[Conky]] を出力することができます: |
||
+ | |||
(conky | while read LINE; do xsetroot -name "$LINE"; done) & |
(conky | while read LINE; do xsetroot -name "$LINE"; done) & |
||
exec dwm |
exec dwm |
||
+ | 'xsetroot' コマンドによって多くの PID を生成したくない場合は、次の C プログラムをコンパイルします: |
||
− | この場合、コンソールにテキストを出力するように [[Conky]] を設定する必要があります。以下はデュアルコア CPU で統計を表示させる conkyrc の例です: |
||
− | {{bc| |
||
− | <nowiki>conky.config = { |
||
− | out_to_console = true, |
||
− | out_to_x = false, |
||
− | background = false, |
||
− | update_interval = 2, |
||
− | total_run_times = 0, |
||
− | use_spacer = 'none', |
||
− | }; |
||
− | conky.text = [[ |
||
− | $mpd_smart :: ${cpu cpu1}% / ${cpu cpu2}% ${loadavg 1} ${loadavg 2 3} :: ${acpitemp}c :: $memperc% ($mem) :: ${downspeed eth0}K/s ${upspeed eth0}K/s :: ${time %a %b %d %I:%M%P} |
||
− | ]];</nowiki> |
||
− | }} |
||
+ | {{bc|1= |
||
− | アイコンや色のオプションについては、[[dzen]] を見て下さい。 |
||
+ | #include <string.h> |
||
+ | #include <stdlib.h> |
||
+ | #include <stdio.h> |
||
+ | #include <X11/Xlib.h> |
||
+ | int main(int argc, char * argv[]) |
||
− | == 基本的な使い方 == |
||
+ | { |
||
+ | Display * dpy = NULL; |
||
+ | Window win = 0; |
||
+ | size_t length = 0; |
||
+ | ssize_t bytes_read = 0; |
||
+ | char * input = NULL; |
||
+ | dpy = XOpenDisplay(getenv("DISPLAY")); |
||
− | 以下のセクションだけでなく、dwm の基本的な使用方法については [http://dwm.suckless.org/tutorial dwm チュートリアル] も見て下さい。 |
||
+ | if (dpy == NULL) |
||
+ | { |
||
+ | fprintf(stderr, "Can't open display, exiting.\n"); |
||
+ | exit(1); |
||
+ | } |
||
+ | win = DefaultRootWindow(dpy); |
||
+ | while ((bytes_read = getline(&input, &length, stdin)) != EOF) |
||
− | === dmenu を使う === |
||
+ | { |
||
+ | input[strlen(input) - 1] = '\0'; |
||
+ | XStoreName(dpy, win, input); |
||
+ | XFlush(dpy); |
||
+ | fprintf(stderr, "Input: %s", input); |
||
+ | fprintf(stderr, "\nbytes read: %ld\n", bytes_read); |
||
+ | } |
||
+ | free(input); |
||
+ | return 0; |
||
+ | } |
||
+ | }} |
||
+ | このコードをファイル dwm-setstatus.c に保存し、コンパイルします: |
||
− | [[dmenu]] を起動するには、{{ic|Mod1}} + {{ic|P}} を押します ({{ic|Mod1}} はデフォルトでは {{ic|Alt}} キーです)。必要であればキーは変えられます。そして、トップバーに表示されるまで、実行したいバイナリの最初の文字列を入力します。左と右の方向キーでバイナリを選択してエンターを押します。 |
||
+ | $ gcc dwm-setstatus.c -lX11 -o dwm-setstatus |
||
− | === ウィンドウのコントロール === |
||
+ | $PATH 内で 'dwm-setstatus' を移動します ({{ic|/usr/local/bin}} など) |
||
− | ==== ウィンドウにタグを変更 ==== |
||
+ | # mv dwm-setstatus /usr/local/bin |
||
− | ウィンドウのタグの変更は簡単です。カーソルをウィンドウに乗せて、ウィンドウをフォーカスされた状態にしてください。そして、{{ic|Shift}} + {{ic|Mod1}} + {{ic|x}} を押します。{{ic|x}} はウィンドウを移動したいタグの番号に置き換えてください。デフォルトでは {{ic|Mod1}} は {{ic|Alt}} キーになっています。 |
||
+ | 実行します: |
||
− | ==== ウィンドウを閉じる ==== |
||
+ | $ conky | dwm-setstatus |
||
− | dwm を使ってウィンドウを終了するには、{{ic|Shift}} + {{ic|Mod1}} + {{ic|c}} を押して下さい。 |
||
+ | これを行うには、conky にテキストをコンソールのみに出力するように指示する必要があります。以下は、デュアルコア CPU のサンプル conkyrc で、いくつかの使用統計を表示します: |
||
− | ==== ウィンドウレイアウト ==== |
||
+ | {{bc|<nowiki> |
||
− | デフォルトでは、dwm はタイルモードで動作します。これは、同じタグの新しいウィンドウが開くと、どんどん小さくなっていきます。ウィンドウは合わせて、常に画面全体を占めることになります(メニューバーを除く)。ただし、これ以外にも、フローティングと monocole mode の2つのモードがあります。フローティングモードは、タイル型でないウィンドウマネージャのユーザーにはおなじみのもので、ユーザーが好きなようにウィンドウを並べ替えることができます。monocole mode は、常に1つのウィンドウを表示し続けます。 |
||
+ | conky.config = { |
||
+ | out_to_console = true, |
||
+ | out_to_x = false, |
||
+ | background = false, |
||
+ | update_interval = 2, |
||
+ | total_run_times = 0, |
||
+ | use_spacer = 'none', |
||
+ | }; |
||
+ | conky.text = [[ |
||
+ | $mpd_smart :: ${cpu cpu1}% / ${cpu cpu2}% ${loadavg 1} ${loadavg 2 3} :: ${acpitemp}c :: $memperc% ($mem) :: ${downspeed eth0}K/s ${upspeed eth0}K/s :: ${time %a %b %d %I:%M%P} |
||
+ | ]]; |
||
+ | </nowiki>}} |
||
+ | アイコンと色のオプションについては、[[dzen]] を参照してください。 |
||
− | フローティングモードに切り替えるには、単に {{ic|Mod1}} + {{ic|F}} です。{{ic|Mod1}} は、デフォルトでは {{ic|Alt}} キーです。フローティングモードになっているかどうかを確認するには、画面右上の番号付きタグの横に、次のようなものが表示されているはずです。><>. |
||
+ | === dwm の再起動 === |
||
− | monocole mode に切り替えるには、{{ic|Mod1}} + {{ic|M}} monocole mode になっているかどうかは、カッコの中に M が表示されているか(そのタグでウィンドウが開かれていない場合)、カッコの中に数字が表示されているか(そのタグで開いているウィンドウの数に対応する)で確認できます。したがって、ウィンドウが1つも開かれていないタグは、[M] と表示され、'n' 個のウィンドウが開いているタグは、このように表示されます。[n]. |
||
+ | ログアウトやアプリケーションの終了をせずに dwm を再起動するには、起動スクリプトを変更または追加して、例えば ''while'' ループの中で dwm をロードするようにします。 |
||
− | タイルモードに戻るには、{{ic|Mod1}} + {{ic|T}} です。次のようなマークが表示されます。[]= . |
||
− | 他のウィンドウレイアウトを使う方法は、[[#ウィンドウタイリングパッチ]]を見て下さい。 |
||
− | |||
− | === dwm の終了 === |
||
− | |||
− | dwm を終了するには、{{ic|Shift}} + {{ic|Mod1}} + {{ic|q}} を押して下さい。 |
||
− | |||
− | == ヒントとテクニック == |
||
− | |||
− | === ログアウトやプログラムを終了しないで dwm を再起動 === |
||
− | |||
− | ログアウトやアプリケーションの終了をせずに dwm を再起動するには、起動スクリプトを ''while'' ループで dwm をロードするように変更または追加してください(下記参照) |
||
{{bc| |
{{bc| |
||
while true; do |
while true; do |
||
192行目: | 151行目: | ||
}} |
}} |
||
− | dwm は通常の Mod-Shift-Q の組み合わせで、 |
+ | dwm は通常の Mod-Shift-Q の組み合わせで、他の X ウィンドウを破壊することなく再起動できるようになりました。 |
− | 上記のスタートアップスクリプトを別のファイル、例えば {{ic|~/bin/startdwm}} に置き、 |
+ | 上記のスタートアップスクリプトを別のファイル、例えば {{ic|~/bin/startdwm}} に置き、{{ic|~/.xinitrc}} から実行するのが良いでしょう。X サーバーが終了した後もログインしたままだとセキュリティに影響が出るので、{{ic|exec}} でスクリプトを実行することを検討して下さい。詳しくは [[Xinit#ログイン時に X を自動起動|ログイン時に X を自動起動]] を参照して下さい。これ以降、Xセッションを終了したいときは、単に {{Ic|killall xinit}} を実行するか、便利なキーバインドにそれをバインドしてください。また、バイナリが変更された場合のみ、dwm セッションスクリプトを再立ち上げするように設定することもできます。これは、設定を変更したり、dwm のコードベースを更新したりする場合に便利です。 |
{{bc|1= |
{{bc|1= |
||
# relaunch DWM if the binary changes, otherwise bail |
# relaunch DWM if the binary changes, otherwise bail |
||
+ | csum="" |
||
− | csum=$(sha1sum $(which dwm)) |
||
− | new_csum= |
+ | new_csum=$(sha1sum $(which dwm)) |
while true |
while true |
||
do |
do |
||
214行目: | 173行目: | ||
}} |
}} |
||
− | === 右 Alt キーを Mod4 |
+ | === 右側の Alt キーを Mod4 にバインドする === |
− | + | Mod4 (スーパー/Windows キー)を {{Ic|MODKEY}} として使用する場合、右 Alt キー ({{ic|Alt_R}}) を {{ic|Mod4}} として使用すると、{{ic|Alt_R}}+{{ic|Enter}} でズームするような、不便なキーストロークを片手で実行できるようになります。 |
|
まず、{{ic|Alt_R}} に割り当てられているキーコードを確認してください: |
まず、{{ic|Alt_R}} に割り当てられているキーコードを確認してください: |
||
+ | |||
xmodmap -pke | grep Alt_R |
xmodmap -pke | grep Alt_R |
||
次に、スタートアップスクリプト (例:{{ic|~/.xinitrc}}) に以下を追加します。必要ならキーコード ''113'' を前の {{Ic|xmodmap}} コマンドで集めた結果に変更します。 |
次に、スタートアップスクリプト (例:{{ic|~/.xinitrc}}) に以下を追加します。必要ならキーコード ''113'' を前の {{Ic|xmodmap}} コマンドで集めた結果に変更します。 |
||
− | xmodmap -e "keycode 113 = Super_L" # reassign Alt_R to Super_L |
||
− | xmodmap -e "remove mod1 = Super_L" # make sure X keeps it out of the mod1 group |
||
+ | {{ic|Alt_R}} を {{ic|Super_L}} に再割り当てします: |
||
− | そうすると、{{ic|Super_L}} キーが押されたときに起動する関数も {{ic|Alt_R}} キーが押されたときに起動するようになります。 |
||
+ | xmodmap -e "keycode 113 = Super_L" |
||
− | {{note|[[#config.h のカスタマイズ|config.h]] の #define オプションで modkey を切り替えることができます。}} |
||
+ | |||
+ | X が "mod1" グループから除外されていることを確認します。 |
||
+ | |||
+ | xmodmap -e "remove mod1 = Super_L" |
||
+ | |||
+ | これを実行すると、{{ic|Super_L}} キーの押下によってトリガーされる機能はすべて、{{ic|Alt_R}} キーの押下によってもトリガーされます。 |
||
+ | |||
+ | {{Note|[[dwm#設定|config.h]] には {{ic|#define}} オプションがあり、これを使用して modkey を切り替えることもできます。}} |
||
+ | |||
+ | === DWM で Alt キーを両方 Meta として使用する === |
||
+ | |||
+ | xmodmap を使って Alt_L を DWM のセカンダリメタキーとして割り当てます (Mod1Mask (Alt_R) を使って既に提供されています) |
||
+ | |||
+ | {{hc|~/.xinitrc|<nowiki> |
||
+ | /usr/bin/xmodmap -e "clear mod5" |
||
+ | /usr/bin/xmodmap -e "keycode 108 = Alt_L" |
||
+ | </nowiki>}} |
||
=== dwm のバーのフォントの周りの空白 === |
=== dwm のバーのフォントの周りの空白 === |
||
デフォルトでは、dwm のバーではフォントのサイズが 2px 追加されます。これを変更するには、{{ic|dwm.c}} の以下の行を変更してください: |
デフォルトでは、dwm のバーではフォントのサイズが 2px 追加されます。これを変更するには、{{ic|dwm.c}} の以下の行を変更してください: |
||
+ | |||
− | {{bc|1=bh = dc.h = dc.font.height + 2;}} |
||
+ | {{hc|dwm.c|2=bh = dc.h = dc.font.height + 2;}} |
||
=== マウス追随フォーカスの無効化 === |
=== マウス追随フォーカスの無効化 === |
||
− | マウス |
+ | マウスの動作に従うフォーカスを無効にするには、構造体ハンドラーの定義内の次の行をコメントアウトします: |
+ | |||
− | {{bc|1=[EnterNotify] = enternotify, }} |
||
+ | {{hc|dwm.c|2=[EnterNotify] = enternotify,}} |
||
− | 非アクティブなウィンドウを最初にクリックすると、そのウィンドウにのみフォーカスが移動します。ウィンドウの内容(ボタン、フィールドなど)を操作するには、もう一度クリックする必要があります。また、複数のモニターを使用している場合、クリックしてもキーボードのフォーカスが他のモニターに切り替わらないことがあります。 |
||
+ | |||
+ | 非アクティブなウィンドウを最初にクリックすると、そのウィンドウにのみフォーカスが移動します。ウィンドウの内容(ボタン、フィールドなど)を操作するには、もう一度クリックする必要があります。また、複数のモニターを使用している場合、クリックしてもキーボードのフォーカスが他のモニターに切り替わらないことがあります。 |
||
=== 特定のウィンドウをフロートさせる === |
=== 特定のウィンドウをフロートさせる === |
||
245行目: | 223行目: | ||
{ "Firefox", NULL, "Firefox Preferences", 1 << 8, True, -1 }, |
{ "Firefox", NULL, "Firefox Preferences", 1 << 8, True, -1 }, |
||
+ | === dwm での Tilda の使用 === |
||
− | == トラブルシューティング == |
||
+ | [[Tilda]] はすべてのタグに追加され、フローティングに設定された場合に最もよく機能します。そのためには、{{ic|config.h}} の中のルール配列に以下を追加してください。 |
||
− | === Java アプリケーションの挙動がおかしい問題の修正 === |
||
+ | { "Tilda", NULL, NULL, 0, True, -1 }, |
||
− | JRE 6u20 現在、[[Java]] から dwm がウィンドウマネージャとして認識されないために、dwm で Java アプリケーションの挙動がおかしくなることがあります。マウスを離したときにメニューが閉じてしまうなどの問題が確認されています。まず、{{Pkg|wmname}} パッケージをインストールしてください。 |
||
− | + | {{ic|-C}} オプションを指定して tilda を起動します: |
|
+ | |||
− | $ wmname LG3D |
||
+ | $ tilda -C |
||
+ | |||
+ | これで、Tilda を設定できるようになりました。次のオプションが推奨事項として提供されます: |
||
+ | |||
+ | {{bc| |
||
+ | Font: Clean 9 |
||
+ | Appearance: Height: 50%, Width: 70%, Centered Horizontally |
||
+ | Extras: Enable Transparency Level 15 |
||
+ | Animated Pulldown: 1500 usec, Orientation: Top |
||
+ | Colors: Built-in Scheme "Green on Black" |
||
+ | Scrolling: Scrollbar is on the left, 2000 lines scrollback |
||
+ | Key Binding: F9 |
||
+ | }} |
||
+ | |||
+ | プルダウンアニメーションを有効にしないと、Tilda は非表示にするたびに下にジャンプしてしまいます。 |
||
+ | |||
+ | === スクリーンショットを撮る === |
||
+ | |||
+ | {{Pkg|scrot}} パッケージをインストールします。次に 2 つのスクリプトを作成します |
||
+ | |||
+ | {{hc|/path/to/scripts/screenshot.sh|2= |
||
+ | #!/bin/sh |
||
+ | mkdir -p /path/to/pics && scrot /path/to/pics/%m-%d-%Y-%H%M%S.png |
||
+ | }} |
||
+ | |||
+ | スクリーンショットの作成と |
||
+ | |||
+ | {{hc|/path/to/scripts/screenshotsel.sh|2= |
||
+ | #!/bin/sh |
||
+ | mkdir -p /path/to/pics && scrot /path/to/pics/%m-%d-%Y-%H%M%S.png --select --line mode=edge |
||
+ | }} |
||
+ | |||
+ | 選択ボックスでスクリーンショットを作成するため。 |
||
+ | 実行権限を付与します。{{ic|config.h}} に以下を追加します |
||
+ | |||
+ | static const Key keys[] = { |
||
+ | ... |
||
+ | |||
+ | { 0, XK_Print, spawn, SHCMD("/path/to/scripts/screenshot.sh") }, |
||
+ | { ShiftMask, XK_Print, spawn, SHCMD("/path/to/scripts/screenshotsel.sh") }, |
||
+ | |||
+ | ... |
||
+ | }; |
||
+ | |||
+ | これは、スクリーンショットの撮影をプリントキーにマップし、選択ボックスでスクリーンショット撮影を shift + プリントキーにマップします。 |
||
+ | |||
+ | === マルチメディアキーのマッピング === |
||
+ | |||
+ | {{ic|config.h}} の先頭に追加し、 |
||
+ | |||
+ | #include <X11/XF86keysym.h> |
||
+ | |||
+ | [[Xmodmap#キーマップテーブル|マルチメディアキーを使用する]] これで、一般的なタスクをこれらのキーにマップできます。 |
||
+ | |||
+ | ==== 音量を調整する ==== |
||
+ | |||
+ | {{Pkg|pipewire}} パッケージをインストールします。{{ic|config.h}} に、ミュートと音量の増減のコマンドを追加します。 |
||
+ | |||
+ | static const char *up_vol[] = { "pactl", "set-sink-volume", "@DEFAULT_SINK@", "+10%", NULL }; |
||
+ | static const char *down_vol[] = { "pactl", "set-sink-volume", "@DEFAULT_SINK@", "-10%", NULL }; |
||
+ | static const char *mute_vol[] = { "pactl", "set-sink-mute", "@DEFAULT_SINK@", "toggle", NULL }; |
||
+ | ... |
||
+ | |||
+ | static const Key keys[] = { |
||
+ | ... |
||
+ | |||
+ | { 0, XF86XK_AudioMute, spawn, {.v = mute_vol } }, |
||
+ | { 0, XF86XK_AudioLowerVolume, spawn, {.v = down_vol } }, |
||
+ | { 0, XF86XK_AudioRaiseVolume, spawn, {.v = up_vol } }, |
||
+ | |||
+ | ... |
||
+ | }; |
||
+ | |||
+ | ==== 明るさの調整 ==== |
||
+ | |||
+ | {{Pkg|brightnessctl}} パッケージをインストールします。{{ic|config.h}} に、画面を暗くしたり明るくしたりするためのコマンドを追加します。 |
||
+ | |||
+ | static const char *brighter[] = { "brightnessctl", "set", "10%+", NULL }; |
||
+ | static const char *dimmer[] = { "brightnessctl", "set", "10%-", NULL }; |
||
+ | ... |
||
+ | |||
+ | static const Key keys[] = { |
||
+ | ... |
||
+ | |||
+ | { 0, XF86XK_MonBrightnessDown, spawn, {.v = dimmer } }, |
||
+ | { 0, XF86XK_MonBrightnessUp, spawn, {.v = brighter } }, |
||
+ | |||
+ | ... |
||
+ | }; |
||
+ | |||
+ | === 自動起動 === |
||
+ | |||
+ | [https://dwm.suckless.org/patches/autostart/ パッチ] が利用可能です。ハンドラーループに入る前に、{{ic|~/.dwm/autostart_blocking.sh}} と {{ic|~/.dwm/autostart.sh &}} を実行します。これらのファイルの一方または両方を省略できます。 |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | === Java アプリケーションの挙動がおかしい問題の修正 === |
||
+ | {{ic|1=export _JAVA_AWT_WM_NONREPARENTING=1}} を設定してみてください。{{Pkg|wmname}} を使用して {{ic|1=wmname "LG3D"}} を設定することも役立つかもしれません。 |
||
− | {{Note|この設定を使うと Chromium など特定のプログラムをタイルにしたときに問題が起こることがあります。}} |
||
− | 上記の設定は永続的ではないため、上のコマンドを {{ic|.xinitrc}} や {{ic|.xprofile}} に追加してください。 |
||
+ | こちらも参照 [[Java#灰色のウィンドウ、ウィンドウマネージャでアプリがリサイズされない、メニューがすぐに閉じる]] |
||
− | もしくは、{{ic|/etc/profile.d/jre.sh}} で {{ic|1=export _JAVA_AWT_WM_NONREPARENTING=1}} を有効にする方法もあります。 |
||
=== ターミナルウィンドウ周辺のギャップを修正する === |
=== ターミナルウィンドウ周辺のギャップを修正する === |
||
265行目: | 339行目: | ||
これにより、dwm は端末だけでなく、すべてのクライアントウィンドウからのサイズ変更要求を無視します。この回避策の欠点は、一部の端末で再描画の異常 (特にゴーストラインや早まったラインラップなど) が発生する可能性があることです。 |
これにより、dwm は端末だけでなく、すべてのクライアントウィンドウからのサイズ変更要求を無視します。この回避策の欠点は、一部の端末で再描画の異常 (特にゴーストラインや早まったラインラップなど) が発生する可能性があることです。 |
||
− | または、 |
+ | または、[[st]] ターミナルエミュレータを使用する場合は、[https://st.suckless.org/patches/anysize/ anysize] パッチを適用して st を再コンパイルします。 |
== 参照 == |
== 参照 == |
||
* [http://dwm.suckless.org/ dwm の公式ウェブサイト] |
* [http://dwm.suckless.org/ dwm の公式ウェブサイト] |
||
− | * [https://www.youtube.com/watch?v=GQ5s6T25jCc |
+ | * [https://www.youtube.com/watch?v=GQ5s6T25jCc dwm ビデオの紹介] |
* [[dmenu]] - dwm の開発者が作ったシンプルなアプリケーションランチャー |
* [[dmenu]] - dwm の開発者が作ったシンプルなアプリケーションランチャー |
||
− | * |
+ | * [https://bbs.archlinux.org/viewtopic.php?id=57549/ dwm スレッド] フォーラム |
− | * [https://bbs.archlinux.org/viewtopic.php?id=92895/ |
+ | * [https://bbs.archlinux.org/viewtopic.php?id=92895/ dwm ハッキング スレッド] |
− | * |
+ | * dwm の壁紙は、フォーラムの [https://bbs.archlinux.org/viewtopic.php?id=57768/ wallpaper スレッド] をご覧ください。 |
− | *[https://bbs.archlinux.org/viewtopic.php?id=74599 |
+ | * [https://bbs.archlinux.org/viewtopic.php?id=74599 dwm 設定を公開するフォーラムスレッド] |
* [http://wongdev.com/blog/dwm-tags-are-not-workspaces/ dwm: Tags are not workspaces] |
* [http://wongdev.com/blog/dwm-tags-are-not-workspaces/ dwm: Tags are not workspaces] |
2024年2月2日 (金) 21:42時点における最新版
関連記事
dwm は Xorg の動的ウィンドウマネージャです。タイル・スタック・フルスクリーンレイアウトでウィンドウを管理し、さらにパッチを使うことで他のレイアウトも利用できます。レイアウトは動的に適用することができるため、アプリケーションを使用する環境と作業を最適化することが可能です。dwm はきわめて軽量かつ高速であり、C で書かれていてソースコードの行数を2000行以下から増やさないという設計目標を掲げています。xrandr や Xinerama による マルチディスプレイ もサポートしています。
インストール
dwm は、パッケージ dwmAUR または dwm-gitAUR でインストールできます。ビルドとインストールの 前に、必要な 設定 の変更を行ってください。makepkg を参照してください。
設定
dwm はコンパイル時にいくつかのソースファイル、特に config.h
を編集することで設定します。これらの設定に関する詳細な情報は、同梱され、コメントが付いています。config.def.h
と、dwm のウェブサイトの customisation section を参照してください。
公式サイトには、dwm に機能を追加するための パッチ が多数あります。これらのパッチは主に dwm.c
ファイルを変更するものですが、必要に応じて config.h
ファイルも変更されます。パッチの適用に関する情報は、パッケージにパッチを適用 の記事を参照してください。
起動
任意のディスプレイマネージャのメニューから Dwm を選択します。あるいは、startx で dwm を起動するには、exec dwm
を ~/.xinitrc
に追加し、他のプログラムも同様に実行するように前置きします、例えば、以下のようにします。
redshift -O3500; xset r rate 300 50; exec dwm
使い方
dwm の基本的な使い方については、dwm チュートリアル を参照してください。
ヒントとテクニック
ステータスバーの設定
ステータスバーのその他の例については、[1] を参照してください。
Dwm はルートウィンドウの名前を読み取ってステータスバーに送信します。ルートウィンドウは他の全てのウィンドウが描画されるウィンドウで、ウィンドウマネージャによって作成されます。他のウィンドウと同じように、ルートウィンドウにもタイトル/名前が存在しますが、ルートウィンドウはバックグラウンドで動作するため基本的に名前は定義されていません。
dwm のステータスバーに表示したい情報は ~/.xinitrc
や (ディスプレイマネージャ を使っている場合) ~/.xprofile
で xsetroot -name ""
コマンドを使うことで定義します。例:
xsetroot -name "Thanks for all the fish!"
動的に更新された情報は、バックグラウンドへ分岐するループに入れる必要があります。以下の例を参照してください。
# Statusbar loop while true; do xsetroot -name "$( date +"%F %R" )" sleep 1m # Update time every minute done & # Autostart section pcmanfm & exec dwm
上記の場合 RFC:3339 形式で日付が表示され、起動時に PCManFM が実行されます。
Conky ステータスバー
xsetroot -name
を使うことでステータスバーに Conky を出力することができます:
(conky | while read LINE; do xsetroot -name "$LINE"; done) & exec dwm
'xsetroot' コマンドによって多くの PID を生成したくない場合は、次の C プログラムをコンパイルします:
#include <string.h> #include <stdlib.h> #include <stdio.h> #include <X11/Xlib.h> int main(int argc, char * argv[]) { Display * dpy = NULL; Window win = 0; size_t length = 0; ssize_t bytes_read = 0; char * input = NULL; dpy = XOpenDisplay(getenv("DISPLAY")); if (dpy == NULL) { fprintf(stderr, "Can't open display, exiting.\n"); exit(1); } win = DefaultRootWindow(dpy); while ((bytes_read = getline(&input, &length, stdin)) != EOF) { input[strlen(input) - 1] = '\0'; XStoreName(dpy, win, input); XFlush(dpy); fprintf(stderr, "Input: %s", input); fprintf(stderr, "\nbytes read: %ld\n", bytes_read); } free(input); return 0; }
このコードをファイル dwm-setstatus.c に保存し、コンパイルします:
$ gcc dwm-setstatus.c -lX11 -o dwm-setstatus
$PATH 内で 'dwm-setstatus' を移動します (/usr/local/bin
など)
# mv dwm-setstatus /usr/local/bin
実行します:
$ conky | dwm-setstatus
これを行うには、conky にテキストをコンソールのみに出力するように指示する必要があります。以下は、デュアルコア CPU のサンプル conkyrc で、いくつかの使用統計を表示します:
conky.config = { out_to_console = true, out_to_x = false, background = false, update_interval = 2, total_run_times = 0, use_spacer = 'none', }; conky.text = [[ $mpd_smart :: ${cpu cpu1}% / ${cpu cpu2}% ${loadavg 1} ${loadavg 2 3} :: ${acpitemp}c :: $memperc% ($mem) :: ${downspeed eth0}K/s ${upspeed eth0}K/s :: ${time %a %b %d %I:%M%P} ]];
アイコンと色のオプションについては、dzen を参照してください。
dwm の再起動
ログアウトやアプリケーションの終了をせずに dwm を再起動するには、起動スクリプトを変更または追加して、例えば while ループの中で dwm をロードするようにします。
while true; do # Log stderror to a file dwm 2> ~/.dwm.log # No error logging #dwm >/dev/null 2>&1 done
dwm は通常の Mod-Shift-Q の組み合わせで、他の X ウィンドウを破壊することなく再起動できるようになりました。
上記のスタートアップスクリプトを別のファイル、例えば ~/bin/startdwm
に置き、~/.xinitrc
から実行するのが良いでしょう。X サーバーが終了した後もログインしたままだとセキュリティに影響が出るので、exec
でスクリプトを実行することを検討して下さい。詳しくは ログイン時に X を自動起動 を参照して下さい。これ以降、Xセッションを終了したいときは、単に killall xinit
を実行するか、便利なキーバインドにそれをバインドしてください。また、バイナリが変更された場合のみ、dwm セッションスクリプトを再立ち上げするように設定することもできます。これは、設定を変更したり、dwm のコードベースを更新したりする場合に便利です。
# relaunch DWM if the binary changes, otherwise bail csum="" new_csum=$(sha1sum $(which dwm)) while true do if [ "$csum" != "$new_csum" ] then csum=$new_csum dwm else exit 0 fi new_csum=$(sha1sum $(which dwm)) sleep 0.5 done
右側の Alt キーを Mod4 にバインドする
Mod4 (スーパー/Windows キー)を MODKEY
として使用する場合、右 Alt キー (Alt_R
) を Mod4
として使用すると、Alt_R
+Enter
でズームするような、不便なキーストロークを片手で実行できるようになります。
まず、Alt_R
に割り当てられているキーコードを確認してください:
xmodmap -pke | grep Alt_R
次に、スタートアップスクリプト (例:~/.xinitrc
) に以下を追加します。必要ならキーコード 113 を前の xmodmap
コマンドで集めた結果に変更します。
Alt_R
を Super_L
に再割り当てします:
xmodmap -e "keycode 113 = Super_L"
X が "mod1" グループから除外されていることを確認します。
xmodmap -e "remove mod1 = Super_L"
これを実行すると、Super_L
キーの押下によってトリガーされる機能はすべて、Alt_R
キーの押下によってもトリガーされます。
DWM で Alt キーを両方 Meta として使用する
xmodmap を使って Alt_L を DWM のセカンダリメタキーとして割り当てます (Mod1Mask (Alt_R) を使って既に提供されています)
~/.xinitrc
/usr/bin/xmodmap -e "clear mod5" /usr/bin/xmodmap -e "keycode 108 = Alt_L"
dwm のバーのフォントの周りの空白
デフォルトでは、dwm のバーではフォントのサイズが 2px 追加されます。これを変更するには、dwm.c
の以下の行を変更してください:
dwm.c
bh = dc.h = dc.font.height + 2;
マウス追随フォーカスの無効化
マウスの動作に従うフォーカスを無効にするには、構造体ハンドラーの定義内の次の行をコメントアウトします:
dwm.c
[EnterNotify] = enternotify,
非アクティブなウィンドウを最初にクリックすると、そのウィンドウにのみフォーカスが移動します。ウィンドウの内容(ボタン、フィールドなど)を操作するには、もう一度クリックする必要があります。また、複数のモニターを使用している場合、クリックしてもキーボードのフォーカスが他のモニターに切り替わらないことがあります。
特定のウィンドウをフロートさせる
環境設定ダイアログのような一部のウィンドウでは、ウィンドウをタイル状にすることは意味がなく、代わりにフリーフローティングにすべきです。たとえば、Firefox の環境設定ダイアログをフロートさせるには、config.h
のルール配列に次のように追加します。:
{ "Firefox", NULL, "Firefox Preferences", 1 << 8, True, -1 },
dwm での Tilda の使用
Tilda はすべてのタグに追加され、フローティングに設定された場合に最もよく機能します。そのためには、config.h
の中のルール配列に以下を追加してください。
{ "Tilda", NULL, NULL, 0, True, -1 },
-C
オプションを指定して tilda を起動します:
$ tilda -C
これで、Tilda を設定できるようになりました。次のオプションが推奨事項として提供されます:
Font: Clean 9 Appearance: Height: 50%, Width: 70%, Centered Horizontally Extras: Enable Transparency Level 15 Animated Pulldown: 1500 usec, Orientation: Top Colors: Built-in Scheme "Green on Black" Scrolling: Scrollbar is on the left, 2000 lines scrollback Key Binding: F9
プルダウンアニメーションを有効にしないと、Tilda は非表示にするたびに下にジャンプしてしまいます。
スクリーンショットを撮る
scrot パッケージをインストールします。次に 2 つのスクリプトを作成します
/path/to/scripts/screenshot.sh
#!/bin/sh mkdir -p /path/to/pics && scrot /path/to/pics/%m-%d-%Y-%H%M%S.png
スクリーンショットの作成と
/path/to/scripts/screenshotsel.sh
#!/bin/sh mkdir -p /path/to/pics && scrot /path/to/pics/%m-%d-%Y-%H%M%S.png --select --line mode=edge
選択ボックスでスクリーンショットを作成するため。
実行権限を付与します。config.h
に以下を追加します
static const Key keys[] = { ... { 0, XK_Print, spawn, SHCMD("/path/to/scripts/screenshot.sh") }, { ShiftMask, XK_Print, spawn, SHCMD("/path/to/scripts/screenshotsel.sh") }, ... };
これは、スクリーンショットの撮影をプリントキーにマップし、選択ボックスでスクリーンショット撮影を shift + プリントキーにマップします。
マルチメディアキーのマッピング
config.h
の先頭に追加し、
#include <X11/XF86keysym.h>
マルチメディアキーを使用する これで、一般的なタスクをこれらのキーにマップできます。
音量を調整する
pipewire パッケージをインストールします。config.h
に、ミュートと音量の増減のコマンドを追加します。
static const char *up_vol[] = { "pactl", "set-sink-volume", "@DEFAULT_SINK@", "+10%", NULL }; static const char *down_vol[] = { "pactl", "set-sink-volume", "@DEFAULT_SINK@", "-10%", NULL }; static const char *mute_vol[] = { "pactl", "set-sink-mute", "@DEFAULT_SINK@", "toggle", NULL }; ... static const Key keys[] = { ... { 0, XF86XK_AudioMute, spawn, {.v = mute_vol } }, { 0, XF86XK_AudioLowerVolume, spawn, {.v = down_vol } }, { 0, XF86XK_AudioRaiseVolume, spawn, {.v = up_vol } }, ... };
明るさの調整
brightnessctl パッケージをインストールします。config.h
に、画面を暗くしたり明るくしたりするためのコマンドを追加します。
static const char *brighter[] = { "brightnessctl", "set", "10%+", NULL }; static const char *dimmer[] = { "brightnessctl", "set", "10%-", NULL }; ... static const Key keys[] = { ... { 0, XF86XK_MonBrightnessDown, spawn, {.v = dimmer } }, { 0, XF86XK_MonBrightnessUp, spawn, {.v = brighter } }, ... };
自動起動
パッチ が利用可能です。ハンドラーループに入る前に、~/.dwm/autostart_blocking.sh
と ~/.dwm/autostart.sh &
を実行します。これらのファイルの一方または両方を省略できます。
トラブルシューティング
Java アプリケーションの挙動がおかしい問題の修正
export _JAVA_AWT_WM_NONREPARENTING=1
を設定してみてください。wmname を使用して wmname "LG3D"
を設定することも役立つかもしれません。
こちらも参照 Java#灰色のウィンドウ、ウィンドウマネージャでアプリがリサイズされない、メニューがすぐに閉じる
ターミナルウィンドウ周辺のギャップを修正する
ターミナルウィンドウの外側にデスクトップスペースの空きがある場合は、ターミナルのフォントサイズが原因である可能性があります。ギャップを埋める理想的なスケールが見つかるまでサイズを調整するか、config.h
で resizehints
を 0 に切り替えます。
これにより、dwm は端末だけでなく、すべてのクライアントウィンドウからのサイズ変更要求を無視します。この回避策の欠点は、一部の端末で再描画の異常 (特にゴーストラインや早まったラインラップなど) が発生する可能性があることです。
または、st ターミナルエミュレータを使用する場合は、anysize パッチを適用して st を再コンパイルします。
参照
- dwm の公式ウェブサイト
- dwm ビデオの紹介
- dmenu - dwm の開発者が作ったシンプルなアプリケーションランチャー
- dwm スレッド フォーラム
- dwm ハッキング スレッド
- dwm の壁紙は、フォーラムの wallpaper スレッド をご覧ください。
- dwm 設定を公開するフォーラムスレッド
- dwm: Tags are not workspaces