1 [[!meta title="Grafická uživatelská prostředí a knihovny"]]
5 #Grafická uživatelská prostředí a knihovny
9 - Grafické prostředí pro operační systém UNIX
10 - Začal vyvíjet institut MIT (Massachusetts Institute of Technology) v r. 1984.
11 - Označení X11 (verze 11) od r. 1987
12 - Další verze jsou označovány jako revize.
13 - Současná podoba systému oken X se principiálně nemění a nová vydání jsou rozšiřující především z pohledu způsobů implementace grafických režimů.
14 - Klient-server architektura, klient (GUI aplikace) nemusí nutně běžet na stejném stroji, jako server.
15 - Server se stará o klávesnici, myš a zobrazení grafického výstupu aplikací.
16 - Klient komunikuje se serverem pomocí socketu. Používá [X-protokol](#x-protocol).
17 - Referenční implementací je X server vyvíjený X.Org Foundation.
21 ## Správce oken (window manager)
23 Samotný X Server má na starost pouze zobrazení na obrazovku, obsluhu hardware (grafická karta, myš, klávesnice, touchpad) a sám o sobě je těžko použitelný. Proto se používá spolu se správcem oken (anglicky window manager), který se stará o ovládání uživatelem (přesun a změna velikosti okna) a podobně (horní lišta oken, ohraničení oken, změna velikosti, překrývání atp.). Z hlediska X Serveru je ovšem správce oken jen další klient, a proto je snadno zaměnitelný. Pro Linux existuje několik desítek správců oken, přičemž mezi nejznámějším patří IceWM, FVWM, Sawfish, Window Maker, Kwm, Metacity nebo Fluxbox.
27 X display manager je v grafickém systému X Window System proces, který umožňuje přihlášení uživatele z lokálního počítače nebo přes počítačovou síť.
28 [X display manager na wikipedii][2]
30 <a name="x-protocol"/>
34 - Specifikuje způsob komunikace mezi X-Serverem a X-Klienty.
35 - Nejslavnější implementací je Xlib.
39 Používat přímo xlib by bylo poněkud těžkopádné, proto vzniklo mnoho knihoven, které se snaží tvorbu GUI aplikací zjednodušit. Např. GTK+, Qt, FLTK, wxWindows, HTML + DOM + JavaScript, atd.
41 ## GTK+ (GIMP Toolkit)
43 - Vytvořen v roce 1997 členy skupiny eXperimental Computing Facility (XCF) Kalifornské university v Berkeley (Spencer Kimball, Peter Mattis a Josh MacDonald) pro vývoj programu GIMP (GNU Image Manipulation Program).
44 - Napsán v jazyce C, což sebou nese řadu výhod i nevýhod.
46 - Součást GNU projektu.
52 int main (int argc, char *argv[])
57 gtk_init (&argc, &argv);
59 /* create the main, top level, window */
60 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
62 /* give it the title */
63 gtk_window_set_title (GTK_WINDOW (window), "Hello World");
65 /* Connect the destroy signal of the window to gtk_main_quit
66 * When the window is about to be destroyed we get a notification and
67 * stop the main GTK+ loop
69 g_signal_connect (window, "destroy",
70 G_CALLBACK (gtk_main_quit), NULL);
72 /* Create the "Hello, World" label */
73 label = gtk_label_new ("Hello, World");
75 /* and insert it into the main window */
76 gtk_container_add (GTK_CONTAINER (window), label);
78 /* make sure that everything, window and label, are visible */
79 gtk_widget_show_all (window);
81 /* start the main loop, and let it rest there until the application is closed */
96 [1]: X_client_sever_example.svg
97 [2]: http://cs.wikipedia.org/wiki/X_display_manager