前段
以前のエントリで mockbuildによるdwmのインストールを紹介したが、 非常にビルド時間がかかる上にバージョン管理も何かと面倒になってしまうことから、 結局mockbuildは使わず直接ソースビルドする簡略方式にした。 また、Fedoraのパッケージで提供されているバージョンは最新ver6.2でなくver6.1であり、 公式に公開されているパッチがほとんど使えなかった事も、 ソースビルドに移行する理由の一つだった。
ソースビルドとなると依存関係が心配だったが、流石コード量の少なさが売りのdwm。 どうやらほとんど依存関係がないらしく、 gitから取得して単純にmakeするだけで何事もなく実行ファイルが生成された。 また、ビルドにかかる時間も1秒弱と極めて速い。 恐らく、これが製作者の想定している本来の姿だと思われる。
スクリーンショット
ステータスバーの出力内容
以下の内容をxsetrootで5秒ごとに設定して出力させている。
(待ち時間を含めると出力に2秒ほどかかるため)
#!/bin/bash # ステータスバー用の文字列を生成するプログラム # 日時 LOCALTIME=$(/usr/bin/date '+%Y年%m月%d日(%a) %H:%M') # CPUコア数 (マルチスレッディングによる仮想コアを含む) CPU_CORENUM=$(/usr/bin/lscpu | /usr/bin/awk '/^CPU:/ {print $2}') # CPU使用率 (1文字=1コアで、パーセント表記のうち10の位のみ表示。100%の場合"X"とする。) CPU_USAGE=$(/usr/bin/mpstat -P ALL 1 1 | /usr/bin/tail -n ${CPU_CORENUM} | /usr/bin/awk '{u=10-int($12/10); printf 10<=u?"X":u}') # メモリ使用量 MEM_INFO=$(/usr/bin/free | /usr/bin/awk '/Mem/ {printf "%.1f/%.1f G",($2-$7)/2^20,$2/2^20}') # GPU/CPU温度 TEMP_INFO=$(/usr/bin/sensors | /usr/bin/awk '/temp1:/ {printf "GPU:%.1f/",$2}; /Tdie:/ {printf "CPU:%.1f °C",$2}') # ネットワーク速度 (秒間トラフィック量から自前計測) NETWORK_IF=enp34s0 NETBUF1=$(/usr/bin/awk '/'${NETWORK_IF}':/ {print $2,$10}' /proc/net/dev) sleep 1s NETBUF2=$(/usr/bin/awk '/'${NETWORK_IF}':/ {print $2,$10}' /proc/net/dev) NET_SPEED=$(echo ${NETBUF1} ${NETBUF2} | /usr/bin/awk '{printf "Tx:%3d/Rx:%3d kB",($4-$2)/2^10,($3-$1)/2^10}') # 出力実行 echo "| ${NET_SPEED} | ${MEM_INFO} | ${TEMP_INFO} | ${CPU_CORENUM}t:${CPU_USAGE} | ${LOCALTIME} "
必要パッケージ
使用プログラム インストールコマンド /usr/bin/sensors dnf install lm_sensors /usr/bin/mpstat dnf install sysstat
dwmに適用したパッチ
全て公式サイトから取得している。
- awesomebar
タイトルバーがタスクバーのように全ウィンドウ表示&マウスでフォーカス操作できるようなるパッチ。 グループ化などはできないが一覧性はかなり向上し、全画面モードでもマウスで操作できるようになる。
https://dwm.suckless.org/patches/awesomebar/ - float border color
フローティングウィンドウの枠色を変更するパッチ。 スクリーンショットで画面枠がピンク色になっている箇所が該当。
実際はフローティングを使うことはほとんど無いのだが、不意になってしまうことが稀にあり混乱するために導入した。 フォーカスを当てないと色が変わらず判別できないことが多少不満ではあるが、効果は割と高い。
https://dwm.suckless.org/patches/float_border_color/
後段
なお、Fedoraパッケージには起動時に自動で差分確認してビルド→インストールまでやってくれるようになるという、dwm-userというパッケージもある…のだが。
『起動時ビルドに失敗した場合、黒画面のまま何もできず電源ボタン直押しでシャットダウンしなければならない』
という凄まじいトラップがあるため、 結局ビルド確認してから再起動するのが安定となってしまいあまり意味はなかった…。 パッケージ内のスクリプトなどは一部参考にしている。スクリーンショットの取得にはflameshotを使用している。
スクリーンショットの取得と画像編集も可能なFlameshotをUbuntuにインストールする手順と簡単な使い方
参考サイト
- dwmで使えるステータスバー紹介。ネットワーク関係はほぼそのまま利用している。 (英語)
Ultra tuning of dwm status bar – Computer Learning