「Dwm」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎参照: 翻訳)
(→‎インストール: 記事を差し替え)
16行目: 16行目:
 
== インストール ==
 
== インストール ==
   
  +
dwm のインストール方法は、以下のように定められています。
[https://git.suckless.org/dwm/ オフィシャル git リポ] をクローンして {{ic|make}} を実行し、{{ic|make install}} で dwm をインストールします。 dwm は AUR パッケージ {{AUR|dwm}} や {{AUR|dwm-git}} でインストールすることも可能です。ビルドとインストールの前に '''設定''' を変更してください、[[makepkg]] を見て下さい。
 
  +
  +
$ git clone git://git.suckless.org/dwm
  +
$ cd dwm
  +
$ make
  +
# make install
  +
  +
dwm は AUR パッケージ {{AUR|dwm}} や {{AUR|dwm-git}} でインストールすることも可能です。ビルドとインストールの前に '''設定''' を変更してください。[[makepkg]] を見て下さい。
   
 
=== 設定 ===
 
=== 設定 ===

2022年7月26日 (火) 10:38時点における版

関連記事

dwmXorg の動的ウィンドウマネージャです。タイル・スタック・フルスクリーンレイアウトでウィンドウを管理し、さらにパッチを使うことで他のレイアウトも利用できます。レイアウトは動的に適用することができるため、アプリケーションを使用する環境と作業を最適化することが可能です。dwm はきわめて軽量かつ高速であり、C で書かれていてソースコードの行数を2000行以下から増やさないという設計目標を掲げています。xrandr や Xinerama によるマルチディスプレイもサポートしています。

インストール

dwm のインストール方法は、以下のように定められています。

$ git clone git://git.suckless.org/dwm
$ cd dwm
$ make
# make install

dwm は AUR パッケージ dwmAURdwm-gitAUR でインストールすることも可能です。ビルドとインストールの前に 設定 を変更してください。makepkg を見て下さい。

設定

dwm はコンパイル時にいくつかのソースファイル、特に config.h を編集することで設定します。これらの設定に関する詳細な情報は、同梱され、コメントが付いています。 config.def.h と、 dwm のウェブサイトの customisation section を参照してください。

公式サイトには、dwm に機能を追加するための パッチが多数あります。これらのパッチは主に dwm.c ファイルを変更するものですが、必要に応じて config.h ファイルも変更されます。パッチの適用に関する情報は、パッケージにパッチを適用 の記事を参照してください。

dwm の起動

任意のディスプレイマネージャのメニューから Dwm を選択します。あるいは、startx で dwm を起動するには、 exec dwm~/.xinitrc に追加し、他のプログラムも同様に実行するように前置きします、例えば、以下のようにします。

redshift -O3500; xset r rate 300 50; exec dwm

使い方

dwm の基本的な使い方については、dwm チュートリアルを参照してください。

ヒントとテクニック

ステータスバーの設定

ノート: 以下の設定を使うには xorg-xsetroot パッケージのインストールが必要です。

Dwm はルートウィンドウの名前を読み取ってステータスバーに送信します。ルートウィンドウは他の全てのウィンドウが描画されるウィンドウで、ウィンドウマネージャによって作成されます。他のウィンドウと同じように、ルートウィンドウにもタイトル/名前が存在しますが、ルートウィンドウはバックグラウンドで動作するため基本的に名前は定義されていません。

dwm のステータスバーに表示したい情報は ~/.xinitrc や (ディスプレイマネージャを使っている場合) ~/.xprofilexsetroot -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

上記の場合 ISO 8601 形式で日付が表示され、起動時に PCManFM が実行されます。

ノート: 更新間隔をゼロに等しくしたり、"sleep" 行を完全に削除することは、CPU 使用率を大幅に上昇させるので推奨されません (その効果は toppowertop で観察して下さい)

ステータスバーのサンプルは suckless wiki にあります。

Conky ステータスバー

xsetroot -name を使うことでステータスバーに Conky を出力することができます:

(conky | while read LINE; do xsetroot -name "$LINE"; done) &
exec dwm

この場合、コンソールにテキストを出力するように 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 (Windows キー) として使う

Mod4(スーパー/ウィンドウズキー)を MODKEY として使用する場合、右 Alt キー (Alt_R) を Mod4 として使用すると、同様に便利な場合があります。これにより、Alt_R+Enter でズームするような、片手で操作しにくいキー操作を行うことができるようになります。

まず、Alt_R に割り当てられているキーコードを確認してください:

xmodmap -pke | grep Alt_R

次に、スタートアップスクリプト (例:~/.xinitrc) に以下を追加します。必要ならキーコード 113 を前の 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

そうすると、Super_L キーが押されたときに起動する関数も Alt_R キーが押されたときに起動するようになります。

ノート: config.h の #define オプションで modkey を切り替えることができます。

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"

link blog

dwm のバーのフォントの周りの空白

デフォルトでは、dwm のバーではフォントのサイズが 2px 追加されます。これを変更するには、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

これらの設定を ~/.config/tilda/config_0 で行った後の設定は以下のようになります。

tilda_config_version = "0.9.6"
# image = ""
# command = ""
font = "Clean 9"
key = "F9"
title = "Tilda"
background_color = "white"
# working_dir = ""
web_browser = "firefox"
lines = 2000
max_width = 956
max_height = 384
min_width = 1
min_height = 1
transparency = 15
x_pos = 205
y_pos = 1
tab_pos = 0
backspace_key = 0
delete_key = 1
d_set_title = 3
command_exit = 2
scheme = 1
slide_sleep_usec = 1500
animation_orientation = 0
scrollbar_pos = 0
back_red = 0
back_green = 0
back_blue = 0
text_red = 0
text_green = 65535
text_blue = 0
scroll_background = true
scroll_on_output = false
notebook_border = false
antialias = true
scrollbar = false
use_image = false
grab_focus = true
above = true
notaskbar = true
bold = true
blinks = true
scroll_on_key = true
bell = false
run_command = false
pinned = true
animation = true
hidden = true
centered_horizontally = true
centered_vertically = false
enable_transparency = true
double_buffer = false

プルダウンアニメーションを有効にしないと、Tilda は非表示にするたびに下にジャンプしてしまいます。

トラブルシューティング

Java アプリケーションの挙動がおかしい問題の修正

JRE 6u20 現在、Java から dwm がウィンドウマネージャとして認識されないために、dwm で Java アプリケーションの挙動がおかしくなることがあります。マウスを離したときにメニューが閉じてしまうなどの問題が確認されています。まず、wmname パッケージをインストールしてください。

そして、wmname を使って Java が認識する WM の名前を設定します:

$ wmname LG3D
ノート: この設定を使うと Chromium など特定のプログラムをタイルにしたときに問題が起こることがあります。

上記の設定は永続的ではないため、上のコマンドを .xinitrc.xprofile に追加してください。

もしくは、/etc/profile.d/jre.shexport _JAVA_AWT_WM_NONREPARENTING=1 を有効にする方法もあります。

ターミナルウィンドウ周辺のギャップを修正する

ターミナルウィンドウの外側にデスクトップスペースの空きがある場合は、ターミナルのフォントサイズが原因である可能性があります。ギャップを埋める理想的なスケールが見つかるまでサイズを調整するか、config.hresizehints0 に切り替えます。

これにより、dwm は端末だけでなく、すべてのクライアントウィンドウからのサイズ変更要求を無視します。この回避策の欠点は、一部の端末で再描画の異常 (特にゴーストラインや早まったラインラップなど) が発生する可能性があることです。

または、 st ターミナルエミュレータを使用する場合は、 anysize パッチを適用して st を再コンパイルします。

既知の問題点

一部のフォントで絵文字を使用するとクラッシュします

タイトルバーに絵文字を使用すると、以下のようなエラーで dwm がクラッシュすることがあります。

dwm: fatal error: request code=140, error code=16
X Error of failed request: BadLength (poly request too large or internal Xlib length error)
  Major opcode of failed request: 140 (RENDER)
  Minor opcode of failed request: 20 (RenderAddGlyphs)
  Serial number of failed request: 4319
  Current serial number in output stream: 4331

これは noto-fonts-emojibdf-unifont など、一部のフォントでのみ発生します。https://lists.suckless.org/dev/1608/30245.html], [1], [2], [3], およびアップストリームのバグレポート [4] を参照してください。回避策としては、別のフォントを使うか、[5] のパッチが考えられます。

上流での修正が提案されています [6]が、この文章を書いている時点ではまだマージされていません。libXft のパッチが適用され、クラッシュせずに絵文字を表示するようになったバージョンについては libxft-bgraAURlib32-libxft-bgraAUR を見て下さい。

参照