Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Dwmのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Dwm
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{DISPLAYTITLE:dwm}} [[Category:動的ウィンドウマネージャ]] [[Category:Suckless]] [[de:Dwm]] [[en:Dwm]] [[es:Dwm]] [[fr:DWM]] [[ru:Dwm]] [[zh-hans:Dwm]] {{Related articles start}} {{Related|dmenu}} {{Related|ウィンドウマネージャ}} {{Related articles end}} [http://dwm.suckless.org/ dwm] は [[Xorg]] の動的ウィンドウマネージャです。タイル・スタック・フルスクリーンレイアウトでウィンドウを管理し、さらに[[#パッチ|パッチ]]を使うことで他のレイアウトも利用できます。レイアウトは動的に適用することができるため、アプリケーションを使用する環境と作業を最適化することが可能です。dwm はきわめて軽量かつ高速であり、C で書かれていてソースコードの行数を2000行以下から増やさないという設計目標を掲げています。[[xrandr]] や Xinerama による[[マルチディスプレイ]]もサポートしています。 == インストール == dwm は、パッケージ {{AUR|dwm}} または {{AUR|dwm-git}} でインストールできます。ビルドとインストールの '''前に'''、必要な [[Dwm#設定|設定]] の変更を行ってください。[[makepkg]] を参照してください。 {{Note|[https://git.suckless.org/dwm/file/README.html アップストリームの手順] に従うこともできますが、[[pacman]] がファイルを追跡せずにファイルをインストールします。}} === 設定 === dwm はコンパイル時にいくつかのソースファイル、特に {{ic|config.h}} を編集することで設定します。これらの設定に関する詳細な情報は、同梱され、コメントが付いています。 {{ic|config.def.h}} と、 dwm のウェブサイトの [https://dwm.suckless.org/customisation/ customisation section] を参照してください。 公式サイトには、dwm に機能を追加するための [https://dwm.suckless.org/patches/ パッチ]が多数あります。これらのパッチは主に {{ic|dwm.c}} ファイルを変更するものですが、必要に応じて {{ic|config.h}} ファイルも変更されます。パッチの適用に関する情報は、[[パッケージにパッチを適用]] の記事を参照してください。 == 起動 == 任意の[[ディスプレイマネージャ]]のメニューから ''Dwm'' を選択します。あるいは、[[startx]] で dwm を起動するには、 {{ic|exec dwm}} を {{ic|~/.xinitrc}} に追加し、他のプログラムも同様に実行するように前置きします、例えば、以下のようにします。 redshift -O3500; xset r rate 300 50; exec dwm == 使い方 == dwm の基本的な使い方については、[https://dwm.suckless.org/tutorial dwm チュートリアル]を参照してください。 == ヒントとテクニック == === ステータスバーの設定 === ステータスバーのその他の例については、[https://dwm.suckless.org/status_monitor/] を参照してください。 {{Note|以下の設定を使うには {{Pkg|xorg-xsetroot}} パッケージのインストールが必要です。}} Dwm はルートウィンドウの名前を読み取ってステータスバーに送信します。ルートウィンドウは他の全てのウィンドウが描画されるウィンドウで、ウィンドウマネージャによって作成されます。他のウィンドウと同じように、ルートウィンドウにもタイトル/名前が存在しますが、ルートウィンドウはバックグラウンドで動作するため基本的に名前は定義されていません。 dwm のステータスバーに表示したい情報は {{ic|~/.xinitrc}} や ([[ディスプレイマネージャ]]を使っている場合) {{ic|~/.xprofile}} で {{ic|xsetroot -name ""}} コマンドを使うことで定義します。例: {{bc|xsetroot -name "Thanks for all the fish!"}} 動的に更新された情報は、バックグラウンドへ分岐するループに入れる必要があります。以下の例を参照してください。 {{bc| # Statusbar loop while true; do xsetroot -name "$( date +"%F %R" )" sleep 1m # Update time every minute done & # Autostart section pcmanfm & exec dwm }} 上記の場合 [[wikipedia:ISO_8601|ISO 8601]] 形式で日付が表示され、起動時に [[PCManFM]] が実行されます。 {{note|更新間隔をゼロに等しくしたり、"sleep" 行を完全に削除することは、CPU 使用率を大幅に上昇させるので推奨されません (使用率は ''top'' や [[powertop]] で観察して下さい)}} ==== Conky ステータスバー ==== {{Ic|xsetroot -name}} を使うことでステータスバーに [[Conky]] を出力することができます: (conky | while read LINE; do xsetroot -name "$LINE"; done) & exec dwm 'xsetroot' コマンドによって多くの PID を生成したくない場合は、次の C プログラムをコンパイルします: {{bc|1= #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' を移動します ({{ic|/usr/local/bin}} など) # mv dwm-setstatus /usr/local/bin 実行します: $ conky | dwm-setstatus これを行うには、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>}} アイコンと色のオプションについては、[[dzen]] を参照してください。 === dwm の再起動 === ログアウトやアプリケーションの終了をせずに dwm を再起動するには、起動スクリプトを変更または追加して、例えば ''while'' ループの中で dwm をロードするようにします。 {{bc| 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 ウィンドウを破壊することなく再起動できるようになりました。 上記のスタートアップスクリプトを別のファイル、例えば {{ic|~/bin/startdwm}} に置き、 {{ic|~/.xinitrc}} から実行するのが良いでしょう。X サーバーが終了した後もログインしたままだとセキュリティに影響が出るので、{{ic|exec}} でスクリプトを実行することを検討して下さい。詳しくは [[Xinit#ログイン時に X を自動起動|ログイン時に X を自動起動]] を参照して下さい。これ以降、Xセッションを終了したいときは、単に {{Ic|killall xinit}} を実行するか、便利なキーバインドにそれをバインドしてください。また、バイナリが変更された場合のみ、dwm セッションスクリプトを再立ち上げするように設定することもできます。 これは、設定を変更したり、dwm のコードベースを更新したりする場合に便利です。 {{bc|1= # 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 キー)を {{Ic|MODKEY}} として使用する場合、右 Alt キー ({{ic|Alt_R}}) を {{ic|Mod4}} として使用すると、{{ic|Alt_R}}+{{ic|Enter}} でズームするような、不便なキーストロークを片手で実行できるようになります。 まず、{{ic|Alt_R}} に割り当てられているキーコードを確認してください: xmodmap -pke | grep Alt_R 次に、スタートアップスクリプト (例:{{ic|~/.xinitrc}}) に以下を追加します。必要ならキーコード ''113'' を前の {{Ic|xmodmap}} コマンドで集めた結果に変更します。 {{ic|Alt_R}} を {{ic|Super_L}} に再割り当てします: xmodmap -e "keycode 113 = Super_L" 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 のバーではフォントのサイズが 2px 追加されます。これを変更するには、{{ic|dwm.c}} の以下の行を変更してください: {{hc|dwm.c|2=bh = dc.h = dc.font.height + 2;}} === マウス追随フォーカスの無効化 === マウスの動作に従うフォーカスを無効にするには、構造体ハンドラーの定義内の次の行をコメントアウトします: {{hc|dwm.c|2=[EnterNotify] = enternotify, }} 非アクティブなウィンドウを最初にクリックすると、そのウィンドウにのみフォーカスが移動します。ウィンドウの内容(ボタン、フィールドなど)を操作するには、もう一度クリックする必要があります。また、複数のモニターを使用している場合、クリックしてもキーボードのフォーカスが他のモニターに切り替わらないことがあります。 === 特定のウィンドウをフロートさせる === 環境設定ダイアログのような一部のウィンドウでは、ウィンドウをタイル状にすることは意味がなく、代わりにフリーフローティングにすべきです。たとえば、Firefox の環境設定ダイアログをフロートさせるには、{{ic|config.h}} のルール配列に次のように追加します。: { "Firefox", NULL, "Firefox Preferences", 1 << 8, True, -1 }, === dwm での Tilda の使用 === [[Tilda]] はすべてのタグに追加され、フローティングに設定された場合に最もよく機能します。そのためには、{{ic|config.h}} の中のルール配列に以下を追加してください。 { "Tilda", NULL, NULL, 0, True, -1 }, {{ic|-C}} オプションを指定して tilda を起動します: $ 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 アプリケーションの挙動がおかしい問題の修正 === JRE 6u20 現在、[[Java]] から dwm がウィンドウマネージャとして認識されないために、dwm で Java アプリケーションの挙動がおかしくなることがあります。マウスを離したときにメニューが閉じてしまうなどの問題が確認されています。まず、{{Pkg|wmname}} パッケージをインストールしてください。 そして、''wmname'' を使って Java が認識する WM の名前を設定します: $ wmname LG3D {{Note|この設定を使うと Chromium など特定のプログラムをタイルにしたときに問題が起こることがあります。}} 上記の設定は永続的ではないため、上のコマンドを {{ic|.xinitrc}} や {{ic|.xprofile}} に追加してください。 もしくは、{{ic|/etc/profile.d/jre.sh}} で {{ic|1=export _JAVA_AWT_WM_NONREPARENTING=1}} を有効にする方法もあります。 === ターミナルウィンドウ周辺のギャップを修正する === ターミナルウィンドウの外側にデスクトップスペースの空きがある場合は、ターミナルのフォントサイズが原因である可能性があります。ギャップを埋める理想的なスケールが見つかるまでサイズを調整するか、{{ic|config.h}} で {{Ic|resizehints}} を ''0'' に切り替えます。 これにより、dwm は端末だけでなく、すべてのクライアントウィンドウからのサイズ変更要求を無視します。この回避策の欠点は、一部の端末で再描画の異常 (特にゴーストラインや早まったラインラップなど) が発生する可能性があることです。 または、 [[st]] ターミナルエミュレータを使用する場合は、 [https://st.suckless.org/patches/anysize/ anysize] パッチを適用して st を再コンパイルします。 == 参照 == * [http://dwm.suckless.org/ dwm の公式ウェブサイト] * [https://www.youtube.com/watch?v=GQ5s6T25jCc dwm ビデオの紹介] * [[dmenu]] - dwm の開発者が作ったシンプルなアプリケーションランチャー * [https://bbs.archlinux.org/viewtopic.php?id=57549/ dwm スレッド] フォーラム * [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 dwm 設定を公開するフォーラムスレッド] * [http://wongdev.com/blog/dwm-tags-are-not-workspaces/ dwm: Tags are not workspaces]
このページで使用されているテンプレート:
テンプレート:AUR
(
ソースを閲覧
)
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
Dwm
に戻る。
検索
検索
Dwmのソースを表示
話題を追加