如何在 Sway 中设置多个显示器
Sway
![](/data/attachment/album/202001/22/150954eg22gmler0gglnne.png)


Sway 是一种平铺式 Wayland 合成器，具有与 [i3 X11 窗口管理器](https://fedoramagazine.org/getting-started-i3-window-manager/)相同的功能、外观和工作流程。由于 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 0
output eDP1 pos 1920 0
```

你还可以使用 `res` 选项手动指定分辨率：



```
output HDMI1 pos 0 0 res 1920x1080
output eDP1 pos 1920 0 res 1600x900
```

### 将工作空间绑定到显示器上


与多个监视器一起使用 Sway 在工作区管理中可能会有些棘手。幸运的是，你可以将工作区绑定到特定的显示器上，因此你可以轻松地切换到该显示器并更有效地使用它。只需通过配置文件中的 `workspace` 命令即可完成。例如，如果要绑定工作区 1 和 2 到显示器 “DVI-D-1”，绑定工作区 8 和 9 到显示器 “HDMI-A-1”，则可以使用以下方法：



```
workspace 1 output DVI-D-1
workspace 2 output DVI-D-1
```


```
workspace 8 output HDMI-A-1
workspace 9 output HDMI-A-1
```

就是这样。这就在 Sway 中多显示器设置的基础知识。可以在 <https://github.com/swaywm/sway/wiki#Wiki#Multihead> 中找到更详细的指南。




---


via: <https://fedoramagazine.org/how-to-setup-multiple-monitors-in-sway/>


作者：[arte219](https://fedoramagazine.org/author/arte219/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[wxy](https://github.com/wxy) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出


OK
Sway is a tiling Wayland compositor which has mostly the same features, look and workflow as the [i3 X11 window manager](https://fedoramagazine.org/getting-started-i3-window-manager/). Because Sway uses Wayland instead of X11, the tools to setup X11 don’t always work in sway. This includes tools like *xrandr*, which are used in X11 window managers or desktops to setup monitors. This is why monitors have to be setup by editing the sway config file, and that’s what this article is about.

**Getting your monitor ID’s**

First, you have to get the names sway uses to refer to your monitors. You can do this by running:

$ swaymsg -t get_outputs

You will get information about all of your monitors, every monitor separated by an empty line.

You have to look for the first line of every section, and for what’s after “Output”. For example, when you see a line like “*Output DVI-D-1 ‘Philips Consumer Electronics Company’*”, the output ID is “DVI-D-1”. Note these ID’s and which physical monitors they belong to.

**Editing the config file**

If you haven’t edited the Sway config file before, you have to copy it to your home directory by running this command:

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

Now the default config file is located in *~/.config/sway *and called “config”. You can edit it using any text editor.

Now you have to do a little bit of math. Imagine a grid with the origin in the top left corner. The units of the X and Y coordinates are pixels. The Y axis is inverted. This means that if you, for example, start at the origin and you move 100 pixels to the right and 80 pixels down, your coordinates will be (100, 80).

You have to calculate where your displays are going to end up on this grid. The locations of the displays are specified with the top left pixel. For example, if we want to have a monitor with name HDMI1 and a resolution of 1920×1080, and to the right of it a laptop monitor with name eDP1 and a resolution of 1600×900, you have to type this in your config file:

output HDMI1 pos 0 0 output eDP1 pos 1920 0

You can also specify the resolutions manually by using the *res* option:

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

**Binding workspaces to monitors**

Using sway with multiple monitors can be a little bit tricky with workspace management. Luckily, you can bind workspaces to a specific monitor, so you can easily switch to that monitor and use your displays more efficiently. This can simply be done by the workspace command in your config file. For example, if you want to bind workspace 1 and 2 to monitor DVI-D-1 and workspace 8 and 9 to monitor HDMI-A-1, you can do that by using:

workspace 1 output DVI-D-1 workspace 2 output DVI-D-1

workspace 8 output HDMI-A-1 workspace 9 output HDMI-A-1

That’s it! These are the basics of multi monitor setup in sway. A more detailed guide can be found at [https://github.com/swaywm/sway/wiki#Multihead](https://github.com/swaywm/sway/wiki#Multihead).

## Onyeibo

Refreshing and resourceful. Thank you

## onyx

So are you saying through this, mixed with the Nvidia proprietary drivers on an Optimus laptop, I can render a second workspace on another monitor? As far as I know we cant do this right now with Optimus but this would be awesome as a workaround.

## Sebastiaan

Sway doesn’t work with proprietary drivers, at all. There’s a work around for it with a argument you can pass to Sway, but it’s not very user friendly.

## Diego Abad

This this the argument you need to pass if want use nvidia:

“–my-next-gpu-wont-be-nvidia and DO NOT report issues.” 🙂

## sygnal

No, and you should consider using more user & open source friendly hardware in the future. AMD work fantastic on Linux and Sway out of the box! Hell, even Intel is getting in the game!

## arte219

Sway won’t work with the nvidia proprietary drivers, but you can use the i3 window manager. it has the same workflow, it only misses a few things the sway devs added in (such as native i3-gaps and wallpaper support) but these functionalities can be added by installing a few packages.

## raphgro

Thanks.

## Klaus

And what about multiple touch screens? Is there any support for having multiple touch screens now? In X it was so easy, but with wayland I did not know anyone who was able to get it work.