Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
tvorba_gtk2_motivů [2012/07/28 15:50] – vytvořeno ubuntu | tvorba_gtk2_motivů [2019/02/25 17:20] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ====== Tvorba GTK2 motivů ====== | ||
+ | Vzhledem k tomu, že na internetu neexistuje návod, jak si napsat vlastní hezké GTK2 téma, tak to popíšu zde. Na konci návodu vám vyjde funkční GTK2 téma založené na Clearlooks a Murrine Enginech. | ||
+ | |||
+ | Návod je určen pro mírně pokročilé uživatele(Pro ty, co nepracují s Ubuntu den), takže počítám s tím, že umíte instalovat software, spouštět aplikace pod rootem a jiné. | ||
+ | Také je nutné znát alespoň trochu anglický jazyk. | ||
+ | |||
+ | ====== Používané enginy ====== | ||
+ | |||
+ | Engine se stará v GTK2 o to, jakým stylem se budou jednotlivé prvky vykreslovat. Bývá psaný většinou v jazyce C. V tématu můžete použít i více enginů pro různé prvky, nicméně není to doporučeno. Doporučuji také snažit se nepoužít pixmap/ | ||
+ | |||
+ | Do tématu se enginy zapisují takhle: | ||
+ | |||
+ | < | ||
+ | engine " | ||
+ | { | ||
+ | parametry | ||
+ | } | ||
+ | </ | ||
+ | ===== Výpis nejznámějších enginů a jejich použití ===== | ||
+ | |||
+ | Zde popíšu, které jsou nejznámější enginy a jak se používají(jejich parametry) | ||
+ | |||
+ | ==== Clearlooks ==== | ||
+ | |||
+ | Obsažen přímo v Ubuntu v balíku **gtk2-engines**. Je zároveň výchozím enginem pro čisté Gnome. Engine byl založeno na Bluecurve enginu. Podporuje barevná schémata Gnome. | ||
+ | |||
+ | === Základní parametry === | ||
+ | |||
+ | < | ||
+ | colorize_scrollbar = TRUE # obarvit scrollbar | ||
+ | menubarstyle | ||
+ | toolbarstyle | ||
+ | animation | ||
+ | style = GUMMY # styl, používá se GUMMY, GLOSSY nebo INVERTED, rozdíl uvidíte na porovnání témat Clearlooks, Glossy a Inverted, které jsou postaveny na stejném enginu | ||
+ | </ | ||
+ | ==== Crux ==== | ||
+ | |||
+ | Obsažen v balíku **gtk2-engines**. Podporuje barevná schémata. Parametry se nepoužívají. | ||
+ | |||
+ | ==== High contrast ==== | ||
+ | |||
+ | Tento engine se pro tvorbu nových témat nepoužívá, | ||
+ | |||
+ | ==== Industrial ==== | ||
+ | |||
+ | Nenáročný, | ||
+ | |||
+ | ==== Mist ==== | ||
+ | |||
+ | Nenáročný plochý engine. Bez parametrů, podpora barevných schémat. Obsažen v balíku **gtk2-engines**. | ||
+ | |||
+ | ==== Redmond 95 ==== | ||
+ | |||
+ | Obsažen v balíku **gtk2-engines**. | ||
+ | |||
+ | Engine snažící se napodobovat vzhled Windows 95. Bez parametrů a podpory barevných schémat. | ||
+ | |||
+ | ==== Murrine ==== | ||
+ | |||
+ | Velice rozšířený, | ||
+ | |||
+ | === Parametry === | ||
+ | |||
+ | < | ||
+ | glazestyle = 0 # Změna základního vzhledu, 0 = plochý, 1 = zakřivený, | ||
+ | roundness = 2 # Kulatost, 0 = hranatý, 8 = nejvíce kulatý, glazestyle s hodnotou 2 je podporován pouze s roundness 0,1 | ||
+ | gradients = TRUE # povoluje gradienty, hodnoty jsou jen TRUE a FALSE | ||
+ | menubarstyle = 0 # styl menubaru, hodnoty jsou 0 = plochý, 1 = glass-efekt, | ||
+ | menuitemstyle = 0# styl položky menu, 0 = plochý, 1 = glassefekt, 2 = pruhovaný | ||
+ | menubaritemstyle = 1 # styl položky menubaru, 0 = vzhled položky menu, 1 = vzhled tlačítka | ||
+ | listviewheaderstyle = 0 # styl hlavičky seznamu, 0 = plochý, 1 = glass efekt, 2 = vyvýšený | ||
+ | listviewstyle = 0 # vzhled oddělovačů seznamů, 0 = kompletně plochý, 1 = tečkovaný | ||
+ | scrollbarstyle = 0 # styl posuvníků, | ||
+ | animation = TRUE # animované progressbary, | ||
+ | hilight_ratio = 1.0 # zvýšení/ | ||
+ | contrast = 1.0 # kontrast tématu, 0.8 = méně kontrastní, | ||
+ | </ | ||
+ | ==== Nodoka ==== | ||
+ | |||
+ | Fork enginu Murrine. Výchozí GTK2 engine Fedory. Parametry: viz. Murrine. V Ubuntu není, nutné zkompilovat. | ||
+ | |||
+ | ==== Rezlooks ==== | ||
+ | |||
+ | Fork enginu Clearlooks. Stejný jako výchozí engine, ale má odstraněnu kulatost z kódu enginu. V Ubuntu jej nenajdete, nutné zkompilovat. | ||
+ | |||
+ | ==== Ubuntulooks ==== | ||
+ | |||
+ | Fork Clearlooks enginu. Upravuje několik věcí - viz. Human téma. Nedoporučuji používat - pomalost tohoto enginu je až neuvěřitelná.. | ||
+ | |||
+ | ==== Pixmap ==== | ||
+ | |||
+ | Engine využívající obrázky k vykreslování prvků. Nebudu zde popisovat všechny funkce, protože by to bylo na 10 stránek :-) Pokud chcete vědět více o funkci pixmapového enginu, podívejte se do kódu nějakého tématu jako Carbonit, Samui, Linsta atd. Obsažen v balíku **gtk2-engines**. | ||
+ | |||
+ | do tématu se pixmap engine zapisuje takhle, popíšu to na tlačítku: | ||
+ | |||
+ | < | ||
+ | engine " | ||
+ | { | ||
+ | # vychozi tlacitko, prazdna pixmapa | ||
+ | image | ||
+ | { | ||
+ | | ||
+ | | ||
+ | | ||
+ | file = " | ||
+ | | ||
+ | | ||
+ | } | ||
+ | # osvicene tlacitko | ||
+ | image | ||
+ | { | ||
+ | | ||
+ | state = PRELIGHT # stav | ||
+ | | ||
+ | file = " | ||
+ | | ||
+ | | ||
+ | } | ||
+ | # stisknute tlacitko | ||
+ | image | ||
+ | { | ||
+ | | ||
+ | state = ACTIVE | ||
+ | file = " | ||
+ | | ||
+ | | ||
+ | } | ||
+ | # tlacitko v normalnim stavu | ||
+ | image | ||
+ | { | ||
+ | | ||
+ | file = " | ||
+ | | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ====== Základy ====== | ||
+ | |||
+ | ===== Struktura adresářů ===== | ||
+ | |||
+ | Vaše témata si ukládejte do %%/ | ||
+ | |||
+ | Struktura by měla vypadat takhle: | ||
+ | |||
+ | < | ||
+ | +/usr | ||
+ | | ||
+ | +themes | ||
+ | | ||
+ | +gtk-2.0 | ||
+ | | ||
+ | | ||
+ | | ||
+ | -ButtonDefault.png # pixmapa v Buttons složce | ||
+ | </ | ||
+ | ===== .rc soubory ===== | ||
+ | |||
+ | Do .rc souborů ve stejné složce, jako gtkrc, se dají, jak už jsem se zmínil, zapisovat kusy kódu místo do gtkrc pro větší přehlednost - např. vše co se týká panelu zapsat do panel.rc. | ||
+ | |||
+ | V gtkrc souboru využijete .rc soubory zapsáním řádku | ||
+ | |||
+ | %%include " | ||
+ | |||
+ | na začátek. | ||
+ | |||
+ | ===== Psaní témat ===== | ||
+ | |||
+ | V tématu se používají tzv. styly. Ve stylu je zapsáno který engine použít, z kterého jiného stylu použít parametry, barvy, velikosti aj. | ||
+ | |||
+ | Každé téma má jeden základní styl, nazvaný většinou %%default%%. Každý další styl má pak nastaveno, aby využíval default styl. | ||
+ | |||
+ | Předvedu na příkladu jednoduchého tématu na enginu Clearlooks se třemi styly. Výchozí nastavení tématu je tmavé a barevné schéma změníte v nastavení Gnome. Pokud chcete vyzkoušet, vložte si tento kód to gtkrc souboru v %%/ | ||
+ | |||
+ | < | ||
+ | # barevné schéma | ||
+ | gtk_color_scheme = " | ||
+ | |||
+ | # výchozí styl | ||
+ | style " | ||
+ | { | ||
+ | # Vlastnosti stylu, může jich být mnoho. | ||
+ | GtkButton | ||
+ | GtkButton | ||
+ | GtkButton | ||
+ | |||
+ | # velikosti | ||
+ | xthickness = 1 | ||
+ | ythickness = 1 | ||
+ | |||
+ | # barvy | ||
+ | fg[NORMAL] | ||
+ | fg[PRELIGHT] | ||
+ | fg[SELECTED] | ||
+ | fg[ACTIVE] | ||
+ | fg[INSENSITIVE] | ||
+ | |||
+ | bg[NORMAL] | ||
+ | bg[PRELIGHT] | ||
+ | bg[SELECTED] | ||
+ | bg[INSENSITIVE] | ||
+ | bg[ACTIVE] | ||
+ | |||
+ | base[NORMAL] | ||
+ | base[PRELIGHT] | ||
+ | base[ACTIVE] | ||
+ | base[SELECTED] | ||
+ | base[INSENSITIVE] = @bg_color | ||
+ | |||
+ | text[NORMAL] | ||
+ | text[PRELIGHT] | ||
+ | text[ACTIVE] | ||
+ | text[SELECTED] | ||
+ | text[INSENSITIVE] = darker (@bg_color) | ||
+ | |||
+ | engine " | ||
+ | { | ||
+ | animation | ||
+ | style | ||
+ | } | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | # velikosti | ||
+ | xthickness | ||
+ | ythickness | ||
+ | |||
+ | # specifické barvy pro styl | ||
+ | bg[NORMAL] | ||
+ | bg[PRELIGHT] = shade (1.06, @bg_color) | ||
+ | bg[ACTIVE] | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | # velikosti.. jsou v každém stylu.. aby vše sedělo | ||
+ | xthickness = 1 | ||
+ | ythickness = 1 | ||
+ | |||
+ | # specifické barvy | ||
+ | fg[PRELIGHT] = @selected_fg_color | ||
+ | } | ||
+ | |||
+ | # použití stylů v prvcích | ||
+ | class " | ||
+ | class " | ||
+ | class " | ||
+ | </ | ||
+ | Naše výsledné téma bude vypadat asi takhle: | ||
+ | |||
+ | {{.: | ||
+ | |||
+ | Když si pohrajete s hodnotami ythickness a xthickness, dostanete různé velikosti prvků. | ||
+ | |||
+ | |||
+ | ===== Barevná schémata ===== | ||
+ | |||
+ | Ty použijete zapsáním řádku | ||
+ | |||
+ | < | ||
+ | gtk_color_scheme = " | ||
+ | </ | ||
+ | na začátek(ale až po .rc souborech), upravením hodnot podle sebe a použitím nastavení barev | ||
+ | |||
+ | < | ||
+ | base[INSENSITIVE] = @bg_color | ||
+ | </ | ||
+ | popř. | ||
+ | |||
+ | < | ||
+ | base[ACTIVE] = shade (0.9, @selected_bg_color) | ||
+ | </ | ||
+ | místo | ||
+ | |||
+ | < | ||
+ | base[ACTIVE] = "# | ||
+ | </ | ||
+ | Váš engine musí podporovat barevná schémata. | ||
+ | |||
+ | HEX kódy si můžete zjistit např. pomocí GIMPu. | ||
+ | |||
+ | |||
+ | ====== Vlastní téma ====== | ||
+ | |||
+ | Už znáte dost věcí, abyste si mohli napsat vlastní GTK2 téma. Použijeme vše, co je v návodu napsáno. Enginy využijeme Murrine a Clearlooks. | ||
+ | |||
+ | ===== Instalace všeho, co budeme potřebovat ===== | ||
+ | |||
+ | ==== Textový editor ==== | ||
+ | |||
+ | První si nainstalujeme něco, v čem to budeme psát :-) | ||
+ | |||
+ | Já doporučuju Vim, pokud Vim nechcete, použijte gedit, jinak VIMa nainstalujete | ||
+ | |||
+ | < | ||
+ | sudo apt-get install vim | ||
+ | </ | ||
+ | ==== Testovací nástroj ==== | ||
+ | |||
+ | Jako nástroj pro testování využijeme The Widget Factory. Nainstalujete příkazem | ||
+ | |||
+ | < | ||
+ | sudo apt-get install thewidgetfactory | ||
+ | </ | ||
+ | a spustíte příkazem %%twf%%. | ||
+ | |||
+ | ==== Enginy ==== | ||
+ | |||
+ | Clearlooks máte už v systému a Murrine doinstalujte příkazem | ||
+ | |||
+ | < | ||
+ | sudo apt-get install gtk2-engines-murrine | ||
+ | </ | ||
+ | ===== Psaní tématu ===== | ||
+ | |||
+ | Nyní se dostáváme k vlastnímu psaní tématu. Napíšeme si Glassy Clearlooks v Murrine enginu :), proto také využijeme stejné parametry. | ||
+ | |||
+ | ==== Vytvoření adresářové struktury ==== | ||
+ | |||
+ | První se přesuneme do domovské složky. | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | </ | ||
+ | Pak si vytvoříme postupně adresářovou strukturu | ||
+ | |||
+ | < | ||
+ | mkdir .themes | ||
+ | mkdir .themes/ | ||
+ | mkdir .themes/ | ||
+ | </ | ||
+ | Nyní si vytvoříme soubory | ||
+ | |||
+ | < | ||
+ | cd .themes/ | ||
+ | touch gtkrc | ||
+ | touch buttons.rc | ||
+ | touch progressbar.rc | ||
+ | touch others.rc | ||
+ | </ | ||
+ | ==== GTKRC ==== | ||
+ | |||
+ | Otevřeme si gtkrc v oblíbeném textovém editoru a zapíšeme include řádky. | ||
+ | |||
+ | < | ||
+ | include " | ||
+ | include " | ||
+ | include " | ||
+ | </ | ||
+ | Vynecháme řádek a zapíšeme barevné schéma. Využijeme stejné, jako je v tématu " | ||
+ | |||
+ | < | ||
+ | gtk_color_scheme = " | ||
+ | </ | ||
+ | Do gtkrc nebudeme psát přímo nic jiného, kromě %%default%% stylu a asociací stylů prvkům. | ||
+ | |||
+ | Zapíšeme do gtkrc default styl. | ||
+ | |||
+ | < | ||
+ | style " | ||
+ | { | ||
+ | GtkButton | ||
+ | GtkButton | ||
+ | GtkButton | ||
+ | GtkCheckButton :: | ||
+ | |||
+ | GtkPaned | ||
+ | |||
+ | GtkRange | ||
+ | GtkRange | ||
+ | GtkRange | ||
+ | |||
+ | GtkScale | ||
+ | GtkScale | ||
+ | GtkScrollbar | ||
+ | |||
+ | GtkMenuBar | ||
+ | GtkExpander | ||
+ | GtkToolbar | ||
+ | GtkTreeView | ||
+ | GtkTreeView | ||
+ | |||
+ | GtkMenu | ||
+ | GtkMenu | ||
+ | |||
+ | xthickness = 1 | ||
+ | ythickness = 1 | ||
+ | |||
+ | |||
+ | fg[NORMAL] | ||
+ | fg[PRELIGHT] | ||
+ | fg[SELECTED] | ||
+ | fg[ACTIVE] | ||
+ | fg[INSENSITIVE] | ||
+ | |||
+ | bg[NORMAL] | ||
+ | bg[PRELIGHT] | ||
+ | bg[SELECTED] | ||
+ | bg[INSENSITIVE] | ||
+ | bg[ACTIVE] | ||
+ | |||
+ | base[NORMAL] | ||
+ | base[PRELIGHT] | ||
+ | base[ACTIVE] | ||
+ | base[SELECTED] | ||
+ | base[INSENSITIVE] = @bg_color | ||
+ | |||
+ | text[NORMAL] | ||
+ | text[PRELIGHT] | ||
+ | text[ACTIVE] | ||
+ | text[SELECTED] | ||
+ | text[INSENSITIVE] = darker (@bg_color) | ||
+ | |||
+ | engine " | ||
+ | { | ||
+ | glazestyle = 1 | ||
+ | roundness = 2 | ||
+ | gradients = TRUE | ||
+ | menubarstyle = 3 | ||
+ | menuitemstyle = 2 | ||
+ | menubaritemstyle = 1 | ||
+ | listviewheaderstyle = 1 | ||
+ | scrollbarstyle = 2 | ||
+ | animation = TRUE | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Vynecháme řádek a asociujeme ještě neexistující styly prvkům. Použijeme nastavení stylů z Clearlooks. | ||
+ | |||
+ | < | ||
+ | class " | ||
+ | class " | ||
+ | class " | ||
+ | class " | ||
+ | class " | ||
+ | class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget_class " | ||
+ | widget " | ||
+ | </ | ||
+ | ==== BUTTONS.RC ==== | ||
+ | |||
+ | Otevřeme si buttons.rc a vložíme do něj styl pro tlačítka. | ||
+ | |||
+ | < | ||
+ | style " | ||
+ | { | ||
+ | xthickness | ||
+ | ythickness | ||
+ | |||
+ | bg[NORMAL] | ||
+ | bg[PRELIGHT] = shade (1.06, @bg_color) | ||
+ | bg[ACTIVE] | ||
+ | } | ||
+ | </ | ||
+ | Uložíme buttons.rc a zavřeme. | ||
+ | |||
+ | ==== PROGRESSBAR.RC ==== | ||
+ | |||
+ | Dále si otevřeme progressbar.rc a vložíme do něj progressbar styl. U Progressbaru | ||
+ | |||
+ | < | ||
+ | style " | ||
+ | { | ||
+ | xthickness = 1 | ||
+ | ythickness = 1 | ||
+ | |||
+ | fg[PRELIGHT] = @selected_fg_color | ||
+ | } | ||
+ | </ | ||
+ | Uložíme a zavřeme. | ||
+ | |||
+ | ==== OTHERS.RC ==== | ||
+ | |||
+ | Do tohoto souboru si vložíme všechny ostatní styly. U stylu // | ||
+ | |||
+ | Vložte tam tedy toto: | ||
+ | |||
+ | < | ||
+ | style " | ||
+ | { | ||
+ | xthickness = 2 | ||
+ | ythickness = 2 | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | xthickness = 3 | ||
+ | ythickness = 3 | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | xthickness = 2 | ||
+ | ythickness = 2 | ||
+ | |||
+ | bg[NORMAL] = shade (1.02, @bg_color) | ||
+ | engine " | ||
+ | { | ||
+ | style = GUMMY | ||
+ | } | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | xthickness = 0 | ||
+ | ythickness = 0 | ||
+ | |||
+ | bg[NORMAL] = shade (1.08, @bg_color) | ||
+ | |||
+ | # Radius of the menu items (inside menus) | ||
+ | engine " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | xthickness = 2 | ||
+ | ythickness = 3 | ||
+ | |||
+ | fg[PRELIGHT] = @selected_fg_color | ||
+ | text[NORMAL] | ||
+ | text[PRELIGHT] | ||
+ | text[SELECTED] | ||
+ | text[ACTIVE] | ||
+ | text[INSENSITIVE] | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | GtkSeparatorMenuItem:: | ||
+ | GtkWidget:: | ||
+ | GtkWidget:: | ||
+ | GtkWidget:: | ||
+ | xthickness = 1 | ||
+ | ythickness = 0 | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | xthickness = 2 | ||
+ | ythickness = 1 | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | fg[NORMAL] = lighter (@fg_color) | ||
+ | } | ||
+ | |||
+ | style " | ||
+ | { | ||
+ | xthickness = 4 | ||
+ | ythickness = 4 | ||
+ | |||
+ | bg[NORMAL] = @tooltip_bg_color | ||
+ | fg[NORMAL] = @tooltip_fg_color | ||
+ | } | ||
+ | </ | ||
+ | Vaše práce pak bude vypadat nějak takhle: | ||
+ | |||
+ | |||
+ | {{.: | ||
+ | |||
+ | |||
+ | ====== Odkazy ====== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * Autor návodu: [[Quaker]] |