GTK - Mengaktifkan / mengatur tema gelap berdasarkan per-aplikasi

54

Apakah ada cara untuk mengatur gtk-application-prefer-dark-theme untuk aplikasi?

Ini biasanya diatur dalam kode oleh aplikasi. Aplikasi seperti Eye of Gnome dan Totem menyalakannya. Saya ingin, sebagai pengguna menyalakannya, pada basis per aplikasi.

Untuk gnome-terminal, saya biasanya menggunakan teks putih pada skema warna latar belakang hitam, dan memiliki batas jendela gelap akan meningkatkan tampilan keseluruhan.

Saya juga ingin menyalakannya untuk vlc.

Gary van der Merwe
sumber

Jawaban:

61

Dengan gtk+ ≥ 3.12Anda dapat memuat tema tertentu dan variannya (gelap, terang) berdasarkan aplikasi per 1 melalui variabel lingkungan GTK_THEME=theme:variant. Sesuai gtk+manual referensi :

GTK_THEME.  If set, makes GTK+ use the named theme instead of the theme that is
specified by the gtk-theme-name setting [...] It is also possible to specify a
theme variant to load, by appending the variant name with a colon, like this:
GTK_THEME=Adwaita:dark.

Jadi, untuk memuat 2 yang gelap varian kau akan lari:

GTK_THEME=Adwaita:dark gedit

Demikian juga, untuk mencapai yang sebaliknya (ketika tema default gelap), Anda memuat varian terang :

GTK_THEME=Adwaita:light gedit

Perhatikan bahwa jika Anda ingin menggunakannya melalui peluncur kustom ( .desktopfile) Anda harus menambahkan envke perintah di Execbaris:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Patut dicatat bahwa - sesuai keputusan devs - yang lebih baru gnome-terminalmemiliki konfigurasi sendiri melalui menu> preferensi dan mengabaikan tema. Juga, karena ini adalah hal yang agak baru, beberapa aplikasi gtk + 3 mungkin tidak (belum) menghargai GTK_THEMEvariabel lingkungan.
2: Ini tampaknya tidak berfungsi jika Anda sudah memiliki instance yang berjalan dari aplikasi itu misalnya jika nautilussudah berjalan dalam mode gelap maka menjalankan GTK_THEME=Adwaita:light nautilusakan membuka nautilusjendela baru tetapi masih dalam mode gelap. Saya tidak tahu apakah ini fitur atau bug ...

don_crissti
sumber
Jadi Anda bisa memberi nama tema tertentu, tetapi tidak bisa mengatakan "varian gelap dari tema apa pun yang diatur"?
XTL
2
@XTL - Tepat. Meskipun GTK_THEME=:light eogtampaknya bekerja juga ...
don_crissti
5
Ini tampaknya tidak berfungsi untuk sebagian besar aplikasi.
Thayne
1
Saya belum dapat menemukan aplikasi yang berfungsi saat ini, ketika saya memiliki tema gelap.
Thayne
2
Saya sudah mencoba yang di atas (untuk. desktopFile), tetapi tidak berfungsi, bahkan dengan env. Ketika diluncurkan dari terminal ia bekerja secara sempurna. Saya menggunakan gtk 3.14.5-1 + deb8u1, dan mencoba dengan gedit 3.14.0-3, berjalan pada Debian "jessie / stable" 8.
aBarocio80
21

Untuk aplikasi GTK + -3, Anda dapat menerapkan varian tema gelap menggunakan pengaturan GtkSettings.ini:

$ mkdir -p $HOME/.config/gnome-terminal/gtk-3.0 # the path before gtk-3.0 is arbitrary
$ cat >> $HOME/.config/gnome-terminal/gtk-3.0/settings.ini << EOF
[Settings]
gtk-application-prefer-dark-theme=true
EOF
$ echo 'alias gnome-terminal="XDG_CONFIG_HOME=$HOME/.config/gnome-terminal gnome-terminal" >> $HOME/.bashrc

Untuk aplikasi non-GTK + seperti vnc, Anda masih dapat menerapkan dekorasi jendela gelap dengan mengatur _GTK_THEME_VARIANTproperti tipe X UTF8_STRINGke dark. Untuk melakukan ini xprop, ketik perintah berikut dan klik jendela sesudahnya:

$ xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark"

xpropjuga dapat memilih jendela berdasarkan WM_NAMEproperti (label bilah judul) atau menurut id jendela:

$ xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark" -name "Spotify Premium - Linux Preview"
$ xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark" -id 0x380002b

Untuk mendapatkan id dan nama jendela, gunakan xlsclients -l.

Florian Müllner
sumber
Untuk beberapa alasan gnome-terminaltelah memutuskan itu terlalu banyak upaya untuk menjaga kode untuk tema Gelap, jadi kecuali distro Anda telah menambal ini kembali dalam pekerjaan biasa ini untukgnome-terminal
MattSturgeon
6

Berikut ini adalah skrip bash yang saya gunakan untuk meluncurkan aplikasi dengan tema yang berbeda. Belum pernah menggunakannya bertahun-tahun, jadi saya tidak tahu apakah itu akan bekerja dengan GTK saat ini.

#!/bin/bash
# lauch a gtk application with a different theme
# set GTKRCFILE variable to your favourite theme
GTKRCFILE=Clearlooks
GTK2_RC_FILES=/usr/share/themes/"$GTKRCFILE"/gtk-2.0/gtkrc "$@"

Berikut adalah sedikit info yang saya dapatkan dari arsip fourms ubuntu. Tidak yakin apakah itu akan menjadi masalah. (di sini ) Ada juga posting blog yang merinci metode ini sedikit lebih banyak. (di sini ) dan (di sini ). Ada juga pertanyaan serupa di situs ini yang sudah dijawab. (di sini )

Di bawah gnome, aplikasi mendapatkan tema dari daemon gnome-settings-daemon. Ini secara instan menerapkan perubahan tema untuk semua aplikasi yang aktif, membuat perubahan aplikasi per aplikasi menjadi mustahil.

giodamelio
sumber
5
Kesalahan ketik atau kesalahan? ('gnome-settings-demon ") ... Kata itu adalah daemon (bukan iblis) .. Kata ini memiliki arti akar yang sangat berbeda: …(in ancient Greek belief) Daemons are good or benevolent supernatural beings between mortals and gods... daemon = baik / iblis = buruk ... en.wikipedia.org/wiki / Daemon_% 28classical_mythology% 29 .. (diucapkan hari-Senin )
Peter.O
Typo, itulah yang terjadi ketika Anda tidak mengeja memeriksa semuanya: |
giodamelio
2
@ Peter.O: Arti yang berbeda dalam bahasa Inggris masa kini, tetapi asal usulnya sama. etymonline.com/index.php?term=demon
Joce
1
mencoba GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipsedan tidak berhasil
Robbi Nespu
1

Khusus untuk gnome-terminal, Anda dapat menggunakan yang berikut untuk membuat aplikasi spesifik gelap:

gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
Nick Bull
sumber