Portál AbcLinuxu, 4. prosince 2025 01:56
Môj domáci desktop používame dvaja. Každý si spúšťa vlastný X server a má vlastné nastavenia a nezávislosť na druhom. Pri spustení musí zadávať číslo displaya a problém nastáva aj pri vzdialenom pripájaní sa na vlastný X server a nejasné umiestnenie X servera na virtuálnej konzole, kde poradie nie je pevne dané, ale zaleží od poradia spustenia. Takže je čas na skript, ktorý to bude pri štarte riešiť automaticky.
Aby pri prepínaní medzi virtálnymi konzolami nebolo nutné postupne stláčaťCtrl+Alt+F7, Ctrl+Alt+F8 (prípadne ešte ďalej) a čakať pár sekúnd, kým sa prepne konzola a monitor, tak si každý užívateľ si v domovskom adresári vytvorí súbor .Xplacing, do ktorého si môže nadefinovať preferované číslo X displaya a číslo virtuálnej konzole, na ktorej má server bežať. Formát súboru je jednoduchý, názov a hodnota:
$ cat ~/.Xplacing # komentar disp :2 vt 08Zvolené číslo displaya a konzole už môžu byť obsadené, v tom prípade sa vyberú prvé voľné.
#!/bin/bash
# spusti X server na preferovanom alebo na 1. volnom displayi a konzole
# uzivatelsky konfiguracny file
XCONFILE=~/.Xplacing
shopt -s extglob
usedvt() {
LC_ALL=C ls -la --color=none /dev/tty{?,??} |
sed -rn '/users/s%.*/dev/tty([0-9]+)$%\1%p' |
tr -d \\n
}
if [[ -r "$XCONFILE" ]] ; then
while read name val; do
case "$name" in
'#'*) #comment
;;
disp) if [[ "$val" == +([0-9]) || "$val" == :+([0-9]) ]]; then
if [[ -f "/tmp/.X${val#:}-lock" ]]; then
echo "Preferred X server is not free. Finding another free."
disp=
else
disp="${val#:}"
fi
else
echo "Unrecognized preferred X server \`$val'. Finding another free."
disp=
fi
;;
vt) if [[ "$val" = +([0-9]) ]]; then
uvt=`usedvt`
if [[ "$val" == [$uvt] || "$val" == 0[$uvt] ]]; then
echo "Preferred virtual terminal is not free. Finding another free."
vt=
else
vt="$val"
fi
else
echo "Unrecognized preferred virtual terminal \`$val'. Finding another free."
vt=
fi
;;
esac
done <"$XCONFILE"
fi
if [[ -z "$disp" ]]; then
for ((d=0; d<15; d++)); do
if [[ ! -f "/tmp/.X$d-lock" ]]; then
disp="$d"
break
fi
done
fi
startx -- ":$disp" ${vt:+vt$vt}
Uložiť napríklad ako /usr/local/bin/sx, nastaviť práva na spustenie a hurá.
Spôsob zisťovania aktívnych X serverov (hľadaním súborov /tmp/.X*-lock) a obsadených konzolí (zisťovaním vlastníka súborov /dev/tty*) nie je veľmi kóšer a asi ani veľmi prenositeľný na inú implementáciu X window system, ale používa niekto z vás niečo iné ako Xorg na stroji, kde sa delí o monitor s niekym iným?. k máte iný jednoduchý a neotravný spôsob, rád sa poučím.
Tiskni
Sdílej:
/etc/X11/gdm/custom.conf problem neresi?
[servers]
0=Standard
1=Standard
Option "GlyphCache" "1" Option "InitialPixmapPlacement" "2"Aj ked musim uznat, ze s tymi optionami spadol (uvedenym sposobom) asi iba raz za posledne 3 mesiace.
Záleží co používáš za verzi. Už dost dlouho nejsou tyhle volby potřeba (jsou nastavené automaticky). Problémy s padáním nvidia ovladačů jsem vyřešil zakomenováním všech speciálních voleb v xorg.conf. Od té doby vše funguje jak má. Každý si pustí novou session a nemusí se starat kde právě je. Přepínání mezi sessions naprosto bez problémů.
$ eix nvidia-drivers -Ic [I] x11-drivers/nvidia-drivers (180.51@20.4.2009): NVIDIA X11 driver and GLX libraries
Co to? Multi-seat?
€ ck-list-sessions
Session2:
unix-user = '501'
realname = 'Honza 'thingie' Bartoš'
seat = 'Seat1'
session-type = ''
active = TRUE
x11-display = ':0'
x11-display-device = '/dev/tty1'
display-device = ''
remote-host-name = ''
is-local = TRUE
on-since = '2009-05-03T09:54:16.417463Z'
login-session-id = '1'
Je tu třeba tenhle krám. Nicméně jako už potřeba mít na stejném počítači pro různé lidi úplně jiné zvlášť spouštěné X servery proklatě dost smrdí.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.