🤖

FreeBSD 14.1 + Wayland + Swayインストール、日本語入力環境Fcitx5 + Anthy

2024/11/27に公開

はじめに

FreeBSDでSwayオンリー環境を作ってみました。Xfce4などのデスクトップ環境を保険に使わず、コンソールでごりごり設定ファイルをいじる練習です。

この環境でやろうとしていること

  • Webブラウジング
  • YouTube視聴

この環境でやらない(できない?)こと

できないことはない?らしいのですが、以下のことは諦めます。
GhostBSDだと、現行版で、ネトフリ等が見られるChromiumのビルドができるらしいのですが…

GhostBSD 24.10.1 Is Now Available

  • アマプラやAbema等の配信動画視聴
  • Steam(ゲーム)
  • VirtualBox等の仮想ソフトウェア使用

あとBluetooth設定がちょっと難しそう。

インストール対象

Panasonic CF-SZ6

第7世代Core i5のマシンです。

インストールメディアの準備

公式からISOファイルをダウンロードします。

Linuxで作業をする前提でお話しすると

FreeBSD-14.1-RELEASE-amd64-disc1.iso はUNetbootinやVentoyなど、
FreeBSD-14.1-RELEASE-amd64-memstick.img はddコマンドを使ってUSBメモリに書き込みます。

FreeBSDのインストール

基本的にハンドブックを見ながら進めて良いと思いますが、いくつか注意点があります。

なお、ハンドブックの日本語版は情報が古いと見られる部分があるため、英語版に基づいて作業しました。

ディスク領域の割り当て

ハンドブックの説明の画面では、「AUTO (UFS)」を選択します。
ZFSはWaylandと相性が良くないようです。

ネットワークインターフェース設定

ノートPCなので、無線LANを選択しました。

Regdomain(ワイヤレス規制ドメイン)が合っていなかったので、手動で「JAPAN」→「JP」(または「J2」でも動作しました)に設定しました。

パッケージのインストール

sudo, bash

# pkg install sudo bash bash-completion

visudoコマンドでsudoersファイルを編集し、wheelグループに管理者権限を付与。

# visudo
## sudoers file.
(略)
- # %wheel ALL=(ALL:ALL) ALL
+ %wheel ALL=(ALL:ALL) ALL

インストール時にユーザーをwheelグループへ追加していなかった場合は、この辺で追加してしまいましょう。

# pw groupmod wheel -m USERNAME

シェルをbashに変更

# chsh -s “$(which bash)" USERNAME

bash-completionを設定。

~/.bashrc
# Use bash-completion, if available
[[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && \
    . /usr/share/bash-completion/bash_completion

rootからログアウトし、ユーザーでログイン。

基本ツール

$ sudo pkg install vim nano neovim git curl wget zip unzip htop neofetch fastfetch xdg-user-dirs

ディレクトリ名補完時に大文字小文字を無視する設定。

~/.inputrc
set completion-ignore-case on

グラフィックドライバ

ハンドブックのX.org編を参照。

以下はintelの場合です。

$ sudo pkg install drm-kmod

ビデオアクセラレータやコーデックもあるので入れました(情報をどこで見かけたか忘れました…)。

$ sudo pkg install libva-intel-driver libva-utils openh264

Wayland, Sway, その他ツール

$ sudo pkg install wayland seatd xwayland
$ sudo pkg install sway swayidle swaylock-effects waybar foot wofi mako thunar xarchiver pavucontrol alsa-utils networkmgr

スクリーンショットを撮るためのアプリも入れます。

$ sudo pkg install grim slurp swappy

フォント、日本語IME

fcitx5-mozcはFreeBSDパッケージにないので、fcitx5-anthyを使っています。

$ sudo pkg install xorg-fonts noto-basic noto-jp noto-emoji noto-extra fcitx5 fcitx5-configtool ja-fcitx5-anthy

ブラウザ等

FireFoxの他はお好みで。

$ sudo pkg install firefox openshot obs-studio

設定ファイルの編集

seatdの有効化

$ sudo sysrc seatd_enable="YES"

グラフィックドライバの有効化

$ sudo sysrc kld_list+=i915kms
$ sudo pw groupmod video -m USERNAME

メッセージサイズの拡張(これ要るかな?)

ハンドブックのデスクトップ環境編のKDEパートを参考にしました。
この設定は必須ではないかもしれません。

$ sudo sysctl net.local.stream.recvspace=65536
$ sudo sysctl net.local.stream.sendspace=65536

Fcitx5用の環境変数

ArchLinuxをいじったことのある人にはお馴染みの「おまじない」です。

$ mkdir ~/.config/environment.d
~/.config/environment.d/im.conf
XMODIFIERS='@im=fcitx'

Waylandオンリー環境のため、GTK_IM_MODULE,QT_IM_MODULEの設定は行いません。

Sway関連設定ファイル

~/.config ディレクトリ下に、サンプル設定ファイルをコピーしてきます。

$ mkdir ~/.config/sway
$ cp /usr/local/etc/sway/config ~/.config/sway/
$ mkdir ~/.config/sway/config.d/
$ mkdir ~/.config/foot
$ cp /usr/local/etc/xdg/foot/foot.ini ~/.config/foot/
$ mkdir ~/.config/waybar
$ cp /usr/local/etc/xdg/waybar/* ~/.config/waybar/

~/.config/sway/config.d ディレクトリ下に、自動起動アプリケーション・キーボード・タッチパッド設定ファイルを作成します。

~/.config/sway/config.d/autorun.conf
exec --no-startup-id mako
exec --no-startup-id fcitx5 -dr

JIS配列キーボードの設定。

~/.config/sway/config.d/keyboard.conf
input type:keyboard {
  xkb_layout "jp"
}

タッチパッドは、「タップしてクリック」「キー入力中はタッチパッドを無効化(disable while typing」を有効とします。後者ややこしいな…

~/.config/sway/config.d/touchpad.conf
input type:touchpad {
  tap enabled
  dwt enabled
}

キーで音量調整するための設定ファイル。
Sway - ArchWikiパク参考にしました。
pavucontrolはこのために入れました。

~/.config/sway/config.d/volume.conf
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous

スクリーンショット撮影用設定ファイル。

~/.config/sway/config.d/screenshot.conf
bindsym Print exec ~/.local/bin/screenshot.sh all
bindsym Shift+Print exec ~/.local/bin/screenshot.sh window
bindsym Ctrl+Print exec ~/.local/bin/screenshot.sh output
bindsym Ctrl+Shift+Print exec ~/.local/bin/screenshot.sh region

下記リンクを参考に、~/.local/bin/screenshot.shも作成。

Taking Screenshots on Wayland

sway/config

Sway自体の設定ファイル(~/.config/sway/config)を編集します。

メニューにはwofi、タスクバーにはwaybarを使います。

また、config.dディレクトリもホーム下にあるものに直します。

~/.config/sway/config
- set $menu dmenu_path | wmenu | xargs swaymsg exec --
+ set $menu wofi -G --show drun
(略)
bar {
-  (コメントアウト)
+  swaybar_command waybar
}

- include /usr/local/etc/sway/config.d/*
+ include ~/.config/sway/config.d/*

文字サイズの調整

ディスプレイ解像度をいじる代わりに、端末やタスクバーの文字を大きくします。文字サイズはお好みで。

~/.config/foot/foot.ini
- font=monospace:size=8
+ font=monospace:size=14
~/.config/waybar/style.css
* {
  (略)
-   font-size:13px;
+   font-size:17px;
}

Swayの起動

gdm, sddm, lightdm等のディスプレイマネージャは、今回は入れていません。
そのため、Sway起動ファイルを作ります。

とりあえず起動部分のみ。他に必要なものがあれば追加していきます。

~/swayon.sh
#!/bin/sh
exec sway

実行可能ファイルにします。

$ chmod +x ~/swayon.sh

下記コマンドでSwayを起動します。

$ ./swayon.sh

無事起動。htopのマシン名・CPU・GPUの箇所にご注目いただければ弊環境の証明になるかと思います。

今後

Webカメラ使えるかなぁと思いながら試行錯誤中です。

Discussion