他と同様、メニューは、「jgmenu」、アイコンは「papirus」を使用することにします。
2. インストール
「root」ユーザ権限で。
yes | pacman -S jgmenu papirus-icon-theme
以前は、この後、ログインユーザで、「jgmenu_run init」して、コンフィグレーションファイルを作成していましたが、今は、コンフィグレーションファイルは直接書きます(2023年1月25日)。
3. バー設定
バーには「waybar」を使用しているようですが、ちょっと込み入っている。
「/etc/sway/config.d/96-waybar-config.conf」の
swaybar_command /usr/share/sway/scripts/waybar.sh
position $waybar_position
で起動を定義しているようなのですが、「swaybar_command」の定義がどこに組み込まれているかよくわかりませぬな。
「/usr/share/sway/scripts/waybar.sh」の中身は
#!/bin/sh
# wrapper script for waybar with args, see https://github.com/swaywm/sway/issues/5724
USER_CONFIG_PATH=$HOME/.config/waybar/config.jsonc
USER_STYLE_PATH=$HOME/.config/waybar/style.css
if [ -f $USER_CONFIG_PATH ]; then
USER_CONFIG=$USER_CONFIG_PATH
fi
if [ -f $USER_STYLE_PATH ]; then
USER_STYLE=$USER_STYLE_PATH
fi
waybar -c ${USER_CONFIG:-"/usr/share/sway/templates/waybar/config.jsonc"} -s ${USER_STYLE:-"/usr/share/sway/templates/waybar/style.css"} &
となっておりますな。
その結果、ログイン後
waybar -c /usr/share/sway/templates/waybar/config.jsonc -s /usr/share/sway/templates/waybar/style.css
として起動されています。
自前の定義を有効にすれば、そちらを読んでくれるようです。
以下。ログインユーザで。
当初、自前の定義を有効にと
cp ~/.config/waybar/config.jsonc.example ~/.config/waybar/config.jsonc
cp ~/.config/waybar/style.css.example ~/.config/waybar/style.css
これで、mod+Shift+c で、「sway」を再起動してやれば、「waybar」が
waybar -c /home/hogehoge/.config/waybar/config.jsonc -s /home/hogehoge/.config/waybar/style.css
で、起動されています(「hogehoge」は、ユーザ名)。
ただし「~/.config/waybar/style.css」と「~/.config/waybar/config.jsonc」との中身は、それぞれ
@import "/usr/share/sway/templates/waybar/style.css";
{
"include": [
"/usr/share/sway/templates/waybar/config.jsonc"
]
}
と「/usr/share/sway/templates/waybar」のものをインクルード(あるいは、インポート)しているだけなので、編集するためには、改めて
cp /usr/share/sway/templates/waybar/config.jsonc ~/.config/waybar/config.jsonc
cp /usr/share/sway/templates/waybar/style.css ~/.config/waybar/style.css
して、「sway」を再起動します。
「waybar」のフォントを変更します。
vi ~/.config/waybar/style.css
/* Reset all styles */
* {
border: none;
border-radius: 0;
min-height: 0;
margin: 0;
padding: 0;
font-family: "RobotoMono Nerd Font", "Roboto Mono", sans-serif;
}
48、49行を下記へ変更します。
font-family: "MigMix 1M", "RobotoMono Nerd Font", "Roboto Mono", sans-serif;
「nwg-drawer」を「jgmenu」と置き換えます。
vi ~/.config/waybar/config.jsonc
"custom/menu": {
"format": "? ",
"on-click": "swaymsg exec \\$menu",
"tooltip": false
},
おそらく「$menu」で定義しているものが、「rofi」なんですが、この定義がどこにあるかは、も~しんどくて探すの諦めました。
172行目を下記へ書き換えます。
"on-click": "swaymsg exec jgmenu_run",
「sway」をリロード(mod+Shift+c)すれば、「rofi」の代わりに「jgmenu」が、有効になっているはずです。
4. メニュー設定
ログインユーザで。
「jgmenu」のデザインをカスタマイズして、終了メニューを加えます。
mkdir -pv ~/.config/jgmenu
sh
cat << 'EOF' >> ~/.config/jgmenu/jgmenurc
menu_margin_x = 20
menu_margin_y = 40
menu_valign = top
item_height = 22
font = MigMix 1M bold 9
icon_theme = Papirus
color_sel_bg = #ffffff 40
csv_name_format = %n
EOF
cat << 'EOF' >> ~/.config/jgmenu/append.csv
^sep()
ログアウト,pkill sway,system-log-out
再起動,sudo /sbin/reboot,system-reboot
シャットダウン,sudo /sbin/poweroff,system-shutdown
EOF
exit
「/sbin/reboot」「/sbin/poweroff」は、「visudo」でパスワードなしで、ログインユーザが実行できるようにしておく必要があります。
「jgmenu」を表示した状態で、「あ、やめた」ってなったとき、メニューを消すのに、ESC キーを押さないと消えないのが少し面倒かな。