Posted-By: auto-faq 3.3 (Perl 5.004)
X Window System FAQ - czesc II
Codematic, Przemek Borys
wersja 6 stycznia 1999
Ten dokument byc moze pomoze Ci w znalezieniu odpowiedzi na pytania
dotyczace uzytkowania, konfigurowania oraz programowania X Window Sys-
tem.
______________________________________________________________________
/*
* pl.comp.sys.xwindow
*
* X Window System FAQ
*
*
* Autorzy:
* Codematic - mmoc...@elka.pw.edu.pl - maintainer FAQ
* Przemek Borys - pbo...@p-soft.silesia.linux.org.pl
* Gwidon S. Naskrent - naskr...@hoth.amu.edu.pl
* Michal Kuratczyk - kur...@kki.net.pl - Afterstep
* Marcin Lewandowski (jask...@mat.uni.torun.pl) - KDE FAQ
*
*
* wersja 06.01.1999
*
* Zawsze aktualna wersje FAQ mozesz znalexc na:
* http://home.elka.pw.edu.pl/~mmochol
*/
Table of Contents:
3.16. Ja chce fonty TrueType pod X!
3.17. Jak przelaczac sie miedzy konsolami, majac wlaczony X?
3.18. Myszka z rolkami
4. Bezpieczenstwo w X
4.1. Dlaczego potrzebne sa w X mechanizmy bezpieczenstwa 1 2 3 4 5
4.2. Jakie mechanizmy bezpieczenstwa sa w X-ach 1 2 3 4 5
4.3. "Client is not authorized to access X Server" - xhost
4.4. xauth, .Xauthority
4.5. Czy juz jestem bezpieczny(a) 1 2 3 4 5
5. Programowanie w X - problemy i sztuczki
5.1. Od czego zaczac
6. Programowanie w X - tutoriale
6.1. X Window dla opornych - short lame ;-) tutorial
6.1.1. CO TO JEST X WINDOW SYSTEM ?
6.1.2. KROTKA HISTORIA X
6.1.3. X FREE
6.1.4. PROTOKOLY I STANDARDY
6.1.5. NAJNOWSZE X
6.1.6. X-protocol
6.1.7. X-lib
6.1.8. X-toolkit's, Intrinsics
6.1.9. Athena widgets, Xaw3d
6.1.10. Motif
6.1.11. OpenLook
6.1.12. Jak sie w tym programuje
6.1.13. X-forms
6.2. Motif (na podstawie lesstifa)
6.2.1. Przedwstep
6.2.2. Wstep
6.2.3. Filozofia systemu X
6.2.4. Pare funkcji i zmiennych
6.2.5. Tworzenie widgetow i callback'ow
6.2.6. Obiecany paragraf o tworzeniu menu
6.2.7. Przykladowy program
6.2.7.1. Kod programu
6.2.7.2. Makefile
______________________________________________________________________
3 3. .1 16 6. . J Ja a c ch hc ce e f fo on nt ty y T Tr ru ue eT Ty yp pe e p po od d X X! !
Gwidon
/* original by Gwidon Naskrent, modified by Codematic */
Sa na to dwa sposoby: xfsft (autorstwa Juliusza Chroboczka, autora
ogonkify) oraz xfstt.
a) xfstt
Trzeba postarac sie o xfstt (xrodla sa na SunSite, najnowsza wersja
0.99). Po skompilowaniu i przeniesieniu do odpowiedniego katalogu
(make install) odpalamy X i uruchamiamy skrypt testowy. Jesli wszystko
pojdzie dobrze i bedziemy mogli puszczac ten serwer na porcie 7100,
tworzymy katalog /usr/ttfonts/winfonts i czynimy go symlinkiem do
zbioru naszych fontow TT (np. /dos/Windows/Fonts). Uwaga: dopoki
istnieje plik /tmp/font-unix/7100 i wpis sciezki w konfigu, nie
bedziemy mogli uruchomic X jesli nie odpalilismy wczesniej xfstt!
Polecam opcje --multi, wlacza ona pelna obsluge znakow > 255 w
fontach, co w praktyce oznacza Unicode. Ladnie to wyglada w programie
xfd, gorzej z wykorzystaniem - Netscape w kazdym razie kleci wlasny
font z bitmap i za nic ma nasze piekne skalowalne unikody.
Opcja --sync kaze serwerowi od nowa stworzyc plik fontdir (czy jak to
sie tam) z poindeksowanymi fontami. Uwaga: w przeciwienstwie do
fonts.dir tworzonego mkfontdir jest to plik binarny!
Opcja --encoding pozwala oszukac Xserwer co do tego ze jeden plik
wystepuje jako kilka fontow z roznymi kodowaniami (oczywiscie ow font
musi zawierac unikody). Przydatne do lepszego ISO-8859-2 i cyrylicy w
Netscape (skladnia wiec: --encoding iso-8559-2 koi8-r)
Jesli masz slaba karte graficzna, rozwaz uruchamianie Xow z opcja
-deferglyphs x (x - ilosc kB przeznaczanych na cacheowanie
wyswietlanych fontow, domyslnie 8). W przeciwnym razie wyswietlenie
zbyt wielu naraz albo zbyt duzych znakow na ekranie moze skonczyc sie
brakiem pamieci i totalna kasza.
Patrz README co do szczegolow i nazewnictwa fontow pod X. Pamietaj ze
nazwy ze spacjami (np. -winfonts-times new roman-*) trzeba ujac w
wiekszosci wypadkow w cudzyslowy.
Czego xfstt nie potrafi:
* poprawnego hintingu, przez co male stopnie fontow wygladaja niemilo
* nie radzi sobie (to znaczy aplikacje sobie nie radza) ze znakami o
ujemnej szerokosci, zwlaszcza jesli font jest proporcjonalny * ma
klopoty z obracaniem znakow, zwlaszcza jesli chodzi o poprawne
spacjowan ie * nie polepsza sytuacji co do drukowania. Na szczescie
ghostscript od wersji 5.0 rozumie fonty TT
b) xfsft
/* under construction */
3 3. .1 17 7. . J Ja ak k p
pr rz ze el la ac cz za ac c s si ie e m mi ie ed dz zy y k ko on ns so ol la am mi i, , m ma aj ja ac c w wl la ac cz zo on ny y X X? ?
Przemek Borys
Przelaczamy sie na inne konsole, korzystajac z kombinacji ctrl+alt+Fx,
gdzie x to numer konsoli, ktora nas interesuje.
Powrot do odpalonego X jest troche dziwniejszy; X instaluje sie na n+1
zdefiniowanej konsoli (np. jesli w inittabie zdefiniowanych jest 6
konsoli, to bedzie on na siodmej). Tak wiec musimy po prostu nacisnac
ctrl+alt+Fnumer konsoli z X i gotowe. W naszym przykladzie, nacisniemy
ctrl+alt+F7.
3 3. .1 18 8. . M My ys sz zk ka a z z r ro ol lk ka am mi i
Nie podano autora
Mozna np. zainstalowac program imwheel. Do znalezienia na
http://freshmeat.net.
/* Poszukujemy chetnych posiadaczy myszki z rolkami do rozwiniecia
tego artykulu */
4 4. . B Be ez zp pi ie ec cz ze en ns st tw wo o w w X X
4 4. .1 1. . D Dl la ac cz ze eg go o p po ot tr rz ze eb bn ne e s sa a w w X X m me ec ch ha an ni iz zm my y b be ez zp pi ie ec cz ze en ns st tw wa a 1 1 2 2 3 3 4 4 5 5
Codematic
Poniewaz - gdyby ich nie bylo - kazdy moglby "podlaczyc" sie do
terminala przy ktorym pracujecie, i wyswietlic wam jakies okienka. Co
wiecej moglby przechwycic zdarzenia z klawiatury i myszki, a nawet
"zobaczyc" co macie na ekranie - i np. przeczytac wasza poczte.
Wskazane jest zatem zabezpieczenie sie przed intruzami.
4 4. .2 2. . J Ja ak ki ie e m me ec ch ha an ni iz zm my y b be ez zp pi ie ec cz ze en ns st tw wa a s sa a w w X X- -a ac ch h 1 1 2 2 3 3 4 4 5 5
Nie podano autora
Rozne.
4 4. .3 3. . C Cl li ie en nt t i is s n no ot t a au ut th ho or ri iz ze ed d t to o a ac cc ce es ss s X X S Se er rv ve er r" " - - x xh ho os st t
Codematic
Czasem sie zdarza, ze klient pokaze taki komunikat. Problem w tym, ze
XServer odrzuca nieautoryzowane polaczenia i po prostu Was nie
dopuszcza. Nalezy wtedy na maszynie XServera uruchomic program xhost:
xhost +maszynaklienta
np. xhost +elektron.elka.pw.edu.pl.
Mozna tez napisac xhost +, ale powoduje to __wylaczenie__ wszystkich
zabezpieczen i kazdy bedzie mogl polaczyc sie z tym XServerem.
4 4. .4 4. . x xa au ut th h, , . .X Xa au ut th ho or ri it ty y
Nie podano autora
Brak opisu.
4 4. .5 5. . C Cz zy y j ju uz z j je es st te em m b be ez zp pi ie ec cz zn ny y( (a a) ) 1 1 2 2 3 3 4 4 5 5
Codematic
Nie. Opisane wyzej mechanizmy to jedynie autoryzacja. Tymczasem znane
sa np. techniki spoofingu, tak ze na rozne sposoby mozna to oszukac.
Niestety kanal XServer-XClient nie jest kodowany, i nie przewiduje
tego standard Xow. Pewnie jeszcze dlugo nie bedzie przewidywal, ale
mozna temu zaradzic stosujac tunelowanie.
/* under construction */
5 5. . P Pr ro og gr ra am mo ow wa an ni ie e w w X X - - p pr ro ob bl le em my y i i s sz zt tu uc cz zk ki i
5 5. .1 1. . O Od d c cz ze eg go o z za ac cz za ac c
Codematic
Yeah. To pytanie bylo pierwszym, ktore sobie zadalem przerazony
spogladajac na __MEGABAJTY__ dokumentacji z X Consortium i kilogramy
ksiazek w rodzaju serii z ORA. No coz... Dobrym pomyslem jest
przeczytanie w calosci tego FAQ. Nastepnie rozwoj uzalezniony jest od
znajomosci jezyka. Niestety nie znalazlem zbyt wielu dokumentow po
polsku o X'ach, a o programowaniu tym bardziej... Prawde mowiac
zadnego nie widzialem, oprocz XFree86 HowTo, przetlumaczonego przez
Piotra Teczynskiego w ramach projektu JTZ. Nie wiem jakich rad moglbym
udzielic zielonym, ja zawsze uwazalem ze najlepiej i najszybciej jest
zajrzec do kodu zrodlowego. Sciagnijcie sobie prosciutkie programiki,
jakies proste gierki w rodzaju xbill, przegladarki - np. xpdf. Ta
ostatnia zreszta jest bardzo fajnie napisana. Kodow z X Consortium do
celow edukacyjnych w fazie poczatkowej nie polecam. Nawet taki
programik jak xlogo, wydawalo by sie banalny, tworzy skubany wlasny
widget, korzysta z jakichs dziwnych bibliotek, ee tam... Za madre jak
dla mnie. Mozecie tez poszukac na sieci Motif-FAQ:
ftp://ftp.cen.com/pub/Motif-FAQ or ftp://ftp.cen.com/pub/Motif-
FAQ.gz or ftp://ftp.cen.com/pub/Motif-FAQ.Z
http://www.cen.com/mw3/faq/motif-faq.html NEW Nov. 1996
jesli chcecie od razu rozpoczac nauke od X Toolkitu. Oczywiscie FAQ to
odnosi sie rowniez do Lesstifa, darmowego klona Motifa (w wiekszosci w
kazdym razie).
No wlasnie.
Pozostaje kwestia na co wlasciwie postawic. Mysle ze nie warto uczyc
sie Xlib, przynajmniej na poczatku. Wiekszosc z Was zapewne zna C++
lub Turbo Pascala, ma wiec niejakie pojecie o programowaniu
obiektowym. Na tym zasadza sie idea XtIntrinsics, a co za tym idzie
wiekszosci toolkitow w rodzaju Motifa czy OpenLooka. I jest to raczej
proste programowanie obiektowe.
Prawde powiedziawszy programowanie w X przy pomocy X Toolkitow jest
nietrudne, przy pewnym oblataniu w programowaniu
... wiecej »