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]] | ||