Sway

出自 Arch Linux 中文维基

Sway(縮寫自 SirCmpwn 的 Wayland 合成器[1])是一款專為Wayland設計的合成器,旨在與i3完全兼容。根據官網顯示:

Sway 是Wayland的合成器,也是 x11 的 i3 窗口管理器的替代品。它可以與您現有的 i3 配置一起工作,並支持 i3 的大部分特性以及一些附加功能

安裝[編輯 | 編輯原始碼]

Sway 可以通過 sway 包來進行安裝。也可以使用 sway-gitAUR 安裝開發版本。由於依賴關係緊密,建議在更新 sway 時始終更新 wlroots

注意: 所有專有顯卡驅動程序都不受支持,包括 NVIDIA。在 NVIDIA 驅動程序版本 495 之後,需要啟用內核級顯示模式設置並在運行 sway 時附加 --unsupported-gpu 參數去運行。

還可以安裝 swaylockswayidle 來鎖定屏幕並設置 idle 管理。

默認的應用程序啟動器為 dmenu,默認的終端模擬器是 foot。在啟動 sway 之前,建議安裝它們或在配置中設置新的啟動器和終端。

啟動[編輯 | 編輯原始碼]

在啟動 Sway 之前,它需要訪問你的硬件設備,如鍵盤、鼠標和圖形卡。這些硬件設備的集合稱為一個 seat,就如 sd-login(3)中所述.

在 Arch Linux 上,Sway 可以使用以下任一方式訪問您的 seat。

如果 polkit 已安裝在你的系統上, Sway 應會自動訪問你的seat。

又或者,如果 polkit 沒有安裝在你的系統上並且你想使用 seatd 來替代請將你自己添加到這個seat 用戶組 並且 開機自啟和啟動 seatd.service,重新登錄並選擇以下方法之一來啟動 Sway。

手動登錄[編輯 | 編輯原始碼]

要啟動 Sway,只需在 Linux 終端輸入 sway 來運行程序。

自動登錄[編輯 | 編輯原始碼]

與 X 類似,可以通過將以下內容添加到 shell 初始化文件來啟動 Sway(請參閱 命令行 shell#登錄 shell英語Command-line_shell#Login_shell):

if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
  exec sway
fi

有關更多詳細信息,請參閱 Xinit#登錄時自動啟動_X

選擇顯示管理器[編輯 | 編輯原始碼]

注意: Sway 官方不支持顯示管理器。[2]

Sway 會話位於 /usr/share/wayland-sessions/sway.desktop。 它可以被 GDMSDDM等現代顯示管理器自動識別。

也可以使用systemd 用戶服務作為一個顯示管理器去運行 sway

您還可以使用基於文本的會話管理器,請參閱 顯示管理器#控制台

配置[編輯 | 編輯原始碼]

如果您已經在使用i3,則可以將i3配置文件複製到~/.config/sway/config ,並且它開箱即用。否則,請將位於 /etc/sway/config 的示例配置文件複製到 ~/.config/sway/config。 有關配置的信息,請參見 sway(5)

鍵盤映射[編輯 | 編輯原始碼]

默認情況下,sway 從 US QWERTY 鍵盤映射開始。配置每個輸入:

~/.config/sway/config
input * {
    xkb_layout "us,de,ru"
    xkb_variant "colemak,,typewriter"
    xkb_options "grp:win_space_toggle"
}

input <identifier> xkb_model "pc101"

更多細節請查看 xkeyboard-config(7)sway-input(5).

在啟動sway時,鍵盤映射也可以使用環境變量進行配置(XKB_DEFAULT_LAYOUTXKB_DEFAULT_VARIANT,等)。配置選項優先於環境變量

打字延遲和速率[編輯 | 編輯原始碼]

要更改類型延遲和速度,您可以在input分區添加以下行:

~/.config/sway/config
input <identifier> repeat_delay 300
input <identifier> repeat_rate 30

狀態欄[編輯 | 編輯原始碼]

Sway 附帶了一個默認狀態欄,其形式為 swaybar ,可在純 Wayland 環境中運行。swaybar 可以調用 shell 腳本或其他程序來在狀態欄中顯示信息。有關詳細信息,請參略 sway-bar(5)swaybar-protocol(7)

提示:waybar是一個包含(swaybar)的替代方案。

安裝 i3status 是在 Wayland 下獲取實用的默認狀態欄的一個選項。您所要做的就是在 sway 配置的末尾添加以下代碼段:

~/.config/sway/config
bar {
    status_command i3status
}

如果要為 i3status 啟用色彩輸出,則需要在 i3status 配置中調整以下部分:

~/.config/i3status/config
general {
    colors = true
    interval = 5
}

壁紙[編輯 | 編輯原始碼]

在sway中顯示壁紙由專用程序處理,該程序單獨打包為 swaybg。它是運行輸出命令所必需的。 以下行可以附加在 sway 配置的末尾,他會在在所有顯示器上設置背景圖像(輸出與名稱 "*"匹配):

~/.config/sway/config
output "*" bg /path/to/image fill

當然,您必須根據壁紙替換文件名和路徑。

如果只需要純色背景,可以按如下方式設置:

output * bg #000000 solid_color

您可以使用 azoteAUR 作為 GTK3 前端來運行 swaybg。

輸入設備[編輯 | 編輯原始碼]

可以調整特定的輸入設備配置。例如,若要為所有觸摸板啟用點擊以單擊和自然滾動,請執行以下操作:

~/.config/sway/config
input type:touchpad {
    tap enabled
    natural_scroll enabled
}

要為特定觸摸板設置配置,請使用 swaymsg -t get_inputs 獲取設備標識符並用它來代替 type:touchpad

注意: 來自於 swaymsg -t get_inputs 命令的輸出可能包含「\」來轉義「/」等符號(e.g. "2:14:ETPS\/2_Elantech_Touchpad")。 這些需要刪除。

更多文檔和選項,如加速曲線或完全禁用輸入,可以參照sway-input(5).

HiDPI[編輯 | 編輯原始碼]

使用 output 命令在你的配置文件中設置顯示比例因子。 比例因子可以是分數,但對於 HiDPI 屏幕,它通常為 2。

~/.config/sway/config
output <name> scale <factor>

您可以使用以下命令找到您的顯示名稱:

$ swaymsg -t get_outputs

自定義鍵綁定[編輯 | 編輯原始碼]

鍵盤上的特殊鍵 可用於執行命令,例如控制音量、監視亮度或媒體播放器:

~/.config/sway/config
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
bindsym XF86MonBrightnessUp exec brightnessctl set 5%+
bindsym XF86AudioPlay exec playerctl play-pause
bindsym XF86AudioNext exec playerctl next
bindsym XF86AudioPrev exec playerctl previous
bindsym XF86Search exec $menu

有關詳細信息和替代實用程序,請參閱 PulseAudio鍵盤音量控制ALSA鍵盤控制音量背光實用程序MPRIS。 要允許在鎖屏處於活動狀態時執行鍵綁定,請將 --locked 參數添加到 bindsym。

bindsym --locked XF86AudioPlay exec playerctl play-pause
提示:wevAUR 是一個工具,它提供類似於 xorg-xev的功能,但在Wayland上。
注意: Systemd 處理一些特殊鍵,如電源鍵和蓋子打開和關閉事件。這些可能會干擾在 sway 中配置的那些。請參閱loginctl(1)logind.conf(5) 以獲取有關如何在systemd中配置它們的詳細信息。

Graphical indicator bars[編輯 | 編輯原始碼]

通常希望在調整某些百分比值設置(如亮度或音量)的當前級別由圖形欄指示。在 Sway 中提供此工具的一個不錯的選擇是wobAUR (或者 wob-gitAUR),它提供了流行的 X 工具 xobAUR 的功能子集,但作為實現層殼協議的本機 Wayland 實用程序。有關使用示例,請參閱項目網站

Overview of workspaces[編輯 | 編輯原始碼]

如果您正在使用很多帶有許多窗口的工作區,並且無法再跟蹤位置,那麼 sovAUR 可以派上用場。 它是一個疊加層,顯示所有工作區的架構,以使 sway 導航更容易。它顯示程序名稱,窗口標題,支持多輸出設置。有關詳細信息,請參閱 項目網站

空閒管理[編輯 | 編輯原始碼]

Sway 有一個名為 swayidle 的專用空閒管理守護程序來處理空閒會話。有不同的方法來啟動和參數化守護程序。最簡單的方法是使用 sway 本身的配置。 swayidle 接受大量參數來配置事件timeout (又名 空閒), resume (從睡眠中恢復), before-sleep etc。參見 swayidle(1)了解更多細節和事件的進一步解釋。然後,可以為每個事件分配一個操作。要為一個事件分配多個操作,只需重複觸發器即可。

根據以下說明 swayidle 可在 30 分鐘後鎖定屏幕,並在 5 秒後將其關閉:

~/.config/sway/config
exec swayidle -w \
	timeout 1800 'swaylock -f' \
	timeout 1805 'swaymsg "output * dpms off"' \
	resume 'swaymsg "output * dpms on"'

要更快地關閉鎖定屏幕,例如在10秒後,請為鎖定管理器設置進程列表,並相應地執行 swaymsg "output * dpms off" ,如下所示:

timeout 10 'if pgrep -x swaylock; then swaymsg "output * dpms off"; fi'

要在掛起和暫停任何播放媒體之前鎖定屏幕,請將以下說明修改為 swayidle 命令:

before-sleep 'playerctl pause'
before-sleep 'swaylock'
注意: Systemd 也處理一些空閒事件,這些事件可能與在 sway 中配置的事件衝突。請參閱 loginctl(1) and logind.conf(5) 以獲取有關如何配置它們的詳細信息。

浮動窗口[編輯 | 編輯原始碼]

要啟用浮動窗口或窗口分配,請打開應用程序,然後使用 app_idclassinstancetitle 屬性來啟用浮動窗口/窗口分配。以下命令將列出所有打開的窗口的屬性。

$ swaymsg -t get_tree

只獲取所有打開的窗口的 app_id,請使用:

$ swaymsg -t get_tree | grep "app_id"

只獲得當前選中窗口的 app_id,請使用:

$ swaymsg -t get_tree | jq -r '..|try select(.focused == true)'

如果某些窗口的app_id為 null,則可能必須使用 class 和/或 instance 屬性來啟用浮動模式/窗口分配。您可以搜索輸出並為窗口創建細粒度規則。

~/.config/sway/config
for_window [app_id="galculator"] floating enable
assign [class="firefox"] -> 3
assign [class="^Urxvt$" instance="^htop$"] -> 9

這類似於使用 xorg-xprop 去查找 class 或者 wm_name 屬性,在 X11 中。

使用多個監視器時,浮動暫存器窗口可能會變得太大,覆蓋多個監視器。以下命令將浮動窗口居中並調整為當前監視器大小的 80%:

$ swaymsg move position center; swaymsg resize set 80ppt 80ppt

剪貼板[編輯 | 編輯原始碼]

本文或本章節可能需要合併到Clipboard

附註: 不針對與 Sway。(在 Talk:Sway 中討論)

默認情況下,每當窗口關閉時,剪貼板都會被清空。這可能是一個令人驚訝的默認行為。

必須安裝「剪貼板管理器」才能使剪貼板的內容在窗口之間共享

舉一個針對於 Wayland 而設計的剪貼板管理器clipman,它可以通過clipmanAURclipman-gitAUR進行安裝。

如果要在 Sway 中使用 clipman , 請將以下行添加到配置文件中:

~/.config/sway/config
exec wl-paste -t text --watch clipman store --no-persist

Xresources[編輯 | 編輯原始碼]

在 Sway 中使用 ~/.Xresources 需要把他拷貝到~/.Xdefaults

XWayland[編輯 | 編輯原始碼]

請參閱 Wayland#XWayland 了解詳細信息和可用軟件包的概述。

默認情況下,XWayland 默認是啟用狀態。

如果要完全禁用 XWayland 並運行「純」Wayland 會話,請設置以下內容以停用 XWayland 的使用:

~/.config/sway/config
xwayland disable
注意: 一些程序需要特殊的環境變量或配置選項才能在Wayland下本機運行,而其他程序(包括大多數專有應用程序)根本不支持Wayland。目前,建議將 XWayland 保持打開狀態,以便可以使用舊版應用程序。

使用另一個wlroots渲染器[編輯 | 編輯原始碼]

您可以通過指定WLR_RENDERER環境變量來使用另一個 wlroots 渲染器。 可用列表位於wlroots 文檔.

提示和技巧[編輯 | 編輯原始碼]

初始化啟用 CapsLock/NumLock[編輯 | 編輯原始碼]

默認情況下,sway 會在初始化啟動時禁用 CapsLockNumLock 鍵。 要改為在啟動時啟用它們,請將鍵盤的 xkb_capslock 和/或 xkb_numlock 輸入配置設置為 enable。例如,若要在所有鍵盤上執行此操作,請將以下行添加到 sway 配置中:

~/.config/sway/config
input * xkb_capslock enable
input * xkb_numlock enable

在任何情況下,都可以通過按鍵盤上的相關鍵來切換 CapsLockNumLock 狀態。

注意: 使用通配符標識符啟用這些可能會導致 Firefox 在重新加載您的 sway 配置文件時崩潰: Bugzilla 1652820,請嘗試改為指定鍵盤

當前鍵盤布局[編輯 | 編輯原始碼]

可以按如下方式檢索當前鍵盤布局,其中 kbd_identifier 需要替換為鍵盤的標識符:

$ swaymsg -t get_inputs | jq -r '.[] | select(.identifier == "kbd_identifier") | .xkb_active_layout_name'

組合鍵[編輯 | 編輯原始碼]

設置 PrintScreen 作為 compose key:

$ swaymsg 'input * xkb_options compose:prsc'

組合鍵的組合也可以在 XCompose 文件中配置,需要重新啟動應用程序才能使此更改生效。

這篇文章的某些內容需要擴充。

原因: Explain what the following tip means (why is it useful). (在 Talk:Sway 中討論)

您可以在 /usr/include/X11/keysymdef.h 中查找鍵名,或者使用類似於 xev(1) 的調試工具: xkbcli-interactive-wayland(1)(位於 /usr/lib/xkbcommon/)。

背光切換[編輯 | 編輯原始碼]

若要使用鍵(例如Pause)關閉(和打開)顯示器,請在 Swayconfig 中綁定以下腳本:

#!/bin/sh
read lcd < /tmp/lcd
    if [ "$lcd" -eq "0" ]; then
        swaymsg "output * dpms on"
        echo 1 > /tmp/lcd
    else
        swaymsg "output * dpms off"
        echo 0 > /tmp/lcd
    fi

屏幕捕獲和屏幕共享[編輯 | 編輯原始碼]

請查看 屏幕捕獲#Wayland.

色溫調節[編輯 | 編輯原始碼]

請查看 背光#Wayland.

用鍵盤控制swaynag[編輯 | 編輯原始碼]

Swaynag 是 sway 附帶的默認警告/提示程序,僅支持用戶與鼠標交互。諸如swaynagmodeAUR 之類的幫助程序可用於通過鍵盤快捷鍵啟用交互。

Swaynagmode 的工作原理是首先啟動 swaynag,然後偵聽觸發操作的信號,例如選擇下一步按鈕、消除提示或接受所選按鈕。這些信號是通過啟動帶有控制參數的 swaynagmode 腳本本身的另一個實例 swaynagmode --select rightswaynagmode --confirm來發送的。

默認情況下,Swaynagmode在 sway初始化時觸發 mode nag , 再退出時回復 default 。 這樣,您就可以在 sway 配置中輕鬆定義鍵綁定:

~/.config/sway/config
set $nag exec swaynagmode
mode "nag" {
  bindsym {
    Ctrl+d    mode "default"

    Ctrl+c    $nag --exit
    q         $nag --exit
    Escape    $nag --exit

    Return    $nag --confirm

    Tab       $nag --select prev
    Shift+Tab $nag --select next

    Left      $nag --select next
    Right     $nag --select prev

    Up        $nag --select next
    Down      $nag --select prev
  }
}

請注意,從 sway 版本 1.2 開始,模式名稱區分大小寫。

您可以將 sway 配置為使用 swaynagmode 和配置命令 swaynag_command swaynagmode.

更改光標主題和大小[編輯 | 編輯原始碼]

要設置 光標主題 和大小:

~/.config/sway/config
seat seat0 xcursor_theme my_cursor_theme my_cursor_size

其中 my_cursor_theme 可以設置為或替換為特定值 ,如 default, Adwaita 或者 Simple-and-Soft,以及 my_cursor_size值如 48.

您可以使用 echo $XCURSOR_SIZEecho $XCURSOR_THEME去檢查它們的值。

Note that you need to restart the application to see the changes.

注意: Wayland 使用客戶端光標。應用程序可能不會評估$XCURSOR_SIZE$XCURSOR_THEME的值。

使用 systemd 管理特定於 Sway 的守護程序[編輯 | 編輯原始碼]

Systemd 提供了一個 graphical-session.target 用戶單元,每當任何圖形會話正在運行時,無論是Xorg還是Wayland,它都是活躍的。應該在所有圖形環境中運行的用戶服務可以綁定到該 target, 它還允許將特定於窗口管理器的目標綁定到 graphical-session.target 去啟動和停止僅在該窗口管理器下運行的服務。請參閱systemd.special(7)

用戶可能希望僅在當前窗口管理器為 Sway 時才啟動某些服務/守護程序(如 swayidlekanshi),並且他們可能還希望這些服務在 Sway 停止時停止。此外,運行 systemd-oomd.service(8) 的用戶可能希望將服務放在單獨的 cgroup 中,以便單個內存密集型服務不會關閉整個 Sway 會話(請參閱 Fedora bug 報告)。

部分或全部此功能由 Arch Sway 程序包提供。例如,社區中的 sway 包提供 sway-session.target 文件,而 swaysway-gitAUR 都為/etc/sway/config.d/目錄提供一個 50-systemd-user.conf 插入文件。如果 Sway config 文件包含 include /etc/sway/config.d/*則此文件將所需的環境變量導入到 systemd 用戶會話和 dbus 中。

如果您打算使用下面描述的 roll-your-own 方法或使用專業包(如sway-systemd-gitAURsway-services-gitAUR)來提供功能,則應考慮刪除提供相同功能的文件。

此功能可以在一個 roll-your-own 基礎上通過創建一個 sway-session.target 並讓那些守護進程/服務通過sway-session.target進行提供。 此 systemd 目標應該是用戶目標(請參見 systemd/用戶)。 例如:

~/.config/systemd/user/sway-session.target
[Unit]
Description=Sway compositor session
Documentation=man:systemd.special
BindsTo=graphical-session.target
Wants=graphical-session-pre.target
After=graphical-session-pre.target

然後,將以下行添加到 Sway 的配置文件中(例如,將該行追加到 ~/.config/sway/config或將新文件添加到 /etc/sway/config.d/):

~/.config/sway/config
...
...
...
exec_always "systemctl --user import-environment; systemctl --user start sway-session.target"

當上述行在配置文件中, 每當 Sway 啟動,他也會運行 sway-session.target.

最後,將所需的服務鏈接到 sway-session.target。例如,添加 kanshi (或者 kanshi-gitAUR) 服務:

~/.config/systemd/user/kanshi.service
[Unit]
Description=Dynamic output configuration for Wayland compositors
Documentation=https://sr.ht/~emersion/kanshi
BindsTo=sway-session.target

[Service]
Type=simple
ExecStart=/usr/bin/kanshi

[Install]
WantedBy=sway-session.target

當這個 用戶單元啟用 時,它僅在 Sway 運行時激活,並在 Sway 停止時停用。

sway-session.target文件的創建和環境的導入也可以通過安裝sway-systemd-gitAUR來完成。除了將服務分離到 cgroup 中之外,sway-systemd 還將每個 GUI 應用程序放在自己的 cgroup 中。這樣就可以對單個應用程序施加每組資源約束。請參閱 sway-systemd README

更改屏幕分辨率[編輯 | 編輯原始碼]

您可以使用圖形程序 wdisplaysAUR 或終端程序 wlr-randrAUR 來更改分辨率、旋轉和排列顯示。

創建無外設輸出[編輯 | 編輯原始碼]

創建與物理 video 接口(HEADLESS-1, HEADLESS-2等), 無關的輸出:

$ swaymsg create_output

打印新輸出的說明:

$ swaymsg -pt get_outputs | grep -A 10 HEADLESS

使用 output 命令來配置新的輸出,例如:

~/.config/sway/config
output HEADLESS-1 {
pos 1920,0
mode 1280x720@75Hz
}

疑難解答[編輯 | 編輯原始碼]

應用程序啟動器[編輯 | 編輯原始碼]

提示:Sway 的 wiki 還包含 已知應用程序啟動器的列表.

i3-dmenu-desktop, dmenu, 和 rofi 在 Sway 中都運行得相對較好,但都在 XWayland 下運行,並且都存在相同的問題,如果將光標移動到本機 Wayland 窗口,它們可能會變得無響應。此問題的原因是 Wayland 客戶端/窗口無法訪問輸入設備,除非它們具有屏幕焦點。XWayland 服務器本身就是 Wayland 合成器的客戶端,因此其 XWayland 客戶端之一必須具有焦點才能訪問用戶輸入。但是,一旦其某個客戶端具有焦點,它就可以收集輸入,並通過 X11 協議將其提供給所有 XWayland 客戶端。因此,將光標移動到 XWayland 窗口並按 Esc 鍵應該可以解決此問題,有時運行 pkill 也可以。

bemenu 是一個原生的 Wayland dmenu 替代品,可以選擇與 j4-dmenu-desktop 結合使用,為啟動桌面文件提供 Wayland-native 組合(如 i3-dmenu-desktop):

j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite'

如果選擇不禁用 XWayland,則可能需要將 BEMENU_BACKEND 環境變量設置為「wayland」。

您還可以使用浮動終端和 fzf 構建自己的終端,如 GitHub issue中所述。

plasma-workspace 軟件包提供的 krunner 應用也可以作為啟動器,提供XWayland和本機Wayland支持。

rofi-lbonn-wayland-gitAURrofi 的一個分支,可以在 Wayland 中工作,如果你需要在 X11 會話中啟動它,它也有一個 -x11標誌

wofi 是一個命令啟動器,它提供了一些與rofi相同的功能,但在Wayland下運行。wofi缺少rofi的一些功能,如SSH模式和窗口切換模式。它基於 wlroots 庫,並使用GTK3進行渲染。它與 sway 配合得很好。

虛擬化[編輯 | 編輯原始碼]

Sway 可以與 VirtualBoxVMware ESXi 一起使用。

要使Sway在 QEMU 中工作,必須使用 -vga qxl 參數啟動QEMU。另見 QEMU#qxl

無法從 tty 啟動 Sway[編輯 | 編輯原始碼]

對於 ESXi, 您需要在 Hardware Configuration > Video card settings 下啟用3D支持。另見 VMware#Enable 3D graphics on Intel, Optimus and AMD

無可見光標[編輯 | 編輯原始碼]

當使用某些圖形驅動程序(例如VMSVGA圖形控制器或專有的 NVIDIA 驅動程序)時,光標可能會變得不可見。以通過使用軟件光標來解決此問題,具體討論可以參考 [3] 中的相關內容:

$ export WLR_NO_HARDWARE_CURSORS=1

未檢測到 Sway socket[編輯 | 編輯原始碼]

使用 swaymsg 參數,例如 swaymsg -t get_outputs,有時會返回以下消息:

sway socket not detected.
ERROR: Unable to connect to

當在終端多路復用器(如 gnu 屏幕或 tmux)內運行時。這意味着swaymsg 無法連接到 SWAYSOCK 中提供的套接字。

要查看 SWAYSOCK 的當前值,輸入:

$ env | grep -F "SWAYSOCK"
SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock

要解決這個問題,您可以嘗試基於正在運行的晃動過程連接到一個套接字:

$ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock

若要避免此錯誤,請在多路復用器之外運行該命令。

無法獲取 socket 路徑[編輯 | 編輯原始碼]

swaymsg -t 命令請求在tty上的消息可能會返回以下消息:

Unable to retrieve socket path

SWAYSOCK 環境變量在啟動Sway後設置,因此解決此錯誤的一個方法是在Sway內部的終端中請求 swaymsg -t [message]

按鍵設置和鍵盤布局[編輯 | 編輯原始碼]

默認情況下,如果你使用多個鍵盤布局,例如 input * xkb_layout "us,ru",在切換到某個次要布局時可能會導致綁定失效。

感謝 https://github.com/swaywm/sway/pull/3058 ,你只需要在敏感的 bindsym 行中添加 --to-code 鍵,就像這樣:

bindsym --to-code {
  $mod+$left focus left
  $mod+$down focus down
  $mod+$up focus up
  $mod+$right focus right
}

或者你可以創建一個變量 set $mybind bindsym --to-code,然後將所有的 bindsym 實例替換為 $mybind,就像這樣: $mybind $mod+w thing

Java 應用[編輯 | 編輯原始碼]

當打開一些基於Java的應用程序時,例如JetBrains的編輯器如IntelliJ、CLion或PyCharm,可能會顯示空白屏幕。為了解決這個問題,可以設置環境變量 _JAVA_AWT_WM_NONREPARENTING 為1來啟動應用程序。

如果你從像 rofidmenu 這樣的啟動器中啟動應用程序,你可能希望修改應用程序的桌面入口,如 Desktop entries#Modify environment variables 所示。

在OpenJDK 11和Sway 1.5中,已經修復了一些 Java 應用程序的問題。然而,對於某些應用程序,需要進行額外的配置才能使用更新版本的 OpenJDK。對於 Android Studio 來說,你需要設置 STUDIO_JDK=/usr/lib/jvm/java-11-openjdk/[4]

邊框上的滾動[編輯 | 編輯原始碼]

如果在應用程序邊框上使用鼠標滾輪導致Sway崩潰,您可以為 app_id(例如Firefox)使用border none 來禁用邊框。

程序無法打開顯示[編輯 | 編輯原始碼]

如果一個程序在出現「無法打開顯示」錯誤消息時崩潰,那麼您正在使用的程序很可能是 X11程序。你可以使用 XWayland 兼容層在韋蘭下運行 x11程序,詳見 #XWayland

參見[編輯 | 編輯原始碼]