Hlavní navigace

Linuxový desktop - grafické nadstavby

Stanislav Brabec 17. 2. 2003

Nezbytnou součástí desktopového prostředí je grafická nadstavba. O co se jedná a k čemu slouží, se dozvíme v dnešním dílu. Zároveň se seznámíme s nejběžnějšími nadstavbami.

K čemu je grafická nadstavba (graphical toolkit), když samotný X server umí vše, co k zobrazování potřebujeme? Odpověď je poměrně jednoduchá – události, které zasílá X server, a příkazy, kterým rozumí, jsou na příliš nízké úrovní, než aby mohly posloužit jako uživatelské rozhraní programu.

Proto bylo třeba definovat vyšší úroveň abstrakce – grafickou nadstavbu. V ní se již nemusíme bavit s X serverem o tom, v jakém místě okna vytvořit nápis, jaké písmo zvolit a jaký rámeček budou mít tlačítka.

Činnost nadstavby

Jako příklad činnosti nadstavby uvedu jednoduché dialogové okno s nápisem a tlačítky Ano, Ne.

Pro grafickou nadstavbu může být takové dialogové okno přímo předpřipraveným objektem. Příkazem, který předáme grafické nadstavbě, je: „Vytvoř dialogové okno s nápisem Jaká je vaše odpověď a s možnými odpověďmi Ano a Ne.“ V doplňkových volbách takového příkazu pak můžeme nalézt instrukce, jak se chovat, když uživatel použije klávesnici, jak zareagovat na zavírací tlačítko apod.

Protože dialogové okno samo o sobě není jediný grafický objekt, sama grafická nadstavba provede konstrukci z jednotlivých prvků – v okně otevře dvě podřízená okna (vzpomeňme si, co jsme si řekli v druhém dílu o hierarchickém stromu oken) – horní s nápisem a dolní, které se bude dále dělit na další dvě podřízená okna s jednotlivými tlačítky. Nápis a tlačítko jsou již základní prvky grafické nadstavby.

Ale pro X server je například takové tlačítko značně složitý objekt – skládá se přinejmenším z rámečků, pozadí a nápisu. Prvním úkolem grafické nadstavby je tedy umět vykreslit grafický prvek za pomoci příkazů X serveru.

I grafická nadstavba komunikuje v řeči událostí. Programy vlastnící okna dostávají od X serveru zprávy o událostech, které se oken týkají a o které si aplikace zažádala.

Je zřejmé, že například podřízené okno, které tvoří tlačítko, musí reagovat na kliknutí myši – taková zpráva bude v grafické nadstavbě převedena na událost grafické nadstavby„Stisknutí tlačítka“. Méně si však uvědomujeme, že moderní nadstavby reagují i na pouhý pohyb myši prosvětlením tlačítka. I o takovou událost si tedy musí požádat, byť slouží jen pro potřeby nadstavby.

Kromě těchto událostí dostává od X serveru občas žádost o překreslení okna (např. bylo-li okno zakryto) nebo od souborového systému zprávu o změně tématu (skinu). I to jsou události pro vnitřní potřebu.

Komunikace nadřízených a podřízených oken

Způsob komuninace mezi nadřízenými a podřízenými okny je nejlépe vidět při změně velikosti okna – spravované okno v první úrovni obdrží od správce oken žádost o změnu velikosti. Kdyby okno neodeslalo požadavek svým podřízeným a provedlo jej, část okna by se jednoduše ořízla (nebo se zvětšil prázdný okraj). Dialogové okno však tento požadavek zasílá – nejdříve jej obdrží dvojice „podoken“ nad sebou. Od horního „podokna“ jej obdrží nápis, od dolního další dvě „podpodokna“ s tlačítky. Každé z těchto oken se může rozhodnout dle svého uvážení (a volby programátora), zda na takovou žádost zareaguje samo, či zda požadavek rozdělí a pošle na vyřízení podřízeným. Okna, která požadavek vykonají, pošlou tuto zprávu nadřízeným, a od nich opačnou cestou putuje zpět až ke správci oken.

Výsledkem, který uvidíme, je změna velikost okna, nebo „zaseknutí“ správce oken v případě, že žádné z oken není ochotno požadavek vyřídit.

Nejrozšířenější nadstavby

Nejstarší nadstavbou pro X je bezesporu Athena (Xaw). Vznikla společně s X a dodnes je jejich součástí. S jejím návrhem přišla i mezivrstva tzv. zdrojů X (X resources) – techniky, která umožňuje popsat vlastnosti aplikace pomocí textového souboru. Tyto soubory najdeme v adresáři /etc/X11/app-defaults a souboru.Xdefaults v domovském adreáři. Soubory popisují zvláštním jazykem zástupných znaků, jak se má daný typ prvků vykreslovat. Před obecnými definicemi dostávají přednost konkrétní (tedy ty, které mají méně zástupných znaků). Přes nesporně kvalitní programátorský koncept patří Athena k vizuálně nejošklivějším nadstavbám.

Známé aplikace používající Athenu: XTerm, xvidtunem Xmag, XDVI, všechny aplikace přibalené k XFree86 a některé binární verze Emacsu.

Vzhled Atheny při zachování kompatibility se pokouší vylepšit projekt Xaw3D. Přesto se významně nerozšířil.

Známé aplikace používající Xaw3D: GV.

Konkurenční OSF/Motif byl dlouho dostupný pouze komerčně. Vyznačuje se stabilním uživatelským rozhraním. Nyní existují dokonce dvě volné implemetace – Lesstif a Open Motif. Používá též zdroje X, ale při své práci vykresluje grafické elementy pomocí tzv. gadgetů, které nevyužívají celou strukturu oken, a tím šetří paměť a rychlost (na rozdíl od tzv. widgetů, které jsou založeny na úplných instancích oken X Window Systemu). Za dobu své existence se stal prakticky průmyslovým standardem UNIXových komerčních aplikací.

Známé aplikace používající Motif: Netscape Communicator ve verzi 4 a starší, některé binární verze Emacsu.

Prostředí Qt firmy TrollTech již patří do nové generace nadstaveb, nepoužívá totiž mezivrstvu zdrojů X. Je napsáno v jazyce C++, obsahuje v sobě podpory změny grafického vzhledu (skinů), rozsáhlého použití písma i obrázků.

Známé aplikace používající Qt: Qt se stalo základem desktopového prostředí KDE.

Prostředí GTK+ vzniklo původně jako pomůcka pro uživatelské rozhraní programu GIMP. Později se projekt osamostatnil a stal se novou grafickou nadstavbou. Je založen na jazyce C a stal se jedním ze dvou nejrozšířenějších nadstaveb. Taktéž v sobě obsahuje podporu změny grafického vzhledu (skinů), rozsáhlého použití písma i obrázků. Nynější verze je GTK2.

Známé aplikace používající GTK+: GIMP, GTK+ se stalo základem desktopového prostředí GNOME.

Našli jste v článku chybu?

18. 2. 2003 22:18

Pavel Janík (neregistrovaný)

GTK podpora pro Emacs je už v CVS.

18. 2. 2003 10:32

Stanislav Brabec (neregistrovaný)

To bylo porovnání Motifu s Athenou. Rozdíly by se měly výrazněji projevit až u složitých aplikací s vnořenými strukturami a údajně by měl být Motif rychlejší.

Moderní GUI používají buď plné instance oken nebo vlastní datové typy. Je to z prostého důvodu - chcete-li udělat skinovatelné GUI s podkladovými obrázky reagujícími na pohyb myši, nemůžete se předem omezit na jednoduchý datový typ, jakým je XmGadget.

MWM a UIL jsou standardní součástí každé implementace OSF/Motif, tedy i těch volnýc…



DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

120na80.cz: Bojíte se encefalitidy?

Bojíte se encefalitidy?

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU