it-swarm-id.com

GTK - Mengaktifkan / mengatur tema gelap berdasarkan per-aplikasi

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.

62

Dengan gtk+ ≥ 3.12 Anda dapat memuat tema tertentu dan variannya (gelap, terang) pada satu aplikasi1 dasar 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 memuat2 varian dark yang akan Anda jalankan:

GTK_THEME=Adwaita:dark gedit

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

GTK_THEME=Adwaita:light gedit

Perhatikan bahwa jika Anda ingin menggunakannya melalui peluncur khusus (.desktop file) Anda harus menambahkan terlebih dahulu env ke perintah di baris Exec:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Patut dicatat bahwa - sesuai keputusan devs - yang lebih baru gnome-terminal memiliki konfigurasi sendiri melalui menu> preferensi dan mengabaikan tema. Juga, karena ini adalah hal yang agak baru, beberapa aplikasi gtk + 3 mungkin belum (belum) menghormati GTK_THEME variabel lingkungan.
2: Ini sepertinya tidak berfungsi jika Anda sudah memiliki instance aplikasi yang berjalan, mis. jika nautilus sudah berjalan dalam mode gelap kemudian jalankan GTK_THEME=Adwaita:light nautilus akan membuka jendela nautilus baru tetapi masih dalam mode gelap. Saya tidak tahu apakah ini fitur atau bug ...

72
don_crissti

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_VARIANT X properti tipe UTF8_STRING hingga dark. Untuk melakukan ini dengan xprop, ketikkan perintah berikut dan klik jendela setelahnya:

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

xprop juga dapat memilih windows berdasarkan WM_NAME properti (label bilah judul) atau berdasarkan 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.

22

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 "[email protected]"

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 lebih sedikit. ( di sini ) dan ( di sini ). Ada juga pertanyaan serupa di situs ini yang sudah dijawab. ( di sini )

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

7
giodamelio

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

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

Saya menulis skrip pembungkus kecil untuk itu:

#!/bin/bash


if [ $# -eq 0 ]; then
    xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark"
    exit $?
fi


GTK_THEME="$(gsettings get org.gnome.desktop.interface gtk-theme)"
export  GTK_THEME="${a%%:*}:dark"
export GTK_THEME_VARIANT="dark"
"[email protected]" & PID="$!"
echo "started darkening for PID=$PID"
cnt=0
while :; do
    if [ $cnt -lt 1000 ]; then
        sleep .1
        let 'x=x-1'
    else
        sleep 5
    fi
    if ! kill -0 $PID 2>/dev/null; then
        echo "darkening for PID=$PID done"
        exit 0
    fi
    REGEX="$(echo $PID | cat - <(command ps -o pid:1 --no-headers --ppid $PID) | paste -sd "|" -)"
    wmctrl -lp \
        | rg -i "^(0x[a-f0-9]+)\s+\d+\s+($REGEX)\s" -o --replace '$1' \
        | xargs -I @ xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark" -id @
done

Itu menggunakan https://github.com/BurntSushi/ripgrep untuk REGEX

0
user2452171