如何在 Sway 中設定多個顯示器

2020-01-22 15:09:00

Sway 是一種平鋪式 Wayland 合成器,具有與 i3 X11 視窗管理器相同的功能、外觀和工作流程。由於 Sway 使用 Wayland 而不是 X11,因此就不能一如既往地使用設定 X11 的工具。這包括 xrandr 之類的工具,這些工具在 X11 視窗管理器或桌面中用於設定顯示器。這就是為什麼必須通過編輯 Sway 組態檔來設定顯示器的原因,這就是本文的目的。

穫取你的顯示器 ID

首先,你必須獲得 Sway 用來指代顯示器的名稱。你可以通過執行以下命令進行操作:

$ swaymsg -t get_outputs

你將獲得所有顯示器的相關資訊,每個顯示器都用空行分隔。

你必須檢視每個部分的第一行,以及 Output 之後的內容。例如,當你看到 Output DVI-D-1 'Philips Consumer Electronics Company' 之類的行時,則該輸出 ID 為 DVI-D-1。注意這些 ID 及其所屬的物理監視器。

編輯組態檔

如果你之前沒有編輯過 Sway 組態檔,則必須通過執行以下命令將其複製到主目錄中:

cp -r /etc/sway/config ~/.config/sway/config

現在,預設組態檔位於 ~/.config/sway 中,名為 config。你可以使用任何文字編輯器進行編輯。

現在你需要做一點數學。想象有一個網格,其原點在左上角。X 和 Y 坐標的單位是畫素。Y 軸反轉。這意味著,例如,如果你從原點開始,向右移動 100 畫素,向下移動 80 畫素,則坐標將為 (100, 80)

你必須計算最終顯示在此網格上的位置。顯示器的位置由左上方的畫素指定。例如,如果我們要使用名稱為“HDMI1”且解析度為 1920×1080 的顯示器,並在其右側使用名稱為 “eDP1” 且解析度為 1600×900 的筆記型電腦顯示器,則必須在組態檔中鍵入 :

output HDMI1 pos 0 0output eDP1 pos 1920 0

你還可以使用 res 選項手動指定解析度:

output HDMI1 pos 0 0 res 1920x1080output eDP1 pos 1920 0 res 1600x900

將工作空間系結到顯示器上

與多個監視器一起使用 Sway 在工作區管理中可能會有些棘手。幸運的是,你可以將工作區系結到特定的顯示器上,因此你可以輕鬆地切換到該顯示器並更有效地使用它。只需通過組態檔中的 workspace 命令即可完成。例如,如果要系結工作區 1 和 2 到顯示器 “DVI-D-1”,係結工作區 8 和 9 到顯示器 “HDMI-A-1”,則可以使用以下方法:

workspace 1 output DVI-D-1workspace 2 output DVI-D-1
workspace 8 output HDMI-A-1workspace 9 output HDMI-A-1

就是這樣。這就在 Sway 中多顯示器設定的基礎知識。可以在 https://github.com/swaywm/sway/wiki 中找到更詳細的指南。