我在 Ubuntu 20 上,在两个显示器上使用 i3 作为窗口管理器。
HDMI-1
应该是我左边的主显示器,VGA-1-1
应该在它的右边。我的第一个工作区(我的终端工作区)必须在上打开HDMI-1
并且必须执行screenfetch
命令。另一个显示器必须在我的第二个工作区(用于 Firefox)上。
我为 i3 设置了以下配置(.config/i3/config
):
set $workspace0 "0: Terminal"
set $workspace1 "1: Firefox"
exec --no-startup-id xrandr --output HDMI-1 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP-1 --off --output VGA-1-1 --mode 1920x1080 --pos 1920x0 --rotate normal
workspace $workspace0 output HDMI-1
workspace $workspace1 output VGA-1-1
exec --no-startup-id gnome-terminal -- zsh -c "screenfetch; zsh"
这是我的问题。当我重新启动时,它实际上有 60% 的时间可以正常工作。大多数时候它运行良好。
但有时,我的VGA-1-1
显示器会完全变成紫色(这是 Ubuntu 20 登录屏幕的背景)。有时我可以看到实际的背景和状态栏,但当我打开本应出现在此显示器上的内容时(例如,当我打开分配给 的 Firefox 时$workspace1
),什么也没有发生。
我唯一的解决方案是打开arandr
并更改和保存我的设置。保存设置后,xrandr 重置,然后我终于可以看到我的VGA-1-1
所有内容了。
我想了解目前出了什么问题。为什么它有时能工作,有时不能?更重要的是:我该如何解决这个问题?
仅供参考:我使用 polybar 脚本执行我的 i3 配置前执行 xrandr 命令。我不知道这是否相关,所以我把它放在这里以防万一:
.config/i3/config
:
exec_always --no-startup-id $HOME/.config/polybar/dual_monitors.sh
.config/polybar/dual_monitors.sh
:
#!/usr/bin/env bash
killall -q polybar
echo "---" | tee -a /tmp/polybar_top-primary.log /tmp/polybar_top-secondary.log /tmp/polybar_bottom-primary.log /tmp/polybar_bottom-secondary.log
polybar top-primary >> /tmp/polybar_top-primary.log 2>&1 &
polybar top-secondary >> /tmp/polybar_top-secondary.log 2>&1 &
polybar bottom-primary >> /tmp/polybar_bottom-primary.log 2>&1 &
polybar bottom-secondary >> /tmp/polybar_bottom-secondary.log 2>&1 &
echo "Bars launched..."