Exportování grafického rozhraní programu



Programy s grafickým rozhraním lze spouštět na serveru
THUNDER v režimu vzdáleného přihlášení a jejich grafické
rozhraní přenést na lokální počítač.

Předpokládejme, že uživatel pracuje na lokálním počítači local.upol.cz s operačním systémem UNIXového typu (například Linux) obsahujícím grafickou nadstavbu založenou na X-window (CDE, KDE, a podobně). Přitom tento uživatel má zřízen účet na výpočetním serveru thunder.upol.cz, nebo obecně na jakémkoli vzdáleném počítači UNIXového typu. Na tomto vzdáleném počítači systém X-window být nemusí.

Grafický systém X-window (původní norma pochází, myslím, od sdružení X-OPEN) je zhruba řečeno grafická nadstavba nad operačním systémem unixového typu. Rozděluje se na dva subsystémy, X server a subsystém X klientů. X server zajistuje ovládání grafických zařízení a zajištuje zobrazení grafických primitiv, jednoduše řečeno, kreslí na obrazovku. Naopak X klientem se může stát libovolný aplikační program, pokud požaduje nějaké služby po X serveru, tedy pokud má grafické rozhraní. Například touží vykreslit na obrazovku dialogové okno, tak o to požádá X server. Ve skutečnosti je to ovšem složitější, neboť X server umi "kreslit" jen elementární prvky, takže aplikační prokram musi svuj požadavek třeba na dialogové okno rozložit do příslušných elementů. Aby programátor nezešedivěl při programování grafického rozhraní, je problém řešen pomocí knihoven (athena, gtk,...). Programátor zavolá ve svém programu knihovní funkci třeba na vykreslení okna a ta už zařídí potřebnou komunikaci s X serverem. Existuje speciální X klient, který se stará o správu grafických rozhraní (oken) ostatních X klientů. Jde o tzv. správce oken (například fvwm, fvwm2, twm, Enlightment, Sawfish,...). Na žádost uživatele zajišťuje například změnu polohy nebo velikosti nekterého okna, zavírání oken a podobně.

Základní skutečností je to, že X server a X klient nemusí fyzicky běžet (využívat zdroje) na stejném počítači, neboť protokol, kterým spolu komunikují, je síťový protokol TCP-IP. Pro ustanovení komunikace mezi X serverem na jednom počítači (například local.upol.cz) a X klientem na obecně jiném počítači (například thunder.upol.cz) jsou potřeba dva základní kroky.

  • Na lokálním počítači local.upol.cz...

spustí uživatel systém X-window (například příkazem startx), čímž se stane majitelem X serveru. První spuštěný X server má číslo 0 (nula), další 1, atd. Jednoznačná specifikace tohoto X serveru je tedy local.upol.cz:0. Spustí-li nyní uživatel na počítači local.upol.cz aplikaci s grafickým zozhraním, bude její výstup automaticky směrován na local.upol.cz:0. Nyní musí uživatel povolit také programům z počítače thunder.upol.cz směrování jejich grafického rozhraní na X server local.upol.cz:0. Učiní tak příkazem


   xhost  thunder.upol.cz

   thunder.upol.cz being added to access control list
který přidá adresu thunder.upol.cz do seznamu akceptovaných počítačů.
  • Na vzdálený počítač thunder.upol.cz...

se následně uživatel připojí v režimu vzdáleného přihlášení. Teď už jen stačí přesměrovat grafické výstupy programů spouštěných v režimu vzdáleného přihlášení na počítači thunder.upol.cz na počítač local.upol.cz a X server 0. To lze provést nastavením systémové proměnné DISPLAY...


   export DISPLAY=local.upol.cz:0

A to je vše. Ted stačí vyzkoušet na jednoduché aplikaci, že vše funguje tak jak má...
   xclock &


Poznamenejme, že pro pohodlnější práci můžeme uložit dva klíčové příkazy do osobních konfiguračních souborů (.bash_profile, .bashrc). Xhost thunder na lokálním počítači a export DISPLAY na serveru THUNDER.