君もSwayを使わないか?

と言いながらi3wmから書いてます(笑)

Swayとはwaylandのタイリングウィンドウマネージャです

ja.wikipedia.org

waylandの場合~/.xprofileは読み込まれません

lightdmを使うと読み込まれます

waylandで変数定義するには~/.pam_environmentを使ってください

必要なパッケージ(archlinux)は sway, xorg-xwayland, swayidle, swaylock(locker), grim, slurp, mako, gammastepです

設定は~/.config/sway/configです

i3wmのconfigをコピーしてエラーログ見ながら修正すると楽です

サンプル設定はarchlinuxの場合/etc/sway/configにありますコピーして使ってください

ブラウザはchromiumは推奨されませんfirefoxを使いましょう

i3wm(X11)からソフトウェアの代替

https://github.com/swaywm/sway/wiki/i3-Migration-Guide

に書いてますが実際移行したものを書いていきます

  • light(i3wm) → light(sway) lightくんX11でもwaylandでもバックライト調整できます万能です !

  • xfce4-notifyd(i3wm) → mako

  • feh(i3wm) → sway-output

output * bg ~/Pictures/wallpaper.jpg fill

~/Pictures/wallpaper.jpgに壁紙に設定したい画像があると仮定してます

適当にファイルのパスを書き換えてください

設定に書くと壁紙が設定できます

bindsym $mod+Print exec "slurp | grim -g - ~/ss/$(date +'screenshot_%Y-%m-%d-%H%M%S.png')"

この場合$mod+prtscで選択した範囲のスクリーンショット~/ss/screenshot.pngに保存されます

  • picom / compton / xcompmgr → 入れる必要なし

  • rofi(i3wm) → wofi(sway) ※wofi入れました(2021/5/21)

set $menu "wofi --show drun --allow-images"

デフォルトでdmenuが使われてます

rofi likeなランチャーが使いたいならset $menu ...の部分を変更してください

サンプル設定(https://gitlab.com/chinstrap/gammastep/-/raw/master/gammastep.conf.sample)を~/.config/gammastep/config.iniwget/curl

メソッドをwaylandに変えてください

< adjustment-method=randr
---
> adjustment-method=wayland

設定ファイル形式はredshiftと一緒です.

redshiftの設定コピーしてmethod変えたら動きます

redshiftの設定はhttps://wiki.archlinux.jp/index.php/Redshiftを見てやってください

  • i3status-rust waylandで動くステータスバー, 公式ドキュメントが充実してて設定が楽

サスペンドした際にロック

exec swayidle before-sleep 'swaylock -f -c 000000; swaymsg "output * dpms off"' after-resume 'swaymsg "output * dpms on"'

systemdサポートでビルドされた際に使えます

この例はswaylockを使ってますがお好みのスクリーンセーバーを使ってください

モニターの電源(dpms)も切ってくれます

マシンに触らなかった場合自動でロック

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

alacrittyで日本語が打てない

qiita.com

に書いてましたありがたいです

xdg-desktop-portal-gtkの起動が失敗する

Home · swaywm/sway Wiki · GitHub

exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
exec hash dbus-update-activation-environment 2>/dev/null && \
   dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK

gtkテーマが適用されない

#!/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)"
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"

$PATHの通ったところに置いてください

実行権限も必要です

GTK 3 settings on Wayland · swaywm/sway Wiki · GitHub

exec_always import-gsettings

kdeconnectdが起動に失敗する

~/.config/systemd/user/kdeconnectd.service

[Unit]
Description=Connect your computer to your smartphone or tablet

[Service]
ExecStart=/usr/lib/kdeconnectd
ExecStop=/usr/bin/kquitapp5 kdeconnectd
BusName=org.kde.kdeconnect
Environment=QT_QPA_PLATFORM=offscreen

[Install]
WantedBy=default.target
systemctl --user enable kdeconnectd

floating windowが機能しない

i3wmからswayになってWM_CLASSではなくapp_idを使うようになったようです

for_window [app_id="gpartedbin"] floating enable

例です

swaymsg -t get_tree | grep "app_id"

で起動しているwindowのapp_idが取得できます

xwaylandで起動してるソフトがnullになってたんですが

xprop | grep WM_CLASS

で取得して

for_window [class="Lxappearance"] floating enable

でできました

gpartedが動かない

polkitの権限要求が何故かxwaylandで動かないようです

xhostをインストールして再起動すると動きます

archlinuxではパッケージ名はxorg-xhostです

sudo -E gparted

でも動きます

私の設定はhttps://github.com/u0a266/config/tree/master/dotfiles/.config/swayにあります

僕のdotfilesリポジトリです

github.com