双显示器:使用 xrandr 的 i3 配置有时有效,有时无效

双显示器:使用 xrandr 的 i3 配置有时有效,有时无效

我在 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..."

相关内容