Sway
Sway (SirCmpwn's Wayland compositor の略) は、i3 ウィンドウマネージャと互換性を持つように設計された、オープンソースの wlroots ベースの Wayland コンポジタです。
インストール
USE フラグ
USE flags for gui-wm/sway i3-compatible Wayland window manager
+filecaps
|
Use Linux file capabilities to control privilege rather than set*id (this is orthogonal to USE=caps which uses capabilities at runtime e.g. libcap) |
+man
|
Build and install man pages |
+swaybar
|
Install 'swaybar': sway's status bar component |
+swaynag
|
Install 'swaynag': shows a message with buttons |
X
|
Enable support for X11 applications (XWayland) |
tray
|
Enable support for StatusNotifierItem tray specification |
wallpapers
|
Install sway's default wallpaper image |
Emerge
root #
emerge --ask gui-wm/sway
設定
利用可能なすべての設定オプションを表示するには:
user $
man 5 sway
ファイル
sway を実行する各ユーザは、カスタマイズされた sway セッションを実行するために、デフォルト設定ファイルを編集することができます。Gentoo はこのファイルを、デフォルトの場所である /etc/sway/config に保存します:
user $
mkdir -p ~/.config/sway/
user $
cp /etc/sway/config ~/.config/sway/
端末エミュレータ
デフォルトでは、Sway 設定ファイルは foot 端末エミュレータ (gui-apps/foot パッケージにあります) を使用します。Sway の実行中に端末が利用できるように、この端末エミュレータを emerge するのがよいでしょう:
root #
emerge --ask gui-apps/foot
他の人気のある選択肢としては x11-terms/alacritty や x11-terms/kitty があります。後者は KITTY_ENABLE_WAYLAND
環境変数が 1
に設定されていれば Wayland ネイティブで動作します。
他の超軽量な代替として st がありますが、これは Wayland ネイティブではありません。
ディスプレイ設定
ディスプレイの選択肢は以下で問い合わせることができます:
user $
swaymsg -t get_outputs
Output DP-1 'HP Inc. HP X34 6CM2261GK2' (focused) Current mode: 3440x1440 @ 165.000 Hz Position: 0,0 Scale factor: 1.000000 Scale filter: nearest Subpixel hinting: unknown Transform: normal Workspace: 1 Max render time: off Adaptive sync: disabled Available modes: 3440x1440 @ 165.000 Hz ... Output DP-2 'LG Electronics LG HDR QHD 110NTTQ0U193' Current mode: 2560x1440 @ 59.951 Hz Position: 3440,0 Scale factor: 1.000000 Scale filter: nearest Subpixel hinting: unknown Transform: normal Workspace: 2 Max render time: off Adaptive sync: disabled Available modes: 2560x1440 @ 59.951 Hz 2560x1440 @ 74.971 Hz ... Output DP-3 'Ancor Communications Inc VE247 E3LMQS103610' Current mode: 1920x1080 @ 60.000 Hz Position: 6000,0 Scale factor: 1.000000 Scale filter: nearest Subpixel hinting: unknown Transform: normal Workspace: 3 Max render time: off Adaptive sync: disabled Available modes: 1920x1080 @ 60.000 Hz
結果は希望する解像度のみを含むように省略しています。デフォルトの位置が正しく設定されていない場合は、~/.config/sway/config を変更することで調整することができます。ファイルを保存したら、$mod+Shift+C で設定を再読み込みすることができます:
output DP-1 resolution 3440x1440@165hz pos 2560 350
output DP-2 resolution 2560x1440@74.971hz pos 0 250
output DP-3 resolution 1920x1080@60hz pos 6000 0 transform 270
入力デバイス
入力デバイスは以下で問い合わせることができます:
user $
swaymsg -t get_inputs
Input device: Logitech G502 HERO Gaming Mouse Keyboard Type: Mouse Identifier: 1133:49291:Logitech_G502_HERO_Gaming_Mouse_Keyboard Product ID: 49291 Vendor ID: 1133 Libinput Send Events: enabled Input device: Logitech G502 HERO Gaming Mouse Keyboard Type: Keyboard Identifier: 1133:49291:Logitech_G502_HERO_Gaming_Mouse_Keyboard Product ID: 49291 Vendor ID: 1133 Active Keyboard Layout: English (US) Libinput Send Events: enabled Input device: Logitech G502 HERO Gaming Mouse Type: Mouse Identifier: 1133:49291:Logitech_G502_HERO_Gaming_Mouse Product ID: 49291 Vendor ID: 1133 Libinput Send Events: enabled
input "1133:49291:Logitech_G502_HERO_Gaming_Mouse" {
accel_profile "flat"
pointer_accel -0.1
}
input type:touchpad {
tap enabled
}
1 本指タップで左クリック、2 本で右クリック、3 本で中クリックです。これは
tap_button_map
で調整することができます。アプリケーションランチャ
Sway は様々なアプリケーションランチャとともに使用することができます。デフォルトでは wmenu を使用しようとしますが、同時に依存として dmenu も必要とするので、Wayland ネイティブランチャとともに使用するためには再構成が必要です。
gui-apps/bemenu をインストールして、これを使用するように sway を構成するには:
root #
emerge --ask gui-apps/bemenu
set $menu bemenu-run --no-exec | xargs -r swaymsg exec --
set $menu bemenu-run --no-exec -p "" | xargs -r swaymsg exec --
--line-height
(-H
) を 26 に設定することで、bemenu の高さを waybar にマッチさせることができます。デフォルトでは sway は gui-apps/wmenu を使用しようとしますが、これは次でインストールできます:
root #
emerge --ask gui-apps/wmenu
wmenu を使用するように sway を構成するには:
set $menu wmenu-run | xargs swaymsg exec --
set $menu wmenu-run -p "" | xargs swaymsg exec --
ステータスバー
Sway 自身のステータスバーの他に、Sway のための高度にカスタマイズ可能なステータスバーとして Waybar を使用することができます:
root #
emerge --ask gui-apps/waybar
Sway で Waybar を有効化する単純な方法は 2 通りあります: Waybar をバーサブコマンドとして実行する方法と、通常コマンドとして実行する方法です。Sway が起動するとき (そして Sway が終了して再起動するとき) はどちらも同じように振る舞うでしょうが、Sway の再読み込み時には異なる振る舞いをします。バーサブコマンドとして Waybar またはあらゆる他のステータスバーを実行すると、Sway の再読み込み時にステータスバーは再起動されるでしょう。通常コマンドとしての Waybar を実行すると、Sway の再読み込み時にステータスバーは再起動されないでしょう; exec
の代わりに exec_always
で実行してもこれは解決されず、Sway の再読み込みのたびにステータスバーが増えることになるだけです。
Sway の再読み込みを利用してステータスバーの構成をテストしたいユーザは、バーサブコマンドとしての方法を使用すべきです。
bar {
# Waybar を実行する; Sway が再読み込みされたときに Waybar は再起動されます。
status_command waybar
# Sway の組み込みステータスバーを隠します。
mode invisible
}
# Waybar を実行する; Sway が再読み込みされたときに Waybar は再起動されません。
exec waybar
明るさ調節
バックライトの明るさ調節方法には複数の選択肢があります。/sys/class/backlight/<device>/brightness に書き込むことによって行うこともできます。
acpilight
代わりに、sys-power/acpilight も xbacklight 互換コマンドを利用して、明るさの変更を同じように行うことができます:
bindsym XF86MonBrightnessDown exec xbacklight -dec 2
bindsym XF86MonBrightnessUp exec xbacklight -inc 4
brightnessctl
app-misc/brightnessctl は ::guru にあり、簡単にバックライトを調整するのに使用できます:
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+
light
dev-libs/light の github ページでは現在 (2023-09) このように言及されています: 「このプロジェクトは 2023 年 3 月 8 日以来放棄されていると見なされています。他の開発者が引き継ぐまで、使用することはおすすめできません。」現在もパッケージは Gentoo ebuild リポジトリに残っていますが、ユーザは開発者からのメッセージを考慮に入れておくのがよいでしょう。
バックライトと明るさを調節するためには dev-libs/light を使用することができます。以下は設定例です:
bindsym XF86MonBrightnessDown exec light -U 2
bindsym XF86MonBrightnessUp exec light -A 4
通知
gui-apps/mako は通知デーモンとして使用することができます。
exec mako
音量調節
XF86AudioRaiseVolume
および XF86AudioLowerVolume
キーコードは一般的な手段として存在し、システムボリュームを調整するために使用されます。オーディオバックエンドに応じて、このキーのキーバインドを設定しなくてはなりません。
Pipewire
PipeWire を使用している場合は、音量を変更するために次の設定を利用することができます (Wireplumber を利用します):
bindsym XF86AudioRaiseVolume exec wpctl set-volume @DEFAULT_SINK@ 5%+
bindsym XF86AudioLowerVolume exec wpctl set-volume @DEFAULT_SINK@ 5%-
Pulseaudio
pulseaudio を使用している場合は、音量を変更するために次の設定を利用することができます:
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
ALSA
ALSA を使用している場合は、音量を変更するために次の設定を利用することができます:
bindsym XF86AudioRaiseVolume exec amixer -Mq set Speaker 5%+
bindsym XF86AudioLowerVolume exec amixer -Mq set Speaker 5%-
sndio
media-sound/sndio を使用している場合は、音量を変更するために次の設定を利用することができます:
bindsym XF86AudioRaiseVolume exec sndioctl -f snd/default output.level=+0.05
bindsym XF86AudioLowerVolume exec sndioctl -f snd/default output.level=-0.05
スクリーンショットを撮る
シンプルなアプローチ: slurpshot を使用する
(Slurpshot) はスクリーンショットの撮影を簡単にするためのスクリプトです。ネイティブ wayland アプリのみを使用し、特定のウィンドウのみの選択や、スクリーンショットを保存せずにプレビューしたり印刷したりすることができます。まず、依存パッケージをインストールしてください:
root #
emerge --ask gui-apps/grim gui-apps/slurp app-misc/jq dev-libs/bemenu
slurpshot スクリプトを PATH 内のどこか、例えば ~/bin に置き、実行可能にして、キーバインドを設定するだけです:
#
# Screen capture
#
bindsym Print exec slurpshot
手動アプローチ
スクリーンショットサポートを追加するには、grim ユーティリティ (gui-apps/grim パッケージにあります) を使用してください。grim
は Grab Images (「画像をさっと撮る」という意味) の略として定義されています。このユーティリティは Wayland プロトコルの詳細に合わせて作られています。grim をインストールするには、次のコマンドを使用してください:
root #
emerge --ask gui-apps/grim
選択された画面範囲の境界を決定するサポートを追加するには、slurp ユーティリティ (gui-apps/slurp パッケージにあります) を grim ユーティリティと組み合わせて使用します。slurp をインストールするには、次のコマンドを使用してください:
root #
emerge --ask gui-apps/slurp
クリップボードサポートを追加するためには、gui-apps/wl-clipboard にある wl-clipboard を使用します。 wl-clipboard をインストールするためには、次のコマンドを使用してください:
root #
emerge --ask gui-apps/wl-clipboard
次に、スクリーンショット操作を実行するキーボードショートカットのサポートを追加するために、設定ファイルを編集してください:
#
# Screen capture
#
set $ps1 Print
set $ps2 Control+Print
set $ps3 Alt+Print
set $ps4 Alt+Control+Print
set $psf $(xdg-user-dir PICTURES)/ps_$(date +"%Y%m%d%H%M%S").png
bindsym $ps1 exec grim - | wl-copy
bindsym $ps2 exec grim -g "$(slurp)" - | wl-copy
bindsym $ps3 exec grim $psf
bindsym $ps4 exec grim -g "$(slurp)" $psf
Print または Ctrl + Print キーの組み合わせによって、wl-copy
バッファにスクリーンショットが作成されることに注意してください。これにより、画像をディスク上のファイルとして保存することなく、クリップボードから直接貼り付けることができます。
Alt + Print または Alt + Ctrl + Print キーボードショートカットでは、Pictures ユーザディレクトリ内に画像ファイルを自動的に保存する方法が利用されます。
Snipping tool 風の挙動
以下の設定では、mod+shift+S が押されたときに画面範囲をクリップボードへとキャプチャします:
bindsym $mod+shift+s exec grim -g "$(slurp)" - | wl-copy
-g は grim に対して領域を切り取るように指定し、$(slurp) で領域を取得します。スクリーンショットは stdout に出力され、wl-copy はこのファイルをクリップボードへとコピーします。
ランダム壁紙を設定する
フォルダからランダムな壁紙を選んで設定することができます: [1]
set $wallpapers_path $HOME/Pictures/Wallpapers
output * bg $(find $wallpapers_path -type f | shuf -n 1) fill
Swaylock
現在のセッションをロックするためには、gui-apps/swaylock を使用することができます。
root #
emerge --ask gui-apps/swaylock
bindsym $mod+l exec swaylock --ignore-empty-password --show-failed-attempts --color 1e1e1e
bindsym $mod+l exec swaylock --ignore-empty-password --show-failed-attempts \
--color 1e1e1e --inside-color cccccc --ring-color ffffff \
--inside-clear-color 11a8cd --ring-clear-color 29b8db \
--inside-ver-color 2472c8 --ring-ver-color 3b8eea \
--inside-wrong-color cd3131 --ring-wrong-color f14c4c
アカウントがロックされた場合でも、swaylock はそのことを示さずに、単に失敗します。別の TTY に切り換えてログインを試すことで、ロックされていることを突き止めることができます
Swayidle
gui-apps/swayidle は一定のアイドル時間経過後に、典型的にはロックや画面の電源を切るために、コマンドを実行します。
root #
emerge --ask gui-apps/swayidle
exec swayidle -w \
timeout 900 'swaymsg "output * power off"' \
resume 'swaymsg "output * power on"'
HiDPI
HiDPI ディプレイ (4K 以上) に対する sway のレンダリングを調節するためには、まず調節したいディスプレイの名前を取得する必要があります。sway セッションの実行中に、以下を実行してください:
user $
swaymsg -t get_outputs
swaymsg コマンドをシステムで利用できるようにするには、
swaymsg
USE フラグが有効化されている必要がありますsway 設定ファイルの output
文は、高解像度ディスプレイのスケーリングを調節するための scale
パラメータを受け付けます。
Xresources
exec_always test -f ~/.Xresources && xrdb -merge ~/.Xresources
GTK 設定
ダークモード
GTK3
GTK3 ダークモードは以下を設定することで有効化できます:
[Settings]
gtk-application-prefer-dark-theme = true
GTK2
GTK2 はダークモードの切り換え機能を持っていないため、ダークテーマを選択する必要があります:
gtk-theme-name = "Adwaita-dark"
GTK3 テーマとフォント
現時点で GTK フォントとテーマの設定は、sway の設定ファイルを編集することで行うべきです (Sway の wiki も参照してください):
set $gnome-schema org.gnome.desktop.interface
exec_always {
gsettings set $gnome-schema gtk-theme 'theme name'
gsettings set $gnome-schema icon-theme 'icon theme name'
gsettings set $gnome-schema cursor-theme 'cursor theme name'
gsettings set $gnome-schema font-name 'Sans 10'
}
特定のアプリケーション (sway も含め) でマウスカーソルの設定の問題に遭遇した場合は、これで解消するかもしれません:
seat seat0 xcursor_theme custom_cursor_theme custom_cursor_size
custom_cursor_theme と custom_cursor_size の部分は置き換えてください。Adwaita と 24 はすべての Linux ディストリビューションでほぼデフォルトです。
自動フローティングウィンドウ
デフォルトでは、Sway は新しいウィンドウをタイルモードで開きます。以下の設定スニペットは、フロートで表示すべき多くのウィンドウをフロートで表示させます:
for_window [window_role = "pop-up"] floating enable
for_window [window_role = "bubble"] floating enable
for_window [window_role = "dialog"] floating enable
for_window [window_type = "dialog"] floating enable
for_window [window_role = "task_dialog"] floating enable
for_window [window_type = "menu"] floating enable
for_window [app_id = "floating"] floating enable
for_window [app_id = "floating_update"] floating enable, resize set width 1000px height 600px
for_window [class = "(?i)pinentry"] floating enable
for_window [title = "Administrator privileges required"] floating enable
Firefox 向けの調整
for_window [title = "About Mozilla Firefox"] floating enable
for_window [window_role = "About"] floating enable
for_window [app_id="firefox" title="Library"] floating enable, border pixel 1, sticky enable
for_window [title = "Firefox - Sharing Indicator"] kill
for_window [title = "Firefox — Sharing Indicator"] kill
Steam 向けの調整
for_window [class="^Steam$" title="^Friends$"] floating enable
for_window [class="^Steam$" title="Steam - News"] floating enable
for_window [class="^Steam$" title=".* - Chat"] floating enable
for_window [class="^Steam$" title="^Settings$"] floating enable
for_window [class="^Steam$" title=".* - event started"] floating enable
for_window [class="^Steam$" title=".* CD key"] floating enable
for_window [class="^Steam$" title="^Steam - Self Updater$"] floating enable
for_window [class="^Steam$" title="^Screenshot Uploader$"] floating enable
for_window [class="^Steam$" title="^Steam Guard - Computer Authorization Required$"] floating enable
for_window [title="^Steam Keyboard$"] floating enable
サービス
OpenRC
OpenRC ベースのシステムでは、elogind を boot ランレベルに追加する必要があります:
root #
rc-update add elogind boot
使い方
Sway を開始する
dbus とともに Sway を開始するには、XDG_RUNTIME_DIR 変数が設定されている必要があります。elogind または systemd が使用されていれば、それがこの変数を設定するでしょう。dbus-run-session を省略すると、実行時エラーが発生するかもしれません。
TTY ログイン時に Sway を自動的に起動する
最初の TTY にログインしたときに Sway を開始するには:
if [ -z "${WAYLAND_DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
dbus-run-session sway
fi
tty1 上での自動ログイン
tty1 上での自動ログインを有効化するためには、/etc/inittab で定義されている tty1 の agetty インスタンスに、--skip-login
および --login-options
を追加することができます:
c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux --skip-login --login-options larry
手動で Sway を開始する
user $
dbus-run-session sway
スクリプトから Sway を起動する
この方法では、仮想端末を強制的に乗っ取り、その中で Sway を起動するスクリプトを使用します。典型的なユースケースは、ブート時に自動的に Sway を起動する場合です。
Sway はこの方法で起動されることを想定していません。動作させるためにスクリプトを多少調整する必要があるかもしれません。
#!/bin/sh
# 特定の仮想端末 (vt) から特定のユーザで sway を起動します
# 2 個の引数を期待します: ユーザ名 (例: larry) と空き vt の id (例: 7)
# ユーザのために tty を準備する。vtX は /dev/ttyX を使用する
chown "$1" "/dev/tty${2}"
chmod 600 "/dev/tty${2}"
# ユーザのためにまっさらな環境を構築し、対象 vt を乗っ取り、sway を起動する
su --login --command "openvt --switch --console ${2} -- sway >\${HOME}/.sway_autolauncher.log 2>&1" "$1"
# このスクリプトは直ちに制御を返す
このスクリプトにはいくつかの制約があります:
- XDG_RUNTIME_DIR が定義され妥当な値であることが期待されます。上の節を参照してください。
- openvt の
--switch
オプションが無いと、異なる VT に切り換えようとしたとき (Ctrl+Alt+Fn) に sway はフリーズするでしょう。これがバグなのかどうかは不明です。 - Sway が終了したときに VT はクリアされません。deallocvt を呼び出してクリアしてください。
- 同様に、Sway が終了したときに TTY の所有者とモードはデフォルト値に戻されません。
ローカルサービスを利用して、このスクリプトをブート時に起動することができます:
#!/bin/sh
sway_launcher larry 7
elogind または systemd を使わずに Sway を開始する
systemd も elogind も使用しないように設定されたシステムでは、XDG_RUNTIME_DIR 変数を設定するためのシェルスクリプトを作成する (または他の手段を使用する) 必要があります。
環境変数は通常の設定ファイルで定義することができます。例えば、 Larry the cow (Larry) が自身のシェルの設定ファイル内で XDG_RUNTIME_DIR 変数を設定し、ディレクトリを /tmp 内に置くことを選択した場合は:
#!/bin/sh
if test -z "${XDG_RUNTIME_DIR}"; then
export XDG_RUNTIME_DIR=/tmp/"${UID}"-runtime-dir
if ! test -d "${XDG_RUNTIME_DIR}"; then
mkdir "${XDG_RUNTIME_DIR}"
chmod 0700 "${XDG_RUNTIME_DIR}"
fi
fi
XDG_RUNTIME_DIR を定義したら、通常通り sway を起動することができます:
user $
dbus-run-session sway
問題に遭遇した場合は、IRC (#sway (webchat)) 上の Sway コミュニティに連絡を取ったり新しい Gentoo バグを開く前に、GitHub 上の Sway の issues を確認してください。
移動
すべてのキーコンビネーションは ~/.config/sway/config 設定ファイルで定義されます。
$mod
のデフォルト値としては、 Super キーが定義されています。ほとんどのキーボードではこれは Windows キーのことです。
Sway は Vi 風のインターフェースを持っています。ウィンドウの移動には矢印キーにくわえて、h (左)、j (下)、k (上)、および l (右) を使用することができます。
フォーカスは mod+方向キー で移動でき、ウィンドウ自体は mod+shift+方向キー で移動することができます:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
さらなる情報については man 5 sway-input を参照してください。
便利なキーバインド
bindsym $mod+control+Right workspace next
bindsym $mod+control+Left workspace prev
レイアウト
デフォルトでは Sway はタイル型レイアウトを使用します。レイアウトモードは以下のデフォルトのキーバインドを使って切り換えることができます:
- mod+b - 水平分割
- mod+v - 垂直分割
- mod+s - スタック表示
- mod+w - タブ表示
- mod+e - 分割方向のトグル
- mod+shift+space - フローティング表示のトグル
bindsym $mod+b splith
bindsym $mod+v splitv
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
bindsym $mod+Shift+space floating toggle
端末
端末エミュレータを開くためのデフォルトのキーの組み合わせは、$mod+Enter です。
Foot サーバ
Foot は最小限の Wayland 端末エミュレータですが、リソース使用量を抑えるためにサーバとして実行するように設定することもできます。
exec foot -s
set $term footclient
If starting the foot server with Sway, it may not start fast enough to also auto-start a service, exec swaymsg "workspace 2; exec $term {command}" may be slow enough to mitigate this
機能を追加する
Sway は拡張可能なように設計されており、追加機能を追加するのは簡単です:
bindsym control+shift+escape exec $term htop
foot を使用する場合は、-a で設定される app_id を設定して、自動でフロートさせることができます:
bindsym control+shift+escape exec $term -a 'flying-foot' htop
for_window [app_id="flying-foot"] floating enable
Moving left and right with non-existing workspaces
Sway can switch to the left (prev
) or right (next
) workspace as long as there exists a workspace to switch to in that direction; this includes moving containers to those workspaces:
set $super mod4
bindsym $super+alt+left workspace prev
bindsym $super+alt+right workspace next
bindsym $super+control+alt+left move container to workspace prev, workspace prev
bindsym $super+control+alt+right move container to workspace next, workspace next
To be able to switch to non-existing workspaces, we can create a script to tell Sway to switch to a specific workspace:
set $super mod4
set $num_of_workspaces 10
bindsym $super+alt+left exec swaymsg -pt get_workspaces | gawk -f ~/.config/sway/workspace.gawk -v move_type="left" -v num_of_workspaces=$num_of_workspaces
bindsym $super+alt+right exec swaymsg -pt get_workspaces | gawk -f ~/.config/sway/workspace.gawk -v move_type="right" -v num_of_workspaces=$num_of_workspaces
bindsym $super+control+alt+left exec swaymsg -pt get_workspaces | gawk -f ~/.config/sway/workspace.gawk -v move_type="container_left" -v num_of_workspaces=$num_of_workspaces
bindsym $super+control+alt+right exec swaymsg -pt get_workspaces | gawk -f ~/.config/sway/workspace.gawk -v move_type="container_right" -v num_of_workspaces=$num_of_workspaces
#!/bin/gawk -f
$3 == "(focused)" {
switch(move_type) {
case "left":
if ($2 == 1)
$2=num_of_workspaces+1
system("sway workspace "$2-1)
exit
case "right":
if ($2 == num_of_workspaces)
$2=0
system("sway workspace "$2+1)
exit
case "container_left":
if ($2 == 1)
$2=num_of_workspaces+1
system("sway move container to workspace "$2-1", workspace "$2-1)
exit
case "container_right":
if ($2 == num_of_workspaces)
$2=0
system("sway move container to workspace "$2+1", workspace "$2+1)
exit
}
}
トラブルシューティング
画面共有が機能しない
パッケージ gui-libs/xdg-desktop-portal-wlr がインストールされていることを確認してください。デフォルトではこれは D-Bus によって自動開始されますが、Sway によって export される環境変数を必要とするのに D-Bus セッションが Sway より先に開始されてしまうことで、実行に失敗することがあります。これを修正するためには、以下の行を Sway の設定の先頭に追加することで D-Bus 環境を更新してください:
exec --no-startup-id dbus-update-activation-environment --all
PipeWire が正しく動作しているか確認するために、このリンクも参照してください。XDG_CURRENT_DESKTOP=sway も確認してください。
Failed to connect to user bus
[swaybar/tray/tray.c:42] Failed to connect to user bus: No such file or directory
- フォーラムトピック [swaybar/tray/tray.c:42] Failed to connect to user bus: No such file or directory => dbus-run-session sway を使用してください
- フォーラムトピック sway(bar) with tray support
- https://github.com/swaywm/sway/issues/1415
Warning: no icon themes loaded
[swaybar/tray/icon.c:348] Warning: no icon themes loaded
これは x11-themes/hicolor-icon-theme を探しています。
No backend was able to open a seat
[ERROR] [wlr] [libseat] [libseat/libseat.c:78] No backend was able to open a seat
sys-auth/seatd または sys-auth/elogind のようなシート管理デーモンを探しています。XDG_RUNTIME_DIR の設定が必要かどうかも確認してください。
アプリケーションがログイン状態を覚えてくれない
一部のアプリケーション (例: net-misc/nextcloud-client) は、ログインのための資格情報を保存するために Secret-Service-Agent を使用します。アプリケーションが実行のたびにアカウントの資格情報を求めてくる場合は、Secret-Service-Agent が正しく設定されていないことが原因かもしれません。
まず、gnome-base/gnome-keyring を emerge してください。
root #
emerge --ask gnome-base/gnome-keyring
次に、gnome-keyring
USE フラグを有効化してください。
# Sway Secret-Service-Agent
*/* gnome-keyring
新しい USE フラグを適用してシステムを更新してください。
root #
emerge -avuDN @world
Sway セッションにログインしている間、Agent を実行してストレージを開錠するには、これらの 2 ファイルを編集してください。
exec dbus-update-activation-environment --all
exec gnome-keyring-daemon --start --components=secrets
exec export $(gnome-keyring-daemon)
auth optional pam_gnome_keyring.so
password optional pam_gnome_keyring.so
session optional pam_gnome_keyring.so auto_start
関連項目
- i3 — a minimalist tiling window manager, completely written from scratch.
- Wayland — a replacement for the X11 window system protocol and architecture with the aim to be easier to develop, extend, and maintain
- Weston — a reference implementation of a Wayland compositor.
参照
- ↑ https://github.com/swaywm/sway/issues/1269
- ↑ https://github.com/Madic-/Sway-DE/blob/master/config/sway/sway.d/06_floating.conf
- ↑ https://github.com/Madic-/Sway-DE/blob/master/config/sway/sway.d/06_floating.conf
- ↑ https://github.com/Madic-/Sway-DE/blob/master/config/sway/sway.d/06_floating.conf
- ↑ https://github.com/Madic-/Sway-DE/blob/master/config/sway/sway.d/06_floating.conf
- ↑ https://github.com/swaywm/sway#running