誰かがswayの記事を書いてくれているのでトラブルシューティングを中心に書きます。

フルアーカイブは https://gitlab.com/takuoh/oldblog にもあります

情報の探し方

検索する場合、swaywm site:qiita.com(DuckDuckGo)swaywm site:zenn.dev(DuckDuckGo)で出ます

swaywm/sway(Github Wiki)

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

https://github.com/emersion/xdg-desktop-portal-wlr/wiki/%22It-doesn't-work%22-Troubleshooting-Checklist#non-systemd-distributions=

さいごに

僕のdotfilesリポジトリです

https://gitlab.com/takuoh/config-artix