sway - 共通事項 - バー・メニュー - Manjaro

 クラウディア
1. 概要
2. インストール
3. バー設定
4. メニュー設定

1. 概要

 「Manjaro」では、デフォルトで「rofi」というメニューが設定してあります。  パネルの左上のスタートアイコンと思しきものをクリックすると中央に表示されます。
「sway Manjaro 22.0」-「デフォルトのメニュー」

 他と同様、メニューは、「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 キーを押さないと消えないのが少し面倒かな。
ハイスピードプランJETBOYそれがだいじWi-Fi