[BSD] remote X
Zahemszky Gábor
Gabor at Zahemszky.HU
2009. Okt. 14., Sze, 19:35:03 CEST
Szia!
> Azzal a problémával találtam szembe magam, hogy:
> "A" gépen fut az X server nvidia kártyával
> "B" gépen szeretnék klienst indítani intel kártyán.
Az X esetén az a szerver, aki a megjelenítést és adatbeolvasást végzi,
és az a kliens, aki kéri valaminek a megjelenítését. Innentől kezdve
(ha te is így értetted), mehetünk tovább. A dolog triviális, ugyanis az
X környezetben ismert egy DISPLAY nevű fogalom, ezt most az egyszerűség
kedvéért mondjuk megjelenítőnek. Egyrészt van egy DISPLAY nevű
környezeti változó, másrészt a "szabványos" X-es alkalmazások szeretnek
kezelni egy -display (ritkábban -d) opciót, ami fent említett
környezeti változó felülbírálására szolgál. Ez a DISPLAY pedig pontosan
azt mondja meg egy programnak, hogy melyik az az X-szerver, amelyik az
adott programtól jövő megjelenítési kéréseket intézi, illetve melyik
X-szerver kezeli a program bemenő adatait (billentyűzet, egér).
Azaz ha B gépen akarsz futtatni valamit amit az A-n akarsz látni (és
az A-n szeretnél vele kommunikálni - egér/billentyű), akkor ennek a
programnak indításkor meg kell mondanod, hogy az A-n szeretnél vele
kommunikálni. ( "X > " a továbbiakban azt jelzi, melyik gépen adod ki a
parancsot)
B > alkalmazás -display A:0 &
formában kell indítanod. (A értelemszerűen az A gép neve, esetleg
IP-címe, de kell a név/cím mögé a :0 is.) És a programnak tök mindegy,
hogy milyen gépen *fut*, megjelenítés szempontjából az X-szerver gép az
érdekes, azaz igaz ugyan hogy egy Intel kártyás gépen fut, de az
nVidia-s gép a megjelenítő.
Persze több buktató is lehet, pl. nem egy, hanem 2, 3, 100 progit
szeretnél futtatni, és mindegyiknél megadni a -display opciót kicsit
kényelmetlen. Ekkor jó a DISPLAY változó:
B > DISPLAY=A:0
B > export DISPLAY
B > progi1 &
B > progi2 &
B > progi100 &
Vagy pl. az -n futó X-szerver nem engedi, hogy egy másik gépről egy
X-kliens csatlakozzon hozzá, Ekkor az X-szerver gépen érdemes
engedélyezni távoli kliensek kapcsolódását, erre az xhost parancsot
szokták javasolni (ez egyszerűbb, de kevéssé biztonságos)
A > xhost +B
formában. Ha a biztonság nagyon fdontos (akkor felejtsd el az X-et),
akkor nézz utána az xauth nevű parancsnak az xhost helyett.
> amire nincs megoldás. Sajnos azt sem tudom, hogy
> milyen kulcsszavakkal lehetne erre a problémára
> keresni.
Kb az X Window System alapszintű működése :-)
Zahy < Gabor at Zahemszky dot HU >
--
#!/bin/ksh
Z='21N16I25C25E30, 40M30E33E25T15U!';
IFS=' ABCDEFGHIJKLMNOPQRSTUVWXYZ ';
set -- $Z;for i;{ [[ $i = ? ]]&&print $i&&break;
[[ $i = ??? ]]&&j=$i&&i=${i%?};
typeset -i40 i=8#$i;print -n ${i#???};
[[ "$j" = ??? ]]&&print -n "${j#??} "&&j=;typeset +i i;};
IFS=' 0123456789 ';set -- $Z;for i;{ [[ $i = , ]]&&i=2;
[[ $i = ?? ]]||typeset -l i;j="$j $i";typeset +l i;};print "$j"
További információk a(z) BSD levelezőlistáról