2026年2月12日

FreeBSD 14.3 をインストールする (その 4): MangoWC / foot / Waybar / Fcitx5 / Anthy / Firefox

その 3 」からの続きです。Wayland のインストールまで済んでいるとして、今回は MangoWC (Wayland コンポジター)、foot (端末エミュレーター)、Waybar (タスクバー)、Fcitx5 (IM)、Anthy (かな漢字変換エンジン)、Firefox (ブラウザ)、あたりをやります。ここまでくれば「インフラも調ったし、これでようやく枝葉の部分に取りかかれるぜー」みたいな段階なのかなと思います。

(いきなり) 余談

その 3 」では Wayland のコンポジターとして Sway を入れてみたんですが、その後いろいろ試す中で MangoWC というのを使ってみることにしました。Sway は Awesome WM のような「マスター・スタック・レイアウト」にできないんですよね……。これは Sway の欠点というよりは、「どの領域も特別扱いしない」という Sway の設計思想に因るようです。その点は理にかなっていると思うので大いに賛同するところなんですが、いかんせん実用でいえば「マスター・スタック・レイアウト」に慣れきってしまっているわけで、それが可能なコンポジターを探したら MangoWC に行きついたという次第です。

まあ現代のコンポジターはだいたい /usr/local/share/wayland-sessions/ に *.desktop を作るようですし、現代のログインマネージャーはだいたいそこを見に行ってログイン時にコンポジターを選択できるようにしているみたいなので、気になるコンポジターがあったらどんどんインストールしてどんどん試してみればいいんじゃないかなと思います。

スクショ

今回の内容のとおりに設定すると、だいたいこんな感じになります。MangoWC に関してはほぼデフォルトのままなので、あとでもうちょい本腰入れて取り組みたいなあと思ってます。

図 1: fastfetch の出力が見切れてるのは<strong>気にしないでください</strong>
図 1: fastfetch の出力が見切れてるのは気にしないでください

MangoWC (Wayland コンポジター)

MangoWC は上にも書いたように「マスター・スタック・レイアウト」が可能なタイル型コンポジターです。似たような感じのコンポジターに Hyprland というのがありますが、MangoWC のほうが軽量みたいです (ちゃんと確認したわけじゃないけど)。それから、ウィンドウが増えたり減ったりしたときにアニメーションがあります。気が散りそうで嫌だったんですが、実際に見てみたら意外と悪くなかったです。切りたければ切ることもできるみたいです。

packages でインストール可能です。ついでに foot (端末エミュレーター) とフォントもインストールします。別に foot にこだわらなくてもいいんですが、MangoWC の設定ファイルがデフォルトで foot を使うようになっているので、そうしています。

# pkg install -y mangowc foot noto-basic noto-jp noto-emoji noto-extra

インストール時のメッセージにしたがって設定ファイルを作ります。

% mkdir -p ~/.config/mango
% cp /usr/local/etc/mango/config.conf ~/.config/mango

取り急ぎ次の 2 点だけ変更します。

  • 背景を単色の #2b2b2b (和色の「黒」だそうです) にする。
  • LCD の輝度調整。ここでは 20% にする (デフォルトは 100% なので目に優しくない)。
~/.config/mango/config.conf (差分)
@@ -117,7 +117,7 @@
 scratchpad_width_ratio=0.8
 scratchpad_height_ratio=0.9
 borderpx=4
-rootcolor=0x201b14ff
+rootcolor=0x2b2b2bff
 bordercolor=0x444444ff
 focuscolor=0xc9b890ff
 maximizescreencolor=0x89aa61ff
@@ -255,3 +257,8 @@
 # layer rule
 layerrule=animation_type_open:zoom,layer_name:rofi
 layerrule=animation_type_close:zoom,layer_name:rofi
+
+exec-once=backlight 20

基本的にはこれだけです。より詳細な設定については下記のサイトが参考になると思います。

あとは Ly などのログインマネージャーからログインすれば MangoWC が起動するはずです。

で、ここからは

みたいな事情がある場合の話です。ざっくりいうと MangoWC を起動したり終了したりするときにいろいろな処理を実行したいので、/usr/local/share/wayland-sessions/mango.desktop の Exec 行で自作のスクリプトを呼び出すというケースです。

スクリプトの本体は各ユーザーが ~/bin/start-session.sh に書くようにして、それを /usr/local/bin/start-session.sh から呼び出す形にしようと思います (ユーザー側でいろんな処理を書けるようにしとけばなにかと都合がいいかなと思ったので)。

まず /usr/local/bin/start-session.sh です。MangoWC 以外のコンポジターでも使い回せるように、コンポジターの実行ファイル名をコマンドライン引数で受け取るようにしています。エラー処理はサボってますけど大目に見てください。

/usr/local/bin/start-session.sh
#!/bin/sh

logger "start-session: $1"

usrscr="$HOME/bin/start-session.sh"

if [ -f "$usrscr" ]; then
    exec "$usrscr" "$1"
else
    exec "$1"
fi

次に、ユーザーごとの ~/bin/start-session.sh です。

~/bin/start-session.sh
#!/bin/sh

logger "$USER: start-session: $1"

reload() {
    if [ -f /var/run/keyd.pid ]; then
        sudo keyd reload
    fi
}

sudo /usr/local/bin/keyd-enable.sh
reload

$1

sudo /usr/local/bin/keyd-enable.sh disable
reload

両スクリプトを実行可能にしておきます。

# chmod +x /usr/local/bin/start-session.sh
% chmod +x ~/bin/start-session.sh

で、/usr/local/share/wayland-sessions/mango.desktop を次のように少し修正します。

/usr/local/share/wayland-sessions/mango.desktop (差分)
-Exec=mango
+Exec=/usr/local/bin/start-session.sh mango

さて、この状態で MangoWC を起動しても、#2b2b2b に設定した背景が画面いっぱいに広がっているだけで、初見だとどうしたらいいのかわからなくなると思います(笑) とりあえず Alt + Enter で foot が起動します。また、Super (Windows) キー + M で MangoWC を終了させてログインマネージャーに戻ることができます。

というわけで次は Alt + Enter で foot を起動して、foot の設定を行います。

foot の設定ファイルを用意します。

% mkdir -p ~/.config/foot/
% cp /usr/local/etc/xdg/foot/foot.ini ~/.config/foot/

ここでは次の 6 点を設定します (かっこ内はこのあと掲載する foot.ini の差分の行番号です)。

  1. フォントとフォントサイズの変更 (5 行目)
  2. カーソルを点滅させる (13 ~ 18 行目)
  3. 背景透過 (26 ~ 32 行目)
  4. 画面のフラッシュを無効にする? (33 行目)
  5. カラースキームの変更 (38 ~ 53 行目、56 ~ 71 行目)
  6. キーボードやマウス操作によるフォントサイズの変更を無効にする (79 ~ 84 行目、92 ~ 95 行目)

3 点目の背景透過については、MangoWC の背景として設定した色をそのまま foot の背景色にしたいという意図です。4 点目の画面フラッシュについては、効果はよくわかってないけどとりあえずやってみたって感じです。vi で ESC を押したときなどに画面がフラッシュするんですが、それを抑制したい場合に効果があるように見えます。5 点目のカラースキームについては、以前 rxvt-unicode で検討・作成したものをとりあえずそのまま設定します。詳細は過去記事を参照してください。

6 点目については、「フォントサイズは動的に変えられたほうがいいだろ」という考え方もあると思いますが、意図せずに変えてしまうのが嫌なので、こうしています。

具体的な修正箇所は次のとおりです。

~/.config/foot/foot.ini (差分)
@@ -9,6 +9,7 @@
 # locked-title=no

 # font=monospace:size=8
+font=Noto Sans Mono:size=12
 # font-bold=<bold variant of regular font>
 # font-italic=<italic variant of regular font>
 # font-bold-italic=<bold+italic variant of regular font>
@@ -88,9 +89,9 @@
 # regex-copy=[your-fancy-name] Control+Alt+Shift+q

 [cursor]
-# style=block
-# blink=no
-# blink-rate=500
+style=block
+blink=yes
+blink-rate=500
 # beam-thickness=1.5
 # underline-thickness=<font underline thickness>

@@ -102,34 +103,30 @@
 # long-press-delay=400

 [colors]
-# alpha=1.0
-# alpha-mode=default # Can be `default`, `matching` or `all`
-# background=242424
-# foreground=ffffff
-# flash=7f7f00
-# flash-alpha=0.5
+alpha=0.0
+flash-alpha=0.0

 # cursor=<inverse foreground/background>

 ## Normal/regular colors (color palette 0-7)
-# regular0=242424  # black
-# regular1=f62b5a  # red
-# regular2=47b413  # green
-# regular3=e3c401  # yellow
-# regular4=24acd4  # blue
-# regular5=f2affd  # magenta
-# regular6=13c299  # cyan
-# regular7=e6e6e6  # white
+regular0=0d0015  # black
+regular1=a25768  # red
+regular2=82ae46  # green
+regular3=f08300  # yellow
+regular4=455765  # blue
+regular5=68699b  # magenta
+regular6=008899  # cyan
+regular7=9fa0a0  # white

 ## Bright colors (color palette 8-15)
-# bright0=616161   # bright black
-# bright1=ff4d51   # bright red
-# bright2=35d450   # bright green
-# bright3=e9e836   # bright yellow
-# bright4=5dc5f8   # bright blue
-# bright5=feabf2   # bright magenta
-# bright6=24dfc4   # bright cyan
-# bright7=ffffff   # bright white
+bright0=2b2b2b   # bright black
+bright1=ee827c   # bright red
+bright2=93ca76   # bright green
+bright3=f7c114   # bright yellow
+bright4=53727d   # bright blue
+bright5=a59aca   # bright magenta
+bright6=59b9c6   # bright cyan
+bright7=f7fcfe   # bright white

 ## dimmed colors (see foot.ini(5) man page)
 # dim-blend-towards=black
@@ -202,9 +199,9 @@
 # clipboard-paste=Control+Shift+v XF86Paste
 # primary-paste=Shift+Insert
 # search-start=Control+Shift+r
-# font-increase=Control+plus Control+equal Control+KP_Add
-# font-decrease=Control+minus Control+KP_Subtract
-# font-reset=Control+0 Control+KP_0
+font-increase=none
+font-decrease=none
+font-reset=none
 # spawn-terminal=Control+Shift+n
 # minimize=none
 # maximize=none
@@ -272,8 +269,8 @@
 [mouse-bindings]
 # scrollback-up-mouse=BTN_WHEEL_BACK
 # scrollback-down-mouse=BTN_WHEEL_FORWARD
-# font-increase=Control+BTN_WHEEL_BACK
-# font-decrease=Control+BTN_WHEEL_FORWARD
+font-increase=none
+font-decrease=none
 # selection-override-modifiers=Shift
 # primary-paste=BTN_MIDDLE
 # select-begin=BTN_LEFT

Waybar (タスクバー)

Waybar は Windows のタスクバーに相当するソフトウェアです。

Waybar のインストール

ネットで他の方のスクリーンショットをいろいろ眺めると、とても多彩な機能があるみたいで目移りしてしまうんですが、とりあえず

  • ワークスペース (MangoWC では「タグ」と呼ぶようです) のセレクター
  • 日付と時刻の表示
  • バッテリー残量表示
  • IME の状態表示
  • 電源ボタン

あたりがほしいです。これらに必要なツールと Waybar 本体を packages からインストールします。

# pkg install -y waybar nerd-fonts wlogout swaylock

Waybar の設定

設定は、MangoWC の作者ご本人が公開されているものをベースとして使わせていただくことにします。

これをクローンして cool というディレクトリの下にある config.jsonc、nord.css、style.css を ~/.config/mango/ にコピーします (単純にコピーすると何の設定ファイルかわからなくなるので、必要に応じて「waybar-」みたいなプレフィックスを付けるのがよいと思います)。なお、battery_menu.xml というファイルは今回は使いません。

% git clone https://github.com/DreamMaoMao/waybar-config.git
% cd waybar-config/cool/
% ls
battery_menu.xml    config.jsonc    nord.css    style.css
% cp config.jsonc ~/.config/mango/waybar-config.jsonc
% cp style.css ~/.config/mango/waybar-style.css
% cp nord.css ~/.config/mango

で、コピーした waybar-config.jsonc を自分の好みに合わせて修正します。

~/.config/mango/waybar-config.jsonc
// -*- mode: jsonc -*-
{
    "layer": "top",
    "position": "top",
    "exclusive": true,
    "passthrough": false,
    "ipc": false,
    "height": 25,
    "margin": "0",
    "modules-left": [
        "dwl/tags",
        "dwl/window"
    ],
    "modules-center": [
    ],
    "modules-right": [
        "clock",
        "battery",
        "tray",
        "custom/power"
    ],
    // Modules configuration
    "dwl/tags": {
        "num-tags": 9,
        "hide-vacant": true,
        "expand": true,
        "disable-click": false,
        "tag-labels": [],
    },
    "dwl/window": {
        "format": "{app_id} | {title}",
        "max-length": 50,
        "rewrite": {
            " \\| ": ""
        }
    },
    "tray": {
        "icon-size": 21,
        "spacing": 10
    },
    "clock": {
        "format": "󰥔 {:%Y/%m/%d %H:%M}"    // Nerd Font U+F0954 (clock)
    },
    "battery": {
        "format": "{icon} {capacity}%",
        "format-icons": ["󰂎", "󰁻", "󰁽", "󰁿", "󰂁", "󰁹"]    // Nerd Font U+F008E,F007B,F007D,F007F,F0081,F0079 (battery)
    },
    "custom/power": {
        "format" : "⏻",    // Unicode POWER SYMBOL
        "tooltip": false,
        "on-click": "wlogout -l ~/.config/mango/wlogout-layout -C ~/.config/mango/wlogout-style.css"
    }
}

注意点として、オリジナルの cool/config.jsonc が使用している音量調整モジュール (pulseaudio) は Waybar の起動を著しく遅らせるようです (私の環境だけかもしれませんが)。Waybar の起動が遅い場合は、これを疑ってみてください。また、custom/power モジュールから呼び出す wlogout については個別にもうちょっと設定が必要です (次節参照)。

それから CSS ファイルも少し修正します。デフォルトでは空っぽのタグを非表示にするスタイルが適用されていますが、空かどうかに関係なくすべてのタグを表示するようにしたいので、当該箇所を削除します。また、タグボタンどうしの間のスペースが開きすぎているように感じるので、ちょっと調整します。

~/.config/mango/waybar-style.css (差分)
@@ -29,20 +29,8 @@
 }

 #tags button {
-  padding: 0 0.8rem; /*More horizontal padding for text */
+  padding: 0 0.4rem; /*More horizontal padding for text */
   font-weight: normal;
-}
-
-#tags button:not(.occupied):not(.focused) {
-  font-size: 0;
-  min-width: 0;
-  padding: 0;
-  margin: -50px;
-  color: transparent;
-  background-color: transparent;
-  box-shadow: none;
-  outline: none;
-  transition: none;
 }

 #tags button.occupied {

wlogout の設定

wlogout は Windows のシャットダウンメニューのようなことができるソフトウェアです。次の動作をさせることができます。

  • 画面ロック (Swaylock を使用)
  • ログアウト
  • サスペンド (スリープ)
  • ハイバネート (休止)
  • シャットダウン
  • 再起動

設定ファイルは例によって /usr/local/etc/wlogout からコピーします。waybar-config.jsonc の 52 行目に指定したパスに置きます。

% cp /usr/local/etc/wlogout/layout ~/.config/mango/wlogout-layout
% cp /usr/local/etc/wlogout/style.css ~/.config/mango/wlogout-style.css

ここでは次の 2 点を修正します。

  • 画面ロック時の背景色を #1f3134 (和色の「百入茶 (ももしおちゃ)」だそうです) にする。
  • ログアウト時のコマンドを mmsg -q にする。

mmsg -q は外部から MangoWC を終了させるためのコマンドです。具体的な修正箇所は次のとおりです。

~/.config/mango/wlogout-layout
@@ -1,6 +1,6 @@
 {
     "label" : "lock",
-    "action" : "swaylock",
+    "action" : "swaylock -c 1f3134",
     "text" : "Lock",
     "keybind" : "l"
 }
@@ -12,7 +12,7 @@
 }
 {
     "label" : "logout",
-    "action" : "kill -9 -1",
+    "action" : "mmsg -q",
     "text" : "Logout",
     "keybind" : "e"
 }

CSS は特に変更しません。ちなみに、この状態で画面ロック (Swaylock) が発動すると、#1f3134 に設定した背景が画面いっぱいに広がっているだけで、初見だとどうしたらいいのかわからなくなると思います(笑) 元の画面に復帰するには、この状態でログインパスワードを入力します。キーボードから何かしら入力すれば、画面中央にインジケーターが出現し、パスワードが一致したとかしなかったとかがわかるようになっています。

仕上げ

最後に、MangoWC の設定ファイルに次の 1 行を追加します。

~/.config/mango/config.conf
exec-once=waybar -c ~/.config/mango/waybar-config.jsonc -s ~/.config/mango/waybar-style.css > /dev/null 2>&1

Fcitx5 (IM) と Anthy (かな漢字変換エンジン)

日本語を入力できるようにします。設定はデフォルトのままでもけっこう使えると思います (特に Anthy はほぼほぼ Emacs ライクなキーバインドが設定されているので助かる) が、次の点だけ私の都合に合わせて修正しようと思います。

  • IM のオン / オフを Ctrl + バックスラッシュにアサインする。
  • かな漢字変換時、[次の候補に移動] を Ctrl + N にアサインする。
  • 同、[前の候補に移動] を Ctrl + P にアサインする。
  • 同、[次のページへ] を Ctrl + U にアサインする。
  • 同、[前のページへ] を Ctrl + V にアサインする。

インストールと初期設定

例によって必要なツールはすべて packages からインストールすることができます。

# pkg install -y fcitx5 fcitx5-configtool ja-fcitx5-anthy

そして環境変数を ~/.zprofile などに設定します。

~/.zprofile
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export SDL_IM_MODULE=fcitx
export XMODIFIERS='@im=fcitx'

SDL_IM_MODULE というのはあまり見かけない気がしますが、ChatGPT に勧められたので入れています。不要かもしれません。で、~/.config/mango/config.conf に Fcitx5 を起動するための設定を追加します。

~/.config/mango/config.conf
exec-once=dbus-launch --sh-syntax --exit-with-session > /dev/null
exec-once=fcitx5 -r -d 2> ~/log/fcitx5.log

1 行目は fcitx5-configtool の起動時に「DBusがFcitxと接続できませんでした。Fcitxは動いていますか?」とエラーらしきものが表示される問題の対策です。一応情報源は下記のサイトなんですけど、この問題とは別件かもしれません。

ここまで来れば、Ctrl + Space で IM をオン / オフすることができるようになります。

Fcitx5 の設定

Emacs で Canna を使っていた人は (それとも Wnn だったっけ?)、Ctrl + バックスラッシュでのオン / オフのほうが馴染みがあるんじゃないかと思います。GUI の設定ツールで変更できます。

% fcitx5-configtool &

[グローバルオプション] > [ホットキー] > [入力メソッドの切り替え] のところの [Control+スペース] ボタンをクリックして Ctrl キーとバックスラッシュキーを入力すれば、設定を上書きすることができます (図 2)。

図 2: 「入力メソッドの切り替え」を変更
図 2: 「入力メソッドの切り替え」を変更

あるいは右端にある追加ボタンをクリックすれば、デフォルトの Ctrl + Space を残したままキーバインドを追加することもできます。

あとは右下の [適用] をクリックして画面を閉じます。

Anthy の設定

これも fcitx5-configtool から設定することができます。[アドオン] タブ > [入力メソッド] > [Anthy] > [設定] ボタンを押して (図 3)、表示されたダイアログを次のように設定しました。

  • [全般] > [スペースタイプ]: ハーフ (常に半角スペースを使う) (図 4)
  • [キー] > [次の候補に移動]: 右端の追加ボタンをクリックして、Ctrl + N を追加する (図 5)。
  • 同様にして [前の候補に移動]、[次のページへ]、[前のページへ] にそれぞれ Ctrl + P、Ctrl + U、Ctrl + V をアサインする (図 5)。
図 3: Anthy の設定ダイアログへ
図 3: Anthy の設定ダイアログへ
図 4: 半角スペースの設定
図 4: 半角スペースの設定
図 5: キーバインドの追加
図 5: キーバインドの追加

Firefox (ブラウザ)

Firefox のインストールも特に難しいことはなく、packages からインストールすることができます。

# pkg install -y firefox

設定は以前別の記事に書いたことがありますが、だいぶん前の話なので現在では事情が異なるかもしれません。暇なときに見直したいと思います。

関連記事