Graficheskaya obolochka X-Window System
Dlya nachala nemnogo istorii i obshchih mest. Predstavim, chto
nam nuzhno napisat' programmu, kotoraya budet rabotat' v
graficheskom rezhime. Nam potrebuetsya: oprashivat' klaviaturu,
snimat' sobytiya i koordinaty myshi, risovat' na ekrane, ... Kak
eto delalos' na MS-DOSe? Ochen' prosto. Pishem odnu bol'shuyu
programmu, v nej - vse: i logika, i obrabotka sobytij, i
slezhenie za peremeshcheniyami myshi, nu, a kogda trebuetsya chto-to
narisovat', my daem komandu na zapis' v porty EGA kontrollera,
risuem piksel... CHerez god poyavlyaetsya kontroller VGA, eshche cherez
god SVGA 800x600, 16 cvetov, vsled za nim UVGA 1024x768, 256
cvetov, zatem XGA 1280x1024, 16Mb cvetov...
Imeem dve nezavisimyh programmy. Odna umeet risovat' na
graficheskom monitore, i voobshche, obsluzhivat' vse eto zhelezo. Ona
nazyvaetsya X-server. Vtoraya programma - nazyvaem ee klient X
Window, risovat' fizicheski ne umeet. Zato ona znaet, chto
imenno nado risovat', i umeet komandovat'. Komandy tipa:
"narisovat' pryamougol'nik", "provesti liniyu", "otkryt' okno",
"vyvesti simvol v zadannom fonte", "oprosit' koordinaty myshi",
i t.p. peredayutsya X-serveru, a tot ih ispolnyaet - risuet.
Format i specifikacii etih komand opublikovany,
standartizovany, i shiroko izvestny. Vse vmeste oni nazyvayutsya
"Protokol X Window".
Itak, povtorim.
X-server. Programma, kotoraya napisana special'no pod
konkretnoe fizicheskoe ustrojstvo (imeetsya v vidu - monitor,
grafkontroller, mysh' i klaviatura), umeet na nem risovat', i
umeet ponimat' komandy risovaniya po protokolu X Window System.
X-klient. Prikladnaya programma, obespechivayushchaya graficheskij
interfejs s pol'zovatelem. Komandy dlya risovaniya na ekrane
peredaet X serveru po protokolu X Window System.
X-terminal. YAshchik (monitor, grafkontroller, mysh',
klaviatura, nu i, estestvenno, processor i operativnaya pamyat'),
na kotorom zapushchena programma X-server. X-terminalom mozhet
sluzhit' samaya obyknovennaya graficheskaya Unix-rabochaya stanciya, na
kotoroj X server vypolnyaetsya, kak odna iz mnogih prikladnyh
zadach. Specializirovannyj X-terminal - yashchik, na kotorom
zapuskaetsya tol'ko X server, i nichego krome. Mozhno ispol'zovat'
PC pod MS-DOSom, na kotorom zapushchena DOSovskaya programma,
realizuyushchaya X server.
Xlib - biblioteka C-ishnyh funkcij, realizuyushchih protokol X
Window System. S pomoshch'yu etoj biblioteki mozhno pisat'
graficheskie programmy - X-klienty.
CHto my s etogo imeem.
My poluchaem universal'nyj GAPI - (Graphical Application
Programming Interface) - sredstvo programmirovaniya graficheskih
prilozhenij. Pol'zovatel'skie graficheskie programmy pri etom
polnost'yu otvyazany ot zheleza, ot konkretnogo grafkontrollera.
O zheleze pust' bespokoitsya X-server.
Protokol X Window umeet "ezdit'" po seti: naprimer po TCP/IP,
ili po DEC-net. Poetomu Xserver mozhet krutit'sya na odnoj
mashine, a X-klient - na drugoj. To est', kartinka risuetsya na
odnoj mashine, a programma, kotoraya ee obespechivaet - krutitsya
na drugoj.
X-server sposoben obsluzhivat' srazu mnogo klientov, prichem vseh
- odnovremenno. Na nashem graficheskom ekrane mozhet byt' otkryto
srazu mnogo okon - kazhdoe okno porozhdaetsya ego sobstvennym X
klientom. Klienty eti mogut byt' zapushcheny i na nashej mashine (k
kotoroj podklyuchena graficheskaya podsistema), i na udalennyh ma-
shinah, soedinennnyh s nami po seti.
CHego nam eto stoit.
Ponyatno chego. Resursov. X Window ochen' lyubit resursy - pamyat',
processor, disk. Sposoben s®est' ih v neogranichennyh koliches-
tvah. A eshche ved' nado programmirovat'. (K schast'yu, ne vsem na-
do). Kto videl, kak vyglyadyat programmy dlya MS Windows ili Mac,
mozhet predstavit' sebe vneshnij vid ishodnyh tekstov X-ovoj
programmy.
Pust' v nashej seti est' mashina s graficheskoj podsistemoj i X
serverom, i setevoj adres etoj mashiny pcat107.foms.msk.ru
na pcat107 nuzhno vypolnit' komandu:
xhost + # razreshit' X-ovym programmam s LYUBOJ mashiny
# risovat' na ekrane mashiny pcat107
Zapuskaem na nashem komp'yutere X-ovuyu programmu, tak, chtoby ee
okoshko risovalos' na monitore pcat107. Dlya etogo na nashem
komp'yutere nuzhno vypolnit' komandu:
xterm -display pcat107:0.0 &
Biblioteki, Motif, i vojna kruglyh i kvadratnyh knopok
Mozhno pisat' X-ovye programmy, ispol'zuya biblioteku Xlib.
Mnogie tak i pishut, hotya eto ves'ma tyazhelo - uzh bol'no nevysok
uroven' Xlib'a. V pomoshch' programmistam bylo sozdano neskol'ko
toolkit'ov - bibliotek bolee vysokogo urovnya, v kotoryh reali-
zovany razlichnye widget'y. Widget - neperevodimyj termin X
Window. Skleen iz dvuh slov - Window i Gadget
(prisposoblenie), yavlyaetsya graficheskim ob®ektom s privyazannymi
k nemu svojstvami i reakciyami na dejstviya pol'zovatelya. Primery
widgetow: "knopka", "menyushka", "okoshko s tekstom", "linejka
prokrutki",...
Izvestny sleduyushchie toolkit'y:
Xaw -
Anthena Widgets. Ochen' cherno-belyj, ochen' ploskij,
ves'ma nebogatyj. Zato - besplatnyj. Posmotrite, kak
vyglyadyat programmy xterm, xedit, xman. Oni sdelanny
na Xaw.
xview -
Nabor bibliotek i ob®ektov, ispol'zovannyh v realiza-
cii nabora pol'zovatel'skih utilit Sun-ovskoj versii
X Window - "Open Windows". Ves'ma simpatichno. Krug-
lye knopki, "shpricy-igolki" (zamechatel'naya veshch'!),
ochen' horosho produmannyj interfejs pol'zovatelya, v
tom chisle aktivno ispol'zuemaya treh-knopochnaya mysh'.
Ishodnye teksty bibliotek xview otkryty, predostavlya-
yutsya besplatno. Odnako nabor DeskSet - 15 pol'zova-
tel'skih utilit vhodyashchih v OpenWindows, sdelannyj na
biblioteke xview, SunSoft gotov predostavit' tol'ko
za platu. V binarnom vide - ves'ma deshevo ($100). V
ishodnyh tekstah - ves'ma dorogo ($200K)
Motif -
Biblioteka postavlyayutsya organizaciej OSF za ne sovsem
malen'kuyu platu. Ishodnye teksty bibliotek nedostup-
ny, libo chrezmerno dorogi. Knopki - kvadratnye, da i
voobshche Motif'ovskie prilozheniya do bezobraziya napomi-
nayut MS Windows (chto, IMHO, yavlyaetsya ser'eznym pres-
tupleniem)
V bor'be BSD i Unix V pobedil, kak izvestno, System V, a v voj-
ne kruglyh i kvadratnyh knopok vyigral Motif.
Konfigurirovanie X Window
V Linux ispol'zuetsya X11 v realizacii XFree86.
CHtoby ego skonfigurirovat', vypolnite komandu
xf86config
Na nekotoryh mashinah on sam zapuskaetsya. A takzhe inogda
udaetsya zapustit' ego vruchnuyu komandami: startx i/ili openwin
Solaris:
1. Ustanovite peremennye okruzheniya:
OPENWINHOME=/usr/openwin export OPENWINHOME
LD_LIBRARY_PATH=/usr/openwin/lib export LD_LIBRARY_PATH
PATH=/usr/openwin/bin:$PATH export PATH
XAPPLERESDIR=/usr/openwin/lib/app-defaults export XAPPLERESDIR
2. Zapustite X Window komandoj
openwin
"Normal'nye" Unix'y:
1. Ustanovite peremennye okruzheniya:
PATH=/usr/bin/X11:$PATH
XAPPLERESDIR=/usr/lib/X11/app-defaults
2. Zapustite X Windows komandoj
startx
"Nenormal'nye" Unix'y (Unixware).
Kogda registriruete pol'zovatelya, otvet'te Yes na vopros
"Hotite graficheskij DeskTop". Togda posle login'a X Windows
budet zapuskat'sya avtomaticheski. Esli vy prozevali, i otvetili
No, to nikakim osmyslennym sposobom zapustit' X Windows dlya
sebya vam ne udastsya.
Nastrojki pol'zovatel'skogo okruzheniya X Windows
Pri nalichii pol'zovatel'skih nastroechnyh fajlov, lezhashchih v
domashnem kataloge pol'zovatelya, ispol'zuyutsya oni. Esli ih net,
ispol'zuyutsya standartnye, obshchestvennye, obychno lezhashchie v
kataloge /usr/lib/X11 ili /usr/openwin/lib
Personal'nye i obshchestvennye pol'zovatel'skie nastrojki
hranyatsya v fajlah:
$HOME/.Xdefaults
$HOME/.OWdefaults
/usr/lib/X11/Xdefaults
/usr/openwin/lib/Xdefaults
/usr/openwin/lib/app-defaults/*
Posle lyubyh ispravlenij fajl s resursami neobhodimo perezachitat':"
xrdb -merge .Xdefaults
Okruzhenie (desktop) - t.e. programmy, kotorye startuyut
avtomaticheski pri zapuske X Windows nahoditsya v fajlah:
Solaris:
$HOME/.openwin-init
/usr/openwin/lib/openwin-init
"Normal'nnye" X windows:
$HOME/.xinitrc
/usr/lib/X11/xinit/xinitrc
Nastrojki window-manager'a - t.e. - povedenie okon,
menyushki pol'zovatelya, raskladka komand na klavishi myshki, ...
Solaris:
$HOME/.openwin-menu
$HOME/.openwin-menu-*
/usr/openwin/lib/openwin-menu
/usr/openwin/lib/openwin-menu-*
Linux
$HOME/.fvwmrc
/usr/lib/X11/fvwm/system.fvwmrc
Last-modified: Mon, 08 Aug 2005 07:23:58 GMT