dwmのステータスバーなどをカスタマイズ

前段

以前のエントリで mockbuildによるdwmのインストールを紹介したが、 非常にビルド時間がかかる上にバージョン管理も何かと面倒になってしまうことから、 結局mockbuildは使わず直接ソースビルドする簡略方式にした。 また、Fedoraのパッケージで提供されているバージョンは最新ver6.2でなくver6.1であり、 公式に公開されているパッチがほとんど使えなかった事も、 ソースビルドに移行する理由の一つだった。

ソースビルドとなると依存関係が心配だったが、流石コード量の少なさが売りのdwm。 どうやらほとんど依存関係がないらしく、 gitから取得して単純にmakeするだけで何事もなく実行ファイルが生成された。 また、ビルドにかかる時間も1秒弱と極めて速い。 恐らく、これが製作者の想定している本来の姿だと思われる。

スクリーンショット

f:id:fuha:20191102193829p:plain

ステータスバーの出力内容

以下の内容を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/

後段

参考サイト