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.
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.
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.
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 :(
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.
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
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/showthread.php?t=377397&page=7 – A Beginner „How To“ for gtkrc themes.
https://live.gnome.org/GnomeArt/Tutorials/GtkThemes/StyleProperties
http://gnome-look.org/content/show.php?content=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.
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é.
http://www.vogella.com/articles/Eclipse4CSS/article.html
http://eclipse.dzone.com/articles/editing-eclipse-4-workbench
Jak upravit vzhled menu aby bylo viditelně ohraničeno (visible border)?
mal si na mysli take nieco ?
http://i.imgur.com/4e8lXHv.png
Jan:
Mám za to, že pomocí CSS měnit vzhled menu nelze, leda hlavní "menu bar", ten si Eclipse renderuje sama, vlastní menu jsou obyčejná Gtk menu. Mám za to, že vše co lze pomocí CSS nastavit lze nastavit přes Jeeeyul's Themes plugin. Ale mohu se samozřejmě mýlit!
Na principiální roli Gtk usuzuji z experimentální zkušenosti - při stejném CSS stylu změna Gtk stylu mění (radikálně) vzhled menu. Ergo, může za to Gtk styl. Nebo alespoň také Gtk styl. Nebo se vzájemně tlučou. Nebo se to tluče s Jeeeyul's Theme.
> http://i.imgur.com/4e8lXHv.png
Jo přesně něco takového mám na mysli ;) Copak je to za téma?
Dokonce to má i náznak jednoduchého stínu pod menu!
Naopak se mi moc nelíbí šedá ploch okolo posuvníků.
P.S.
Z nějakého důvodu WordPress vyžadoval schválení tvého příspěvku, netuším proč, můj záměr to nebyl.
Inspiroval si ma na customizaciu NetBeansu. Nasiel som nieco podobne. Mozno Ti to pomoze ::
http://www.techytalk.info/fix-clearlooks-gtk-2-theme-missing-menu-borders-on-java-applications/
espinosa_cz:
> Jo přesně něco takového mám na mysli ;) Copak je to za téma?
> Dokonce to má i náznak jednoduchého stínu pod menu!
> Naopak se mi moc nelíbí šedá ploch okolo posuvníků.
Pod Gnome (F18) mam default temu Adwaita.
V Jeeeyul's Themes plugin je potrebne takisto prepnut na Adwaita temu (default je tam
Chrome). Tu som si potom este minimalne modifikoval (okrem ineho aj tu sedu farbu okolo
posuvnikoch)
http://i.imgur.com/qHDwi07.png
Skoro som zabudol, vsetko je to na novom Eclipse Kepler (mimochodom dnes vychadza finalna verzia)
Jan:
Tak tedy čistou Adwaitu jsem zkoušel ale takhle nevypadala.
Vše spouštím pod KDE. Mam stále Eclipse Juno (4.2) vykouším Keplera a Gnome a uvidíme. Ty posuvníky, to jsem od vás nepochopil, jste si modifikoval v Jeeeyul's Themes nebo v gtkrc?
myownclone:
Na WM jsem si nic neměnil, je to standardní KDE se standardním Oxygenem. BTW, moc se mi nelíbí, ale šel jsem cestou nejmenšího odporu. Snažím se o úpravu Eclipse. Ty tenké posuvníky chci ze dvou důvodů:
jednak vizuální, potlačit jejich výraznost, u IDE je primární kód, a menší posuvník znamená i více viditelného kódu. Za druhé - výkonnost překreslování Eclipse/SWT je příšerná, čím nenápadnější posuvníky tím je to méně vidět, hlavně při resize panelů.
Hosi vypada to jako solidni prace. Minimalne ted uz ste tomu venovali spoustu energie a casu, takze by bylo bajecny kdybyste vysledek toho snazeni pak nekam hodili. Neco ve stylu GitHubu, aby bylo mozne vzhled dale upravovat a pripadne ho i forknout. Kazdopadne diky za vasi snahu a tesim se na konecny vysledek.