Úprava Gtk tématu pro Eclipse IDE

24. 6. 2013 19:41 (aktualizováno) espinosa_cz

Dnešní příspěvek je primárně prosba o radu. Potřeboval bych doladit Gtk2 téma, nejlépe pomocí lokálního gtkrc souboru. Našel jsem vhodné téma, ale chybí mu okraje okolo menu, takže menu vizuálně zapadá do textu na pozadí, což působí velmi rušivě. Vyřešit problém změnou tématu bohužel nelze, málo které téma totiž pasuje na Eclipse a to mi jde především.

Trochu jsem Gtk téma snažil sám doladit, bohužel s mizivým úspěchem. Těch dotazů se nakupilo víc. Tak třeba bude někdo vědět.

A když už jsem začal blogový článek, chtěl bych se podělit, kam jsem zatím „vizuální použitelnost“ Eclipsy dotáhl.

Současný vizuální stav mého Eclipse IDE pod Linuxem

Gtk téma: Adwaita Cupertino L

Eclipse téma:  Jeeeyul's Themes (nutno nainstalovat plugin do Eclipse Jeeeyul's Themes z Marketplace)
+ nějaká drobnější customizace přes .gtkrc
Jak ze screenshotu vidíte, menu nemá okraje a text z menu nepříjemně splývá s textem na pozadí, nepoznáte pomalu co patří k čemu. Menu musí dělat dojem, že je nad vlastním oknem a ne rozteklé v něm.

Dotaz

Jak upravit vzhled menu aby bylo viditelně ohraničeno (visible border)? 

Ideálně úpravou lokálního .gtkrc-2.0, ne zásahem přímo do souborů tématu.
Změna barvy pozadí by také neškodila, stačila by jednoduchá šedá, stejná jakou má menubar.

Relevantní část (??) /usr/share/themes/Adwaita Cupertino L/gtk-2.0/gtkrc

style "menu" {
    xthickness    = 0
    ythickness    = 0
    bg[NORMAL]    = shade (1.05, "#ededed")
    GtkMenuItem::arrow-scaling    = 0.5

    engine "murrine" {
        gradient_shades        = {1.0, 1.0, 1.0, 1.0}
        border_shades        = {1.1, 0.9}
        roundness            = 0 # 0 = squared
        contrast            = 0.8
    }
}

Jak poznám, který engine Gtk s daným tématem vlastně používá?

Koukal jsem se do zdrojáků tématu, ale přímý odkaz tam nikde nebyl, ani na Murrine, ani na žádný jiný.

Adwaita se zdá naznačovat, že nejlépe pracuje s Murrine, prakticky každý prvek má nějaké speciální stavení pro tento engine, viz snipplet nahoře.

Jak si případně vynutím použití určitého engine?

Mám nainstalované všechny co openSUSE má v repozitářích, zcela jistě i Murrine.

Pokud bych dělal zásah přímo do tématu, mám se soustředit na sekci „murrine“?

Zkoušel jsem, ale nezdá se, že by mi to na cokoliv reagovalo! Znamená to, že Murrine není nastaven? Zcela jistě JE nainstalován.

Nebo mám dělat změny jen do rodičovské (obecné, engine nespecifické) sekce?

Ani zde se mi nezdá, že by mi to reagovalo, jen se mi jednou podařilo nastavit barvu pozadí menu na černou pomocí volby bg[BACKGROUND] tuším.

Nastavení xthickness a ythickness nezabírá, to jsem zkoušel jako první. Zkoušel jsem i úmyslně vysoké hodnoty, ale prostě nic, vůbec nic.

Bonusová otázka. Lze nějak vrátit stín pod menu pomocí tématu?

Kdysi Gtk aplikace stín pod menu měly, ale někdy od KDE 4.7, kwin přestal „plošně“ poskytovat stín všem aplikacím a od té doby moje Gtk a Gnome applikace poněkud zploštěly. tedy pokud nepoužívám gtk-oxygen téma, to si o stín umí aktivně říct.

Blbinka na závěr. Jak se zbavit šedého rohu rohu mezi vertikálním a horizontálním posuvníkem? Taková kostička v pravém dolním rohu editoru. Objevuje se na každém panelu který má viditelné oba posuvníky, pokud je viditelný jen jeden, není tam a vše vypadá OK.

 

 

De-uglification mini guide pro Eclipse IDE pod Linuxem

Problém první – volba Gtk tématu

Elipse stojí na GUI frameworku SWT, které si sami vytvořili, ten zase stojí na Gtk, a to stále ve verzi 2.8. I přesto, že Eclipse 4.2 (Juno) uvádí, že je CSS skinovatelná, platí to jen pro některé elementy,  zbytek stále ovlivňuje vybrané Gtk téma, jmenujme menu, dialogové boxy, buttony, tree view, skrolovací lišty v editoru atd. Hlavně jde o ty lišty, ta ty se koukáte celý den, a pak menu, to vidíte také každou chvíli.

A hned první problém, málo které Gtk téma vypadá na Eclipse dobře. Vyzkoušel jsem všechna témata dostupná v openSUSE. Buď se mi nelíbí jako takové, nebo nepasuje na Eclipse. Tak vypadla i populární a jinak vcelku zdařilá témata jako Clearlooks (+ deriváty) a Gtk-oxygen. Musel jsem se tedy uchýlit k gnome-look.org a hledat tam. Pozor, řada témat už nepodporuje Gtk2. Některá stále podporují, ale z popisku se to nedovíte. Některá tvrdí, že Gtk2 stále podporují, ale nainstalovat se mi je nepodařilo.

Po mnoha frustrujících pokusech, lidé skutečně netestují svoje téma na Eclipse, většina témat měla vysloveně nepoužitelná, jsem skončil s Adwaita Cupertino L a Zukitwo. Adwaita Cupertino L má vývodu v úzkých, nenápadných posuvnících, to se mi líbí, zvláště u IDE to jeden ocení. Nevýhoda je v neohraničených menu a v nutnosti doladit další věci ručně. Zukitwo má menu v pořádku, ohraničené a barevné jak mají být, většina věcí funguje out-of-the-box, ale zase posuvníky jsou skoro zbytečně výrazné. Osobně jsem dal jsem tématu Adwaita, její decentní posuvníky to u mě vyhrály.

Pokud víte o lepším tématu, kter0 vypadá dobře s Eclipse, podělte se!

Obecná rada: čím jednodušší téma tím lepší, není tolik vidět jak slabá je Eclipse SWT ve vykreslování. Už s 3.8 to bylo špatné, ale s verzí 4.2 je to znatelně horší, alespoň na Linuxu. Značně to kontrastuje s bezproblémovou rychlostí u IntelliJ na všech platformách. Jó, spojení s Gtk se SWT docela vymstilo :(

Jeeeyul's Themes (Eclipse plugin)

Doporučuji doinstaloval Eclipse plugin Jeeeyul's Themes. Je ke stažení přes Eclipse Markteplace, přímo z prostředí Eclipse, instaluje se jako jakýkoliv jiný plugin (GWT, XText, Spring..).
Jeeeyulova téma musíte nejdříve aktivovat. V Eclipse, menu Window → Preferences → General → Appearance → v combu vybrat Jeeeyul's Themes.

  • Zmizí řada zbytečných čar a okrajů, například pod ouškem záložek
  • V nastavení tématu lze menšit velké fonty v ouškách záložek.
  • Lze si nastavit další vizuální aspekty skinu. Upozornění: zase tak moc toho změnit nelze, jen málo UI prvků je skinovatelných, Gtk téma stále hraje prim.

Dolaďujeme téma pomocí .gtkrc-eclipse

Přes všechnu dosavadní snahu, stále je potřeba doladit některé věci na Gtk tématu, jako je barva tooltipů, velikosti fontů a zmenšit mezery mezi textem pro některé prvky.

Některá Gtk témata jsou na tom lépe než jiná, třeba takový Zukitwo, moje volba č.2, možná ani žádné dolaďování nepotřebuje. Vybraná Adwaita definitivně ano.

Vytvořil jsem proto speciální lokální konfiguraci .gtkrc-eclipse a aplikoval tyto změny pouze na Eclipse, spíš než si plošně rozkopat obecné ~/.gtkrc-2.0.

Ten obsah, ten není z mé hlavy, kopíroval jsem ho z internetu a link bohužel ztratil.

include "/usr/share/themes/Adwaita Cupertino L/gtk-2.0/gtkrc"
include "/etc/gtk-2.0/gtkrc"

style "user-font"
{
    font_name="Sans Serif"
}
widget_class "*" style "user-font"

# Autocompletion background color.
style "eclipse-autocompletion" {
base[ACTIVE] = shade(0.7, "#F2F1F0")
}

# Tooltip background color.
style "eclipse-tooltips" {
bg[NORMAL] = "#e8e8e8"
fg[NORMAL] = "#000000"
}

# Load settings.
class "GtkTreeView" style "eclipse-autocompletion"
widget "gtk-tooltip*" style "eclipse-tooltips"

gtk-theme-name="Adwaita Cupertino L"
gtk-font-name="Sans Serif 8"

Eclipse musím spouštět takto:
GTK2_RC_FILES=~/.gtkrc-eclipse  /path/to/eclipse/eclipse

 

Zdroje

Musím konstatovat, je nouze o dobré články o dolaďování a tvorbě Gtk témat vůbec. Tohle jsem našel:

http://ubuntuforums.org/show­thread.php?t=377397&page=7 – A Beginner „How To“ for gtkrc themes.

https://live.gnome.org/Gno­meArt/Tutorials/GtkThemes/Sty­leProperties

http://gnome-look.org/content/show.php?con­tent=147061 – Gnome Cupertino  GTK 3.x Theme/Style page. Stehuje přes link označený „Adwaita-Cupertno 1.43 gnome 3.4“. Ten druhý mi nefungoval.

Update: další témata

gtk-oxygen -  vadí mi velmi výrazné posuvníky, stylově úplně mimo zbytek, obrysové čáry kde nemají být, okolo snad každého tree view, včetně Preferences. A co hůř, příliš je na něm vidět jak je překreslování Eclipse/SWT pomalé, vertikální posuvníky doslova poskakují před očima při posunech.

QtCurve (nahoře) mi bohužel nefunguje vůbec.
Asi opravdu stín má, těžko říct.

Zukitwo – tohle je moje alternativa B. Ale stejně, menu sice ohraničené je, ale na hraně viditelnosti, posuvníky skoro zbytečně velké a výrazné.

Sdílet