Linux-Mint

如何讓 xrandr 設置的外部顯示器解析度保持不變

  • January 18, 2022

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,但我遇到了被忽略的問題。許多舊方法正在被取代,我不確定最先進的方法是什麼。

引用自:https://unix.stackexchange.com/questions/120291