Chtěl jsem změnit rozlišení obrazovky na ploše na 1366x768
. Ale moje VESA drivers(AMD REDWOOD)
nezjistil toto rozlišení. Vytvořil jsem tedy skript shellu následovně:-
xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode DVI-0 1368x768_60.00
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off
Uložil jsem to jako lightdmxrandr.sh
v /usr/bin
a udělal z něj spustitelný. Potom jsem přidal následující řádky do /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
(což je ekvivalent dobře známého /etc/lightdm/lightdm.conf
. Používám výše uvedený soubor, protože jsem 14.04, kde není žádný /etc/lightdm/lightdm.conf
.) :-
greeter-session=unity-greeter
display-setup-script=/usr/bin/lightdmxrandr.sh
session-setup-script=/usr/bin/lightdmxrandr.sh
a uložil to. Teoreticky by to mělo změnit rozlišení přihlašovací obrazovky i obrazovky plochy na 1366x768
. To ale překvapivě změnilo pouze rozlišení přihlašovací obrazovky. Rozlišení pracovní plochy se nezměnilo. Později jsem skript přidal do Startup apps a to změnilo rozlišení mé plochy.
Takže chci vědět, proč jsem provedl úpravy v lightdm.conf
soubor (nebo spíše 50-ubuntu.conf
soubor) neovlivnilo rozlišení mé pracovní plochy. Je to nějaký druh chyby, která musí být nahlášena na launchpadu, nebo je špatné říkat, že úpravy v lightdm ovlivní plochu?
PS:- Podle mého názoru to není specifické pouze pro Ubuntu 14.04.
Přijatá odpověď:
Zkoušel jsem podobnou věc a po nějakém ladění si myslím, že jsem přišel na to, co se děje. Váš skript pravděpodobně je spustit a pravděpodobně nastaví rozlišení správně. Protože jej však spouští správce přihlášení, spustí se dříve, než Unity dokončí nastavení vašeho desktopového prostředí a Unity načte svá vlastní nastavení a obnoví rozlišení na to, co jste měli. Takže si myslím, že to, co se stane, je:
- lightdm správně spustí váš skript
- Tím nastavíte požadované rozlišení
- Unity se spustí, načte svá nastavení a vrátí se do výchozího rozlišení, které tam máte
- Vaše rozlišení se vrátí k tomu, co bylo předtím
Nyní se to stane, protože ovladač VESA automaticky nezjistí požadované rozlišení. To znamená, že když změníte rozlišení v nastavení Unity v části Displeje, dáváte mu rozlišení, které není dostupné, pokud nespustíte xrandr
příkazy. Proto je toto při příštím restartu ignorováno a Unity se vrátí k výchozímu rozlišení.
Takže, co musíte udělat, je zpřístupnit rozlišení Unity, poté jej nastavit jako výchozí a nechat jej, aby si s ním poradilo. Chcete-li tak učinit, musíte nejprve přidat tento řádek do /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
:
session-setup-script=/usr/bin/lightdmxrandr.sh
Poté se ujistěte, že /usr/bin/lightdmxrandr.sh
vypadá takto:
xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode DVI-0 1368x768_60.00
Všimněte si, že ve skutečnosti nenastavuji rozlišení, pouze jej zpřístupníte. Jakmile provedete tento restart, přihlaste se. Nové rozlišení by nyní mělo být dostupné v Nastavení => Displeje. Pokud ano, vyberte jej tam, odhlaste se a znovu přihlaste a rozlišení by mělo být nastaveno správně. Nyní by mělo přetrvávat i po restartu.
Alternativní přístupy:
-
Vytvořte
/etc/X11/xorg.conf
soubor, který uvádí požadované rozlišení. Něco jako toto:Section "Monitor" Identifier "Monitor0" Modeline "1368x768_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Modes "1368x768_60.00" EndSubSection EndSection Section "Device" Identifier "Card0" Driver "vesa" EndSection
-
Přidejte skript, který spouští
xrandr
příkazy ke spouštěcím aplikacím vaší relace.