Nevím jestli se tohle bude někdy nekomu hodit, ale kdo ví
Aspoň mě až budu někdy přeinstalovávat
( nevšímejte si mých chabých rozlišení a frekvence u monitorů
)
Měl jsem takové dva problémy:
1. Dva monitory. Pro hraní her bylo potřeba změnit rozlišení na jeden monitor a druhý vypnout, jinak hra běžela mezi oběma monitory a to se jaksi moc hrát nedá
2. XGL. Při spuštění hry na XGL hra blbne a špatně zobrazuje některé věci, proto bylo třeba vypnout XGL pro tuto hru/aplikaci.
1. Změna rozlišení ( vypnutí druhého monitoru )Pro změnu rozlišení v X-kách se hodí program xrandr. Pokud napíšete v konzoli xrandr uvidíte z jakých rozlišení si můžete vybírat a jaké je zrovna akrivní. V mém případě to je:
$ xrandr
SZ: Pixels Physical Refresh
*0 1600 x 600 ( 542mm x 203mm ) *50
1 800 x 600 ( 542mm x 203mm ) 60
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none
Abych dosáhl tohoto výběru musel jsem ve svém xorg.conf mít v sekci "Device" Option MetaModes. V mém případě pro dva monitory se stejným rozlišením 800x600:
Section "Device"
Identifier "NVIDIA Corporation NVIDIA Default Card"
Driver "nvidia"
BusID "PCI:1:5:0"
Option "MetaModes" "800x600,800x600; 800x600,null"
Option "TwinView" "on"
Option "NoLogo" "true"
Option "RandRRotation" "on"
EndSection
Na daném řádku tedy vidíte rozlišení 800x600 pro první i druhý monitor a za středníkem rozlišení 800x600 pro první monitor a null pro druhý. Null znamená, že daný monitor (výstup grafiky) se nebude používat.
Takže když nyní chceme změnit rozlišení z 1600x600 (2x800x600) na 800x600 (jeden monitor, druhý vypnutý) napíšeme pouze:
xrandr --size 1/800x600
A pokud chceme rozlišení na dva monitory:
xrandr --size 0/1600x600
Tak to je vše co se týká rozlišení.
2. Spuštění aplikace bez XGLTyto skripty jsem objevil na anglickém ubuntu fóru a fungují mi dobře... ovšem byly testovány jen v gnome a zřejmě nefungují s fglrx ovladačem. Ale kdo ví třeba už to někdo vyřešil, takže jukejte (
http://www.ubuntuforums.org/showthread.php?t=176636 )
napište:
sudo visudo
a přidejte tuto řádku:
%user_name ALL=NOPASSWD: /usr/bin/Xorgallowlocal
kde user_name je jméno vašeho uživatele. takže třeba: %pepa ALL=NOPASSWD: /usr/bin/Xorgallowlocal
Pak pokračujeme
sudo gedit /usr/bin/Xorgallowlocal
a přidejte:
#!/bin/sh
DISPLAY="$2" XAUTHORITY="$1" xhost local:
uložte, zavřete a pokračujte:
sudo gedit /usr/bin/nonXgl
a tam přidejte:
#!/bin/sh
DISPLAY=":93"
if [ -z "$1" ]; then
echo "Usage: nonXgl <command>"
exit 1
fi
isdisplay=0; isauth=0; for test in $(ps ax | grep "$DISPLAY" | grep Xorg ); do if [ $isauth -eq 1 ]; then export XAUTHORITY="$test"; isauth=0; fi; if [ "$test" = "-auth" ]; then isauth=1; fi; done;
sudo /usr/bin/Xorgallowlocal "$XAUTHORITY" "$DISPLAY"
exec $@
autor píše, že display 93 je defaultní ve většině systémech, ovšem u mě to nefungovalo, tak jsem tam dal display 0 a to mi funguje. tzv.: DISPLAY=":0"
dál je potřeba:
sudo chmod 755 /usr/bin/nonXgl
sudo chmod 755 /usr/bin/Xorgallowlocal
A to je vše. nyní by mělo jít spouštět apliakce bez XGL pomocí:
nonXgl <game>
Takže si nakonec můžete udělat třeba skriptík "play" kde bude třeba:
#!/bin/sh
#
if [ -z "$1" ]; then
echo "Usage: play <game>"
exit 1
fi
xrandr --size 1/800x600
sleep 1
nonXgl $@
sleep 1
xrandr --size 0/1600x600
Skriptu předáte cestu ke "spouštěči" hry třeba: play /home/xxx/ut2004/ut2004 a skript provede:
1. změní rozlišení z 1600x600 na 800x600 a druhý monitor vypne
2. spustí hru bez XGL
3. po vypnutí hry vrátí rozlišení na 1600x600 ( oba monitory )
... no stejně pochybuju, že to někdo využije