Void LinuxにLabwcで軽量で実用性の高いWaylandデスクトップ環境を構築する
2024-05-28
こんにちは。今回のテーマは「Void LinuxにLabwcで軽量で実用性の高いWaylandデスクトップ環境を構築する」です。新たにVoid Linuxをインストールして使い始めたところです。せっかくなのでXorgではなくWaylandでデスクトップ環境を構築したいと思いあれこれ試しているところです。最近までSwayを使用していましたが、今回Labwcに移行しましのたで記事にしてみました。
Labwcとは
LabwcはOpenboxに影響を受けたスタック型のWaylandコンポジタです。WaylandでOpenboxの使い心地を体験できます。テーマにはネット上に豊富にあるOpenboxのテーマがそのまま適用できます。シンプルで軽量な使い心地、他のツールと組み合わせてデスクトップ環境をカスタマイズしていく楽しみを味わいたい方にはおすすめのコンポジタです。Waylandコンポジタはタイル型のSwayやHyprlandが有名ですが、タイル型は少しハードルが高いという方も、labwcならばLXDEやXfceの操作感に近いデスクトップ環境を構築することができます。
目指した環境
今回目指した環境はLabwcを中心に交換可能なパーツを集めてLXDEやXFCEと同等の使いやすさを有するデスクトップ環境を有することを目標としました。具体的には以下を実現できる環境を目指します。
- パネルのショートカットからアプリケーションの起動が可能
- パネルの電源ボタンからマウス操作でPCのパワーオフや再起動が可能
- GUIファイルマネージャーがある
- ウィンドウを重ねて好きな位置に配置できるスタック型の環境
- 壁紙表示、画面ロック、ディスプレイ電源OFF、スクリーンショット機能を有する
- パネルからアプリランチャーが起動可能
- ショートカットで端末を起動させる
- キーボードだけでウィンドウのサイズ変更、移動ができる
- キーボードショートカットに頼らなくてもマウス操作で基本操作ができる
- ワークスペースの切り替えを可能とする
- テーマも導入して見た目にもこだわりたい
今回構築した環境
今回は以下のような構成でデスクトップ環境として一通りのことができる環境を整えました。
スクリーンショットを以下に示します。
また、今回構築した環境を表で整理しました。
項目 | 値 |
---|---|
システム | Void Linux |
labwcの起動 | コンソールから起動 |
コンポジタ | Labwc |
ステータスバー | waybar |
端末 | Alacritty |
ファイルマネージャ | PCManFM |
ランチャー | ngw-launcher |
オーディオ | pulseaudio |
オーディオミキサー | pavuaudio |
壁紙表示 | swaybg |
スクリーンロック | swaylock |
スクリーンショット | grim |
WEBブラウザ | Firefox |
日本語入力 | Fcitx5 + mozc |
GTKテーマ | Infinity-GTK |
GTKアイコン | Vivid-Dark-Icons |
Labwcテーマ | Fresh-Theme |
日本語フォント | VLゴシック |
Waylandを動かす準備
Labwcに限らない話なのですが、Waylandコンポジタを使用するにあたり必要な準備を行います。今回はVoid Linuxの前提で記載します。Arch Linuxの場合はArchWikiを参考にしてください。dbus
,elogind
, polkit
パッケージをインストールします。
sudo xbps-install \
dbus \
elogind \
polkit
dbusサービスを有効化しましょう。Void Linuxはサービス管理にrunitを使用していますのでSystemdの方式とは少し異なります。以下のコマンドでサービスを有効化しましょう。
sudo ln -s /etc/sv/dbus /var/service/
必要なパッケージの導入
今回はVoidLinuxで環境を構築するのでXBPSでインストールをしていきます。もしArch Linuxで行う場合はAURなどでパッケージを探してみてください。
sudo xbps-install \
labwc \
swaylock \
swaybg \
swayidle \
ngw-launcher \
waybar \
grim \
slurp \
wlopm \
mako
環境変数の設定
~/.config/labwc/environment
に環境変数を設定することでLabwc起動時に環境変数を設定することができます。筆者は言語、キーボードなどの設定をこのファイルで行っています。キーボード関連の環境変数としてはXKB_DEFAULT_LAYOUT
, XKB_DEFAULT_MODEL
, XKB_DEFAULT_RULES
, XKB_DEFAULT_VARIANT
, XKB_DEFAULT_OPTIONS
がサポートされています。
environment設定例
LANG='ja_JP.UTF-8'
MOZ_ENABLE_WAYLAND=1
XKB_DEFAULT_LAYOUT='jp'
labwcのキーバインドをワークスペース設定
labwcの設定は/usr/share/doc/labwc/
にある設定ファイルを~/.config/labwc/
以下にコピーして編集します。
mkdir -p ~/.config/labwc
cp /usr/share/doc/labwc/* ~/.config/labwc/
~/.config/labwc/rc.xml
ファイルを編集していきます。今回はvimスタイルの”hjkl”キーで画面のサイズ変更、移動ができるようにカスタマイズしています。また、キーボードショートカットでAlacrittyとngw-launcherを起動できるようにしています。ちなみにデフォルトの端末はfootが設定されています。Printキーで全画面のスクリーンショット、Shift + Printで範囲指定してのスクリーンショットを割り当てています。
<desktops number="4" />
<keyboard>
<default />
<!-- Use a different terminal emulator -->
<keybind key="W-Return">
<action name="Execute" command="alacritty" />
</keybind>
<keybind key="W-D">
<action name="Execute" command="fuzzel" />
</keybind>
<keybind key="W-R">
<action name="Resize" />
</keybind>
<keybind key="A-h">
<action name="MoveRelative" x="-10" y="0" />
</keybind>
<keybind key="A-l">
<action name="MoveRelative" x="10" y="0" />
</keybind>
<keybind key="A-k">
<action name="MoveRelative" x="0" y="-10" />
</keybind>
<keybind key="A-j">
<action name="MoveRelative" x="0" y="10" />
</keybind>
<keybind key="W-j">
<action name="ResizeRelative" bottom="10" />
</keybind>
<keybind key="W-k">
<action name="ResizeRelative" bottom="-10" />
</keybind>
<keybind key="W-l">
<action name="ResizeRelative" right="10" />
</keybind>
<keybind key="W-h">
<action name="ResizeRelative" right="-10" />
</keybind>
<keybind key="W-S-c">
<action name="Reconfigure" />
</keybind>
<keybind key="W-S-e">
<action name="Execute" command="nwgbar"/>
</keybind>
<keybind key="Print">
<action name="Execute">
<command>sh -c 'grim ~/Pictures/sc-$(date +%Y%m%d%H%M%S).png'</command>
</action>
</keybind>
<keybind key="S-Print">
<action name="Execute">
<command>sh -c 'grim -g "$(slurp)" ~/Pictures/sc-$(date +%Y%m%d%H%M%S).png'</command>
</action>
</keybind>
<keybind key="W-I">
<action name="Iconify" />
</keybind>
<!--
Remove a previously defined keybind
A shorter alternative is <keybind key="W-F4" />
-->
<keybind key="W-F4">
<action name="None" />
</keybind>
<keybind key="W-1"> <action name="GoToDesktop" to="1" /> </keybind>
<keybind key="W-2"> <action name="GoToDesktop" to="2" /> </keybind>
<keybind key="W-3"> <action name="GoToDesktop" to="3" /> </keybind>
<keybind key="W-4"> <action name="GoToDesktop" to="4" /> </keybind>
</keyboard>
壁紙の設定
壁紙の表示はswaybgを使用します。~/.config/labwc/autostart
に以下のように編集します。path/to/image
の部分は画像へのパスを入れてください。
# Set background color.
swaybg -i '/path/to/image' -m fill >/dev/null 2>&1 &
画面ロック、スリープ
スリープ設定にはswayidle
を使用します。~/.config/labwc/autostart
に以下を追記します。
アイドル状態にのみする場合
swayidle -w timeout 600 'wlopm --off' resume 'wlopm --on' >/dev/null 2>&1 &
画面ロック&アイドル状態にする場合
swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'wlopm --off \*' \
resume 'wlopm --on \*' \
before-sleep 'swaylock -f -c 000000' >/dev/null 2>&1 &
通知機能の設定
~/.config/labwc/autostart
に以下を追記しmako
を起動させます。
mako >/dev/null 2>&1 &
日本語入力の設定
~/.config/labwc/autostart
に以下を追記しfcitx5が起動するようにします。ここでは割愛しますが、mozcやanthyなどを導入し日本語入力できる環境を構築しておいてください。
autostartへの追記例
fcitx5 &
また、~/.config/labwc/environment
に以下の環境変数を設定してください。
environmentの設定例
GTK_IM_MODULE="fcitx5"
QT_IM_MODULE="fcitx5"
XMODIFIERS='@im=fcitx5'
GTKアイコンとテーマの設定
GTKテーマとアイコンをGNOME LOOKからダウンロードしてきます。GTKテーマは/usr/share/themes/
に、アイコンは/usr/share/icons/
以下に配置します。
以下コマンドでGTKが指定のテーマとアイコンを使用するように設定します。
GTKテーマの設定例
gsettings set org.gnome.desktop.interface gtk-theme Infinity-GTK
GTKアイコンの設定例
gsettings set org.gnome.desktop.interface icon-theme Vivid-Dark-Icons
Openboxのテーマを適用する
Openboxのテーマを適用するには/usr/share/themes/
以下もしくは~/.local/share/themes/
以下に配置します。このテーマをLabwcで使用するには~/.config/labwc/rc.xml
に以下のように記載します。
rc.xmlの設定例
<theme>
<name>Fresh-Theme</name>
<cornerRadius>8</cornerRadius>
<font name="sans" size="10" />
</theme>
waybarの設定
デスクトップに配置するパネルはwaybarを採用しました。Swayを使用していた時から馴染みがあり、新たに別のパネルをインストールするのも手間だったというのが単純な理由です。ただ、Sway用に使用していた時とは少し変更しました。変更点としてはsway用のワークスペースを除去してwlr/taskbar
waybarの設定ファイルは~/.config/waybar/config
に、スタイルファイルは~/.config/waybar/style.css
です。CSSはrobertjks-configurationをベースに多少アレンジしました。
config 設定例
{
"layer": "top",
"position": "top",
"height": 27,
"modules-left": ["custom/app", "custom/browser", "custom/folder", "custom/terminal", "wlr/taskbar"],
"modules-center": [],
"modules-right": ["network", "temperature", "cpu", "memory", "pulseaudio", "battery", "clock", "tray", "custom/poweroff"],
"custom/poweroff": {
"format": " ",
"on-click": "nwgbar"
},
"custom/app": {
"format": "",
"on-click": "nwggrid"
},
"custom/terminal": {
"format": "",
"on-click": "alacritty"
},
"custom/folder": {
"format": "",
"on-click": "pcmanfm"
},
"custom/browser": {
"format": " ",
"on-click": "firefox"
},
"wlr/taskbar" : {
"format": "{app_id}",
"on-click": "minimize-raise"
},
"sway/workspaces": {
"disable-scroll": false,
"disable-click": false,
},
"tray": {
"spacing": 10,
},
"clock": {
"format": "{:%a %Y %b %d %R}"
},
"custom/japan": {
"format": "{}",
"exec": "TZ=Asia/Tokyo date \"+%H:%M %Z\"",
"interval": 30,
},
"custom/germany": {
"format": "{}",
"exec": "TZ=Europe/Berlin date \"+%H:%M %Z\"",
"interval": 30,
},
"cpu": {
"format": " {usage}%"
},
"memory": {
"format": " {}%"
},
"temperature": {
"critical-threshold": 75,
"format": " {temperatureC}°C"
},
"battery": {
"bat": "BAT0",
"full-at": 95,
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-icons": ["", "", "", "", ""]
},
"network": {
"format-wifi": " {essid}",
"format-disconnected": "⚠ Disconnected"
},
"pulseaudio": {
"format": "{icon} {volume}%",
"format-muted": "",
"format-icons": {
"headphones": "",
"default": ["", ""]
},
"on-click": "pavucontrol"
},
}
Waybarがlabwc起動時に自動起動するように~/.config/labwc/autostart
に追記します。
waybar >/dev/null > 2>&1 &
Labwcの起動
以下コマンドで起動できます。
dbus-run-session labwc
毎回、このコマンドを打つのは面倒なので、aliasで短く使いやすいショートカットを登録することをオススメします。
まとめ
軽い気持ちで書き始めましたが、単にLabwcを使うだけでなく実用的なデスクトップ環境を構築する設定例を書き残そうと欲張った結果、長い記事となってしまいました。この記事がLabwcを導入するお役に立てば幸いです。