A probléma pontos meghatározása:
Van néhány olyan program a rendszeren, amelyiknek a felülete — betűtípusa, ikonjai, vagy mindkettő — feltűnően kicsi, és ez nem állítható a program saját beállításai közül. A gép többi programja rendben van, a monitor felbontása jó, a asztali környezet (Cinnamon, XFCE, egy suckless-stílusú ablakkezelő stb.) általános méretezése sem hibás — csak ez az egy program „makacs”.
Ez a cikk kifejezetten erről szól: hogyan lehet egyetlen kiválasztott GTK-alapú programot rákényszeríteni nagyobb betűre és/vagy nagyobb ikonokra, úgy, hogy közben minden más program változatlan marad. Az xrandr --dpi, a Cinnamon/GNOME „Megjelenítés méretezése” csúszkája, vagy bármilyen globális HiDPI-beállítás tehát nem tartozik ide — azok az egész munkamenetre hatnak.
A módszer attól függ, hogy az adott program melyik GTK-verzióval készült, mert a három fő verzió (GTK2, GTK3, GTK4) gyökeresen másképp kezeli a méretezést. Biztos, ami biztos: fő a szabványosítás, és a visszamenőleges komplabilitás!
Hogyan deríthető ki, melyik GTK-verziót használja egy program?
ldd $(which programnev) | grep -i gtk
Ha libgtk-x11-2.0.so szerepel a kimenetben, GTK2-ről van szó; libgtk-3.so esetén GTK3, libgtk-4.so esetén GTK4. Ha a program Flatpak-csomagban fut, ehelyett érdemes megnézni a flatpak info --show-runtime <app-id> kimenetét, vagy egyszerűen a lenti „Flatpak-csomagolt programok” szakaszt figyelembe venni.
Gyors áttekintés a három verzióról
| GTK2 | GTK3 | GTK4 | |
|---|---|---|---|
| Betűméret külön állítható? | Igen, gtkrc-ben | Igen, egyéni CSS-témával | Igen, egyéni CSS-témával |
| Ikonméret külön állítható? | Igen, gtk-icon-sizes | Ténylegesen nem (ld. lentebb) | Igen, -gtk-icon-size CSS-tulajdonsággal |
| Teljes felület (betű+ikon+widget) egyben nagyítható? | Részben, témán keresztül | Igen, GDK_SCALE | Igen, GDK_SCALE (X11 alatt) |
| Fő eszköz | GTK2_RC_FILES | GDK_SCALE / GDK_DPI_SCALE / GTK_THEME | GTK_THEME, esetleg GDK_SCALE |
A táblázat legfontosabb, sokakat meglepő sora a GTK3 ikonmérete: ott a klasszikus beállítás létezik, de a GTK figyelmen kívül hagyja.
Alapfogalmak, amikre a cikk többször hivatkozik
GDK_SCALE — egész szám (1, 2, 3…). Ha be van állítva, a GTK a teljes ablakot ennyiszeresére nagyítja: a betű, az ikonok és minden widget arányosan nagyobb lesz, mintha egy HiDPI kijelzőn futna a program. GTK3-nál és GTK4-nél (X11 hátteret használva) is működik.
GDK_DPI_SCALE — lebegőpontos szám (pl. 0.75, 1.5). Kizárólag a betűtípus DPI-jét, vagyis a szöveg méretét módosítja, az ikonokat és a widgetek méretét nem érinti. Önmagában is használható, de GDK_SCALE-lel kombinálva lehet igazán finomhangolni: pl. GDK_SCALE=2 GDK_DPI_SCALE=0.75 az ikonokat/widgeteket megduplázza, a szöveget viszont csak 1,5-szörösére növeli a duplázáshoz képest.
GTK2_RC_FILES — környezeti változó, amely egy saját gtkrc-fájl (vagy kettőspontokkal elválasztott lista) útvonalára mutat; ez a fájl a GTK2 klasszikus stílus-/beállításfájlja, benne a betűtípus, ikontéma és ikonméretek is megadhatók.
GTK_THEME — környezeti változó GTK3/GTK4 alatt, amely egy adott indításra egy konkrét témát kényszerít. Nem kell teljes, kész témának lennie: elég egy saját mappa gtk-3.0/gtk.css (vagy GTK4-nél gtk-4.0/gtk.css) fájllal, amiben csak azt írjuk le, amit felül akarunk bírálni.
GTK2-es programok
A GTK2 mára hivatalosan lezárt, karbantartás nélküli ág, de még mindig előfordul régebbi eszközöknél (néhány régi Java Swing GTK-look-and-feel, régebbi audio/videó szerkesztők, néhány rendszeradminisztrációs eszköz). A GTK2 a legrugalmasabb a három közül: a gtkrc fájlban a betű és az ikonméret is szabadon állítható.
- Hozz létre egy saját gtkrc-fájlt, pl. ~/.config/nagy-gtkrc-2.0 néven:
gtk-font-name = "Sans 14" gtk-icon-theme-name = "Adwaita" gtk-icon-sizes = "gtk-menu=24,24:gtk-small-toolbar=24,24:gtk-large-toolbar=32,32:gtk-button=24,24:gtk-dnd=48,48:gtk-dialog=64,64"
A gtk-icon-sizes sorban a GTK2 hat beépített ikon-kategóriája állítható egyenként (szélesség,magasság pixelben): gtk-menu, gtk-button, gtk-small-toolbar, gtk-large-toolbar, gtk-dnd, gtk-dialog.
- Indítsd el a programot ezzel a fájllal:
GTK2_RC_FILES=~/.config/nagy-gtkrc-2.0 programnev
- Ha az indítás egy menüből/parancsikonról történik, a .desktop-fájl Exec= sorát kell kiegészíteni:
Exec=env GTK2_RC_FILES=/home/felhasznalo/.config/nagy-gtkrc-2.0 /usr/bin/programnev %F
Ha a rendszer .desktop-fájlját nem szabad módosítani, másolj belőle egy saját példányt a ~/.local/share/applications/ alá, és azt szerkeszd.
GTK3-as programok
Itt jön a legtöbb meglepetés. A GTK3 3.10-es verziójától kezdve a gtk-icon-sizes és a gtk-toolbar-icon-size beállítás elavulttá vált, és a GTK egyszerűen figyelmen kívül hagyja — ez hivatalosan dokumentált viselkedés, nem hibaüzenet nélküli mellékhatás. Vagyis GTK3 alatt nincs beállítási kulcs, amivel önmagában, a betűméret érintése nélkül csak az ikonokat lehetne megnagyítani, hacsak a program maga nem kínál erre saját opciót.
1. Teljes felület nagyítása: GDK_SCALE + GDK_DPI_SCALE
Ez a legmegbízhatóbb módszer, ha az ikonok is aprók: mivel az ikonok a widgetekkel együtt nagyítódnak, ez az egyetlen mód GTK3 alatt, ami ikonméretben is érdemi változást hoz.
GDK_SCALE=2 GDK_DPI_SCALE=0.75 programnev
Ez a példa a teljes felületet (ikonokkal, gombokkal együtt) megduplázza, a szöveget viszont csak 1,5-szörösére növeli — érdemes kísérletezni az arányokkal, amíg a betű és az ikon egymáshoz képest is jól néz ki.
2. Csak a betűméret módosítása egyéni CSS-témával
Ha csak a szöveg apró, az ikonok mérete rendben van, egy minimális egyéni témával célzottan, más beállítás érintése nélkül lehet nagyobb betűt kényszeríteni:
mkdir -p ~/.themes/NagyBetu/gtk-3.0
cat > ~/.themes/NagyBetu/gtk-3.0/gtk.css << 'EOF'
* {
font-size: 14pt;
}
EOFGTK_THEME=NagyBetu programnev
Mivel a GTK3 témái valójában CSS-fájlok, ez a technika bármilyen más widget-tulajdonságra (pl. padding, min-height) is kiterjeszthető, ha egy adott vezérlőelem marad túl kicsi.
3. XDG_CONFIG_HOME-trükk (csak óvatosan)
A ~/.config/gtk-3.0/settings.ini tartalmazza a gtk-font-name globális beállítást is. Elméletileg egy programra szűkítve is felül lehet bírálni egy saját XDG_CONFIG_HOME megadásával, de ez a változó az adott program teljes konfigurációs mappa-keresését átirányítja, nem csak a gtk-3.0 almappát — vagyis a program saját beállításai (ha azok is a $XDG_CONFIG_HOME alatt laknak) elveszhetnek vagy alapállapotba kerülhetnek. Emiatt a fenti CSS-témás módszer biztonságosabb; ezt a trükköt csak akkor érdemes bevetni, ha tudod, hogy az adott program nem tárol semmi mást a konfigurációs mappájában, vagy ha egy szimbolikus linkekkel felépített, a valós ~/.config tartalmát tükröző mappát használsz XDG_CONFIG_HOME-ként, amibe csak a saját gtk-3.0/settings.ini-t helyezed el ténylegesen.
Wayland alatti korlátozás
GNOME/Mutter Wayland-munkamenetben a GDK_SCALE és a GDK_DPI_SCALE figyelmen kívül marad. Ha a program egyébként X11-kompatibilis, az XWaylanden át való futtatás kényszerítésével a változók újra hatnak:
GDK_BACKEND=x11 GDK_SCALE=2 programnev
(Ez a legtöbb, X11-alapú ablakkezelőt — pl. dwm, i3 — használó rendszeren eleve nem probléma, mert ott a munkamenet maga is X11.)
GTK4-es programok
A GTK4-ben a méretezés filozófiája megváltozott: alapból a kompozitor (Wayland alatt monitoronkénti, 4.14-től akár törtszámú) skálázására támaszkodik, kevésbé „hackelhető” környezeti változókkal. X11 háttér esetén a GDK_SCALE továbbra is működik, ugyanúgy, ahogy GTK3 alatt.
A jó hír: a GTK4 CSS-rendszerébe bekerült egy -gtk-icon-size tulajdonság, ami GTK3-ban nem létezik (ott érvénytelen-tulajdonság hibaüzenetet ad). Ez lehetővé teszi, hogy GTK4 alatt kifejezetten csak az ikonokat nagyítsuk, a betűméret érintése nélkül:
mkdir -p ~/.themes/NagyIkon/gtk-4.0
cat > ~/.themes/NagyIkon/gtk-4.0/gtk.css << 'EOF'
.normal-icons {
-gtk-icon-size: 32px;
}
.large-icons {
-gtk-icon-size: 48px;
}
EOFGTK_THEME=NagyIkon programnev
A betűméret ugyanúgy CSS-sel (font-size) állítható, mint GTK3 alatt, akár ugyanabban a gtk-4.0/gtk.css-ben.
Korlát: sok újabb GNOME-alkalmazás a libadwaita-ra épül, ami saját (Adwaita) témát kényszerít, és bizonyos verziói figyelmen kívül hagyják a GTK_THEME változót, hacsak nem külön kényszerítjük, vagy nem egy erre patchelt libadwaita-változatot használunk. Ilyen programoknál gyakran csak a GDK_SCALE-es, teljes felületet érintő nagyítás marad járható útnak.
Gyakorlati megvalósítás: hogyan induljon el mindig a módosított beállítással
- Egyszeri teszt terminálból: egyszerűen a program neve elé írva (GDK_SCALE=2 programnev).
- Tartós megoldás parancsikonhoz/menühöz: a .desktop-fájl Exec= sorának módosítása env-es előtaggal, ahogy a GTK2-es példában is látható:
Exec=env GDK_SCALE=2 GDK_DPI_SCALE=0.75 /usr/bin/programnev %F
- Wrapper script, ha több változót kényelmesebb egy helyen tartani:
#!/bin/bash export GDK_SCALE=2 export GDK_DPI_SCALE=0.75 exec /usr/bin/programnev "$@"
Ezt elmentve valahova (pl. ~/bin/programnev-nagy), végrehajthatóvá téve (chmod +x), és a .desktop-fájlban erre a scriptre mutatva a menüből indítás is a kívánt méretezéssel fog történni.
Flatpak-csomagolt programok
Flatpak alatt futó GTK-programoknál a fenti környezeti változók egy sima wrapper scriptből vagy módosított Exec= sorból nem jutnak el a sandboxolt folyamatig — a flatpak run a saját maga által vezérelt környezetet indítja. Helyette a Flatpak saját felülbírálási mechanizmusát kell használni:
flatpak override --user --env=GDK_SCALE=2 --env=GDK_DPI_SCALE=0.75 org.pelda.Alkalmazas
Ez tartósan (minden induláskor) érvényesül; egyszeri teszthez elég a flatpak run --env=... forma is. Ha egyéni CSS-témát (GTK_THEME) próbálsz beállítani egy Flatpak-alkalmazásnál, előfordulhat, hogy a sandbox nem látja a ~/.themes mappát — ekkor a fájlrendszer-hozzáférést is engedélyezni kell:
flatpak override --user --filesystem=~/.themes:ro org.pelda.Alkalmazas
Összefoglalás
- GTK2: GTK2_RC_FILES + saját gtkrc, benne gtk-font-name és gtk-icon-sizes — mindkettő (betű és ikon) egyenként állítható.
- GTK3: ikonméretre nincs hivatalos, önálló kapcsoló (a régi beállítás 3.10 óta figyelmen kívül van hagyva); a gyakorlatban vagy a teljes felületet nagyítod (GDK_SCALE + GDK_DPI_SCALE), vagy csak a betűt egy minimális egyéni CSS-témával (GTK_THEME).
- GTK4: a betű ugyanúgy CSS-sel állítható, de itt már az ikonméretre is van dedikált CSS-tulajdonság (-gtk-icon-size), ami GTK3-ban nem létezik — ez az egyetlen verzió, ahol a betű és az ikon egymástól teljesen függetlenül, célzottan állítható.
- Wayland alatt (GNOME/Mutter) a GDK_SCALE/GDK_DPI_SCALE nem hat; X11-alapú munkameneteken (pl. dwm, i3, Cinnamon X11-módban) ez nem gond.
- Flatpak-csomagoknál mindig a flatpak override/flatpak run --env= utat kell használni, sima környezeti változó vagy .desktop-módosítás nem jut el a sandboxig.
