我花了一些時間來正確設置多個顯示器的設置,並且在我登入時工作正常,但在登入畫面或其他使用者中則不正確。
如何為所有使用者和登入畫面全域設定顯示設定?
答案1
根據您設定係統的方式,它可能就像複製檔案一樣monitors.xml
簡單來自正確設定的用戶致所有使用者:
要對一個使用者進行測試:
cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/
然後登出測試用戶如果已經登入,重新登入並查看一切是否正確。
所有使用者的命令:
cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done
登入畫面的命令:
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/
命令對於所有未來的用戶1:
sudo mkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/
註1:您將來將創建的所有用戶
答案2
設定您的螢幕配置對於每個登入用戶(這不會更改登入畫面上的配置),您可以.desktop
在中建立一個文件/etc/xdg/autostart
怎麼做
透過運行找出您想要旋轉的螢幕的名稱
xrandr
。它將輸出多行,其中幾行如下所示:VGA-0 connected
這將為您提供有關所連接螢幕的名稱的資訊。
- 選擇您想要旋轉的那個,在下面的範例中
VGA-0
使用(例如)建立啟動器
gedit
:sudo -i gedit /etc/xdg/autostart/set_screens.desktop
將以下文字貼到文件中:
[Desktop Entry] Name=set_screens Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left" Type=Application
替換行中:
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
字串:
VGA-0
由您的(旋轉的)螢幕名稱組成。
重要筆記
在行
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
我包括了一個
sleep 10
.這是因為有時,xrandr
如果在桌面「完成」載入之前運行得太早,命令就會中斷。可能您需要增加休息時間,或者您可以嘗試將其省略。在命令中,實際上是登入後10秒後螢幕旋轉任何用戶。命令:
xrandr --output VGA-0 --rotate left
向左旋轉螢幕,不用說,如果您想要其他類型的旋轉,您可以選擇
left
,right
,normal
,inverted
(另請參閱這裡)。
解釋
您可以透過將文件.desktop
(啟動器)放入~/.config/autostart
.這只會為單一使用者運行啟動器。如果您執行相同的操作,但將啟動器放在 中/etc/xdg/autostart
,則該命令會在任何時候執行任何使用者登錄,除非特定使用者在 Dash > 啟動應用程式中停用了他或她的啟動器
另外,您只需將本機~/.config/monitors.xml
檔案複製到/var/lib/lightdm/monitors.xml
即可使設定在登入畫面上起作用。
在我看來,此解決方案與上面的解決方案( 中的啟動器)的組合/etc/xdg
是最簡單的解決方案,可以準確實現您對登入畫面和(任何)使用者的期望。此外,啟動器的解決方案/etc/xdg
(非常)很容易逆轉或更改,以防您需要進行另一個設置,而無需在(每個)用戶級別上編輯許多文件,因為用戶的設置和登錄屏幕都是管理的所有使用者同時保存在兩個簡單的檔案中。
答案3
只是想為任何發現此問題遇到類似問題的人添加評論。每次登入時,我都被舊顯示器的解析度 (1280x1024) 困住,但登入畫面和訪客使用者登入使用正確的預設值 1680x1050。
在過去的四個月裡,我讀了很多帖子來尋找答案,並閱讀了xorg.conf、monitors.xml、lightdm和蘭德爾和其他建議 - 但一些配置更改很複雜,並且存在完全破壞顯示的風險,因此我最終使用 GUI 在每次登入時手動更改監視器設定。
今天我在 .config 資料夾中對舊解析度進行了 grep 操作。
grep -HrnIF '1280' .config | less
第一個結果是包含此內容的 ~/.config/autostart/xrandr.desktop 文件,
Exec=xrandr -s 1280x1024 -r 75
所以我只是將文件移出那裡。賓果遊戲,我登入並獲得預設的 1680x1050 解析度。
我花了幾個小時的時間進行搜索,但找不到足夠接近的答案,因此將其發佈在這裡,以防它對某人有用。
答案4
您可能想要向 附加一些內容/etc/lightdm/lightdm.conf
。在這裡,我們建立一個腳本,使用xrandr
命令來設定您的顯示器。您可以使用一些圖形 RandR 工具來為您建立命令,例如arandr
.就我而言,腳本如下所示:
#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off
您可以將此腳本放在/usr/share
任何您想要的位置。您的腳本可能看起來不那麼複雜,因為這是針對複雜的雙顯示器設定。然後附加類似的內容:
session-setup-script=/usr/share/mycustomxrandr.sh
和:
display-setup-script=/usr/share/mycustomxrandr.sh
確保該文件是可執行的,因此:
chmod a+x mycustomxrandr.sh
將session-setup-script
設定顯示為後您透過 LightDM 登錄,並將display-setup-script
變更登入畫面的顯示。