Tema adalah bagian kustomisasi yang paling terlihat: warna jendela, bentuk tombol, hingga set ikon dan kursor ikut berganti. Di Linux, ketiganya ternyata bukan satu paket tunggal melainkan tiga sistem terpisah — tema widget, paket ikon, dan tema kursor — yang masing-masing dipasang dan dipilih sendiri. Pada Chapter ini kita bedah struktur berkas tema GTK, cara mengaktifkannya lewat gsettings maupun environment variable, lalu menyatukan tampilan aplikasi Qt supaya desktop tidak tampak seperti dua sistem yang bertabrakan.
Anatomi Tema GTK #
Tema GTK adalah folder biasa, bukan paket terinstal. Penyimpanan standarnya ada di ~/.themes untuk tema milik user dan /usr/share/themes untuk tema dari package manager. Setiap tema diberi nama sesuai foldernya, dan toolkit GTK mencari berkas gtk.css di dalam subfolder gtk-3.0 atau gtk-4.0. Struktur lengkapnya bisa kita bangun sendiri:
mkdir -p latihan-tema/.themes/Senja/gtk-3.0
cat > latihan-tema/.themes/Senja/gtk-3.0/gtk.css <<'EOF'
@define-color accent_color #e95420;
@define-color window_bg_color #242424;
@define-color view_bg_color #2e2e2e;
window {
outline: none;
}
EOF
find latihan-tema | sortOutput yang Dihasilkan:
latihan-tema
latihan-tema/.themes
latihan-tema/.themes/Senja
latihan-tema/.themes/Senja/gtk-3.0
latihan-tema/.themes/Senja/gtk-3.0/gtk.cssMari kita bedah struktur di atas:
- Folder
.themes: lokasi standar tema milik user; GTK juga memeriksa~/.local/share/themesdan$XDG_DATA_DIRS. - Folder
Senja: nama tema — inilah string yang kita tulis saat memilih tema, bukan nama di dalam berkas. - Folder
gtk-3.0: versi toolkit yang dituju; tema untuk GTK 4 berada digtk-4.0dengan format serupa. - Berkas
gtk.css: definisi warna dan gaya; direktif@define-colormembuat konstanta warna, dan blokwindowmenata widget jendela.
Berkas tema sesungguhnya berisi ratusan aturan, tetapi mekanismenya persis seperti contoh: CSS dengan variabel warna yang dibaca toolkit saat aplikasi dimulai. Itulah sebabnya tema berubah tampilannya baru setelah aplikasi dibuka ulang.
Mengaktifkan Tema #
Pada GNOME, pilihan tema disimpan sebagai key gtk-theme pada skema org.gnome.desktop.interface yang kita kenal di Chapter Desktop Configuration
. Berikut contoh tampilan penggantian tema dari terminal pada sesi GNOME:
$ gsettings get org.gnome.desktop.interface gtk-theme
'Adwaita'
$ gsettings set org.gnome.desktop.interface gtk-theme 'Senja'
Cara kedua bekerja bahkan tanpa menyentuh pengaturan: environment variable GTK_THEME menimpa tema untuk satu aplikasi saja. Perintah GTK_THEME=Adwaita:dark gedit membuka gedit memakai varian gelap Adwaita tanpa mengubah aplikasi lain — berguna untuk menguji tema atau menjalankan satu aplikasi bergaya berbeda. Varian ditulis setelah titik dua, dan varian :dark tersedia di hampir semua tema modern. Cara ketiga adalah berkas ~/.config/gtk-3.0/settings.ini dengan baris gtk-theme-name — jalur yang berlaku di Xfce, i3, dan window manager ringan lain.
Aplikasi Qt dan Upaya Penyatuan #
Aplikasi KDE Plasma dibangun di atas toolkit Qt, bukan GTK, sehingga tema GTK tidak otomatis diterapkan padanya. Plasma menyelesaikan urusannya sendiri lewat berkas ~/.config/kdeglobals dan paket tampilan global (Global Theme), sedangkan aplikasi Qt di luar Plasma dikendalikan alat qt5ct atau qt6ct: alat ini membaca ~/.config/qt5ct/qt5ct.conf untuk memilih tema Qt, dan variabel QT_QPA_PLATFORMTHEME=qt5ct harus di-export agar alat tersebut diakui. Hasil akhirnya biasanya berupa pasangan tema yang sengaja dipilih senada, misalnya GTK memakai Breeze-GTK dan Qt memakai Breeze. Panduan menjodohkan kedua toolkit dirangkum di halaman tampilan seragam GTK dan Qt ArchWiki
, dan rincian sistem tema GTK ada di halaman GTK ArchWiki
.
Paket Ikon dan Tema Kursor #
Ikon dan kursor adalah dua sistem lagi. Keduanya disimpan di ~/.icons atau ~/.local/share/icons, dan keduanya dikenali lewat berkas index.theme — kartu identitas format Icon Theme Specification milik freedesktop.org. Contoh berikut adalah berkas index.theme yang boleh kita salin dari tema ikon mana pun:
mkdir -p latihan-ikon/.icons/Papirus/48x48/apps
cat > latihan-ikon/.icons/Papirus/index.theme <<'EOF'
[Icon Theme]
Name=Papirus
Inherits=Adwaita
Directories=48x48/apps
[48x48/apps]
Size=48
Context=Applications
Type=Threshold
EOF
cat latihan-ikon/.icons/Papirus/index.themeOutput yang Dihasilkan:
[Icon Theme]
Name=Papirus
Inherits=Adwaita
Directories=48x48/apps
[48x48/apps]
Size=48
Context=Applications
Type=ThresholdMari kita bedah kartu identitas tersebut:
- Seksi
[Icon Theme]:Nameadalah nama yang ditulis ke pengaturan;Inherits=Adwaitamenetapkan tema fallback ketika ikon tidak ditemukan — ikon aplikasi langka tetap tampil dengan gaya Adwaita. - Key
Directories: daftar folder berisi berkas ikon; tiap folder dideklarasikan ulang sebagai seksi denganSize,Context, danType. - Seksi
[48x48/apps]: menyatakan folder ini memuat ikon aplikasi ukuran 48 piksel. - Folder
48x48/apps: tempat berkas PNG atau SVG sesungguhnya diletakkan.
Tema kursor memakai format index.theme yang sama, tetapi folder isinya berupa direktori ukuran seperti 24 dan 48 yang berisi berkas cursors. Pengaturan keduanya berada di skema yang sama: key icon-theme dan cursor-theme pada org.gnome.desktop.interface, atau key Theme di seksi [Icons] milik Plasma. Daftar tema ikon dan kursor populer dirangkum di halaman icon themes
dan halaman cursor themes ArchWiki
.
Instalasi dari Tarball #
Tema dari GNOME Look atau GitHub umumnya didistribusikan sebagai tarball. Alur pemasangannya seragam: ekstrak arsip ke ~/.themes (tema widget) atau ~/.icons (ikon dan kursor), lalu pilih namanya dari pengaturan — alat GNOME Tweaks menyediakan kotak pilihan tema karena GNOME Settings sengaja tidak menampilkannya. Perintah tar -xf tema.tar.xz -C ~/.themes menyelesaikan ekstraksi; pastikan hasilnya berupa satu folder berisi gtk-3.0, bukan berkas langsung di ~/.themes. Tema yang tidak lagi dipakai cukup dihapus foldernya — tidak ada proses uninstall lain.
Wajah desktop kini utuh dari widget sampai kursor. Kustomisasi berikutnya berpindah dari mata ke tangan: pintasan keyboard yang membuat semuanya lebih cepat dijangkau — materi Chapter Keyboard Shortcuts.