Portál AbcLinuxu, 2. května 2025 05:30
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.