如何讓 xrandr 設置的外部顯示器解析度保持不變
tl;博士
我的筆記型電腦總是忘記連接到它的外接顯示器的正確解析度。如何使配置“堅持”?
細節
我有一台執行 Linux Mint 的筆記型電腦,連接到外部 ViewSonic 顯示器。我將其設置為將外接顯示器用作第二個螢幕(即不鏡像)。這工作了幾個星期。
突然間,筆記型電腦不再將其辨識為 ViewSonic,此時它不知道其最佳解析度 (
1600 x 1200
),只允許最大1028 x 768
. 1這對我的筆記型電腦來說根本不起作用,它有1920 x 1200
解析度。經過一番挫折,我找到了這個答案。它幫助我解決了這個問題,如下(命令的輸出是
cvt
下一個命令中使用的模式行):cvt 1600 1200 xrandr --newmode "1600x1200_60.00" 161.00 1600 1712 1880 2160 1200 1203 1207 1245 -hsync +vsync xrandr --addmode VGA-1 1600x1200_60.00
這正是我一直希望我能做到的,但無法通過 GUI 做到。(我仍然喜歡命令行是有原因的……)
這再次奏效了一段時間。但是,當我今天啟動電腦並登錄時,我彈出一個通知區域,其中包含有關不同嘗試模式不起作用的一串錯誤,並且外接顯示器已關閉。我重複了上面的命令,它又開始工作了。
我有一張英偉達卡。當事情開始出現問題時,我嘗試安裝專有驅動程序,但那時外接顯示器根本無法辨識,所以我回到了開源驅動程序。我沒有一個
Xorg.conf
或一個Xorg.conf.d
,只有一個xorg.conf.failsafe
。我不想每次啟動機器時都重複這些命令。有什麼辦法可以把它保存到我的
Xorg.conf
或其他東西上嗎?自從我對 X 做很多事情以來已經有很多年了。有人可以在這裡幫助我嗎?1我一直無法確定發生這種情況的原因。我最好的猜測是有問題的驅動程序更新。
我確信有更好的方法,我認為這一切
udev
現在都已處理,但如果你知道這些命令會解決它,你總是可以把它們變成一個腳本:#!/usr/bin/env bash cvt 1600 1200 xrandr --newmode "1600x1200_60.00" 161.00 1600 1712 1880 2160 1200 1203 1207 1245 -hsync +vsync xrandr --addmode VGA-1 1600x1200_60.00
使其可執行,然後將其添加到桌面環境的啟動應用程序中。如果您的 DE 為您提供選項,這可能是最佳選擇。
如果您不能執行上述操作,作為骯髒的黑客,您可以將它們添加到您的
~/.profile
:if [ ! -t 0 ] then cvt 1600 1200 xrandr --newmode "1600x1200_60.00" 161.00 1600 1712 1880 2160 1200 1203 1207 1245 -hsync +vsync xrandr --addmode VGA-1 1600x1200_60.00 fi
應該確保這
if [ ! -t 0 ]
僅在 GUI 中執行,並且.profile
我記得它是由 mint 的登錄管理器提供的。現在,您應該也可以使用
~/.xsession
,但我遇到了被忽略的問題。許多舊方法正在被取代,我不確定最先進的方法是什麼。