多显示器的配置

背景

买了一个4K显示器,和之前的显示器组成双屏一起使用,
结果发现之前使用双屏时的配置都丢了,
重新整理记录一下.

文字和元素大小

polybar

基本都是在 [bar/xxx] 下调整
标题栏字体: font-0
标题栏高度: height
系统托盘图标大小: tray-maxsize

i3

仅仅需要调节标题栏字体的大小(Font for window titles)

rofi

文字大小: 配置文件中的 font
图标大小: 主题配置文件中定义

1
2
3
4
element-icon {
size: 1.0em;
border: 0px;
}

但目前主题文件中的定义会失效,需要在命令中使用

1
rofi ... -theme-str 'element-icon {size: 1.0em;}'

sddm

/etc/sddm.conf.d/ 下新建文件,比如 hidpi.conf,
然后配置如下

1
2
3
4
5
[Wayland]
EnableHiDPI=true

[X11]
EnableHiDPI=true

多屏幕

sddm

如果需要将登陆界面锁定到一个屏幕上,
可以使用如下方法:
/usr/share/sddm/scripts/Xsetup 中写

1
xrandr --output HDMI-0 --off

然后在sddm的配置文件中指定执行该脚本

1
2
[X11]
DisplayCommand=/usr/share/sddm/scripts/Xsetup

目前不知为何,会和hiDPI冲突导致hiDPI无法开启

xrandr

较为初级的做法是使用 --left-of 等方位名词来指定显示器之间的位置关系.
不过更加方便的做法是使用 arandr 保存的配置文件.
目前的配置是

1
2
3
4
xrandr --output DP-0 --primary --mode 3840x2160 --pos 0x0 --rotate normal \
--output DP-1 --off \
--output HDMI-0 --mode 2560x1440 --pos 3840x0 --rotate normal \
--output DP-2 --off --output DP-3 --off --output DP-4 --off --output DP-5 --off

尽管也可以,但目前无需在xrandr中指定屏幕的dpi.

i3

如果有将某workspace放到具体屏幕上的需求,则可以定义

1
workspace 2 output HDMI-0

这里表示默认将 workspace 2 放到名为 HDMI-0的屏幕处,
具体有哪些屏幕,可以使用

  • xrandr
  • xrandr --query
  • xrandr --listmonitors

等命令来查看
另外也可以使用命令完成

1
i3-msg "move workspace 2 to output HDMI-0"

polybar

最坑的就是polybar,默认不会在多个屏幕上显示,需要自己手动定义.
比如在配置文件中增加 [bar/mybar1], [bar/mybar2]
这些不同的bar的区别为

1
2
monitor = ${env:MONITOR:DP-0}
monitor = ${env:MONITOR:HDMI-0}

由于系统托盘只能显示一份,
因此只需要在一个里面定义 tray-position, tray-maxsize

另外一定要在 [module/i3] 中设置

1
pin-workspaces = true

否则无法仅仅显示当前显示器上有哪些workspace.
会显示成混合的,非常奇怪.