誰かがswayの記事を書いてくれているのでトラブルシューティングを中心に書きます。
フルアーカイブは https://gitlab.com/takuoh/oldblog にもあります
情報の探し方
検索する場合、swaywm site:qiita.com(DuckDuckGo) か swaywm site:zenn.dev(DuckDuckGo)で出ます
emersion/xdg-desktop-portal-wlr(Github Wiki)
他にもarchwikiで検索、gentoo wikiで検索すると情報が出てきます
Tips
サスペンドした際にロック
sway/config
exec swayidle before-sleep 'swaylock -f -c 000000; swaymsg "output * dpms off"' after-resume 'swaymsg "output * dpms on"'
この例はswaylockを使ってますがお好みのスクリーンセーバーを使ってください
モニターの電源(dpms)も切ってくれます
マシンに触らなかった場合自動でロック
sway/config
exec swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"'
この場合5分でロックされ、その後10分後dpmsがオフになります
firefoxを動かす
MOZ_ENABLE_WAYLAND=1 firefox
で起動しますが
~/.pam_environmentに書いて永続化します
echo MOZ_ENABLE_WAYLAND=1 >> ~/.pam_environment
トラブルシューティング
xdg-desktop-portal-gtkの起動が失敗する
https://github.com/swaywm/sway/wiki#gtk-applications-take-20-seconds-to-start
sway/config
include /etc/sway/config.d/*
gtkテーマが適用されない
https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
#!/bin/sh
# usage: import-gsettings
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
if [ ! -f "$config" ]; then exit 1; fi
gnome_schema="org.gnome.desktop.interface"
gtk_theme="$(grep 'gtk-theme-name' "$config" | cut -d'=' -f2)"
icon_theme="$(grep 'gtk-icon-theme-name' "$config" | cut -d'=' -f2)"
cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | cut -d'=' -f2)"
font_name="$(grep 'gtk-font-name' "$config" | cut -d'=' -f2)"
cursor_size="$(grep 'gtk-cursor-theme-size' "$config" | cut -d'=' -f2)"
gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
gsettings set "$gnome_schema" icon-theme "$icon_theme"
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
gsettings set "$gnome_schema" font-name "$font_name"
gsettings set "$gnome_schema" cursor-size "$cursor_size"
Lxappearanceなどでカーソルサイズを設定していた場合、それも設定されるようにちょっと変更を加えてます
実行権限が必要です
sway/config
exec_always /path/to/import-gsettings
floating windowが機能しない
i3wm(X11)からsway(Wayland)になってWM_CLASSではなくapp_idを使うようになったようです
例です
sway/config
for_window [app_id="gpartedbin"] floating enable
swaymsg -t get_tree | grep "app_id" で起動しているwindowのapp_idが取得できます
swaymsg使うとxwaylandで起動してるソフトがnullになるんですが
xprop | grep WM_CLASS で取得して
sway/config
for_window [class="Lxappearance"] floating enable
でできました
gpartedが動かない
polkitの権限要求が何故かxwaylandで動かないようです
xhostをインストールして再起動すると動きます
archlinuxではパッケージ名はxorg-xhostです
sudo -E gparted
でも動きます
flameshot
export XDG_CURRENT_DESKTOP=sway
non systemdな環境でflameshotを動かす
export XDG_CURRENT_DESKTOP=sway
sway/config
exec --no-startup-id dbus-update-activation-environment DISPLAY I3SOCK SWAYSOCK WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
さいごに
僕のdotfilesリポジトリです