GTK - Bật / đặt chủ đề tối trên cơ sở mỗi ứng dụng


54

Có cách nào để đặt chủ đề gtk-application-prefer-dark cho ứng dụng không?

Điều này thường được đặt trong mã bởi ứng dụng. Các ứng dụng như Eye of Gnome và Totem bật nó lên. Tôi muốn, khi người dùng bật nó, trên cơ sở cho mỗi ứng dụng.

Đối với gnome-terminal, tôi thường sử dụng một văn bản màu trắng trên sơ đồ màu nền đen và có viền cửa sổ tối sẽ cải thiện giao diện tổng thể.

Tôi cũng muốn bật nó cho vlc.

Câu trả lời:


61

Với gtk+ ≥ 3.12bạn có thể tải một chủ đề cụ thể và biến thể của nó (tối, sáng) trên cơ sở mỗi ứng dụng 1 thông qua biến môi trường GTK_THEME=theme:variant. Theo gtk+hướng dẫn tham khảo :

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.

Vì vậy, để nạp 2 sự tối biến thể bạn sẽ chạy:

GTK_THEME=Adwaita:dark gedit

Tương tự, để đạt được điều ngược lại (khi chủ đề mặc định tối), bạn tải biến thể ánh sáng :

GTK_THEME=Adwaita:light gedit

Lưu ý rằng nếu bạn muốn sử dụng nó thông qua một trình khởi chạy tùy chỉnh ( .desktoptệp), bạn sẽ phải thêm vào envlệnh trong Execdòng:

Exec=env GTK_THEME=Adwaita:dark eog %U

1: Đáng lưu ý rằng - theo quyết định của nhà phát triển - mới hơn gnome-terminalcó cấu hình riêng thông qua menu> tùy chọn và nó bỏ qua chủ đề. Ngoài ra, vì đây là công cụ khá mới, một số ứng dụng gtk + 3 có thể không (chưa) tôn vinh GTK_THEMEbiến môi trường.
2: Điều này dường như không hoạt động nếu bạn đã có một phiên bản đang chạy của ứng dụng đó, ví dụ nếu nautilusđã chạy ở chế độ tối thì chạy GTK_THEME=Adwaita:light nautilussẽ mở một nautiluscửa sổ mới nhưng vẫn ở chế độ tối. Tôi không biết đây là một tính năng hay lỗi ...


Vì vậy, bạn có thể đặt tên cho một chủ đề cụ thể, nhưng không thể nói "biến thể tối của bất kỳ chủ đề nào được đặt"?
XtL

2
@XTL - Chính xác. Mặc dù GTK_THEME=:light eogdường như cũng đang làm việc ...
don_crissti 18/03/2015

5
Điều này dường như không hoạt động đối với hầu hết các ứng dụng.
Thayne

1
Tôi chưa thể tìm thấy một ứng dụng nào hoạt động được, khi tôi có một chủ đề tối.
Thayne

2
Tôi đã thử ở trên (đối với desktopcác tệp), nhưng nó không hoạt động, thậm chí không với env. Khi khởi chạy từ thiết bị đầu cuối, nó hoạt động hoàn hảo. Tôi sử dụng gtk 3.14.5-1 + deb8u1 và đã thử với gedit 3.14.0-3, chạy trên Debian "jessie / ổn định" 8.
aBarocio80

21

Đối với các ứng dụng GTK + -3, bạn có thể thực thi biến thể chủ đề tối bằng cách sử dụng settings.ini của GtkSinstall:

$ 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

Đối với các ứng dụng không phải GTK + như vnc, bạn vẫn có thể thực thi trang trí cửa sổ tối bằng cách đặt thuộc tính _GTK_THEME_VARIANTX của loại UTF8_STRINGthành dark. Để thực hiện việc này xprop, hãy nhập lệnh sau và nhấp vào cửa sổ sau đó:

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

xpropcũng có thể chọn cửa sổ theo thuộc WM_NAMEtính (nhãn thanh tiêu đề) hoặc theo id cửa sổ:

$ 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

Để có được id cửa sổ và tên, sử dụng xlsclients -l.


Vì một số lý do gnome-terminalđã quyết định rằng quá nhiều nỗ lực để giữ mã cho chủ đề Dark, vì vậy trừ khi bản phân phối của bạn đã vá lại phần này trong phần này sẽ không hoạt động chognome-terminal
MattSturgeon

6

Đây là một tập lệnh bash tôi đã sử dụng để khởi chạy một ứng dụng có chủ đề khác. Mặc dù đã không sử dụng nó trong nhiều năm, vì vậy tôi không biết liệu nó có hoạt động với GTK hiện tại không.

#!/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 "$@"

Đây là một chút thông tin tôi đã nhận được từ kho lưu trữ bốn giờ của Ubuntu. Không chắc chắn nếu nó sẽ là một vấn đề. ( ở đây ) Ngoài ra còn có một bài viết blog chi tiết phương pháp này hơn một chút. ( ở đây ) và ( ở đây ). Cũng có một câu hỏi tương tự trên trang web này đã được trả lời. ( ở đây )

Trong gnome, các ứng dụng lấy chủ đề của chúng từ gnome-settings-daemon. Điều này ngay lập tức áp dụng bất kỳ thay đổi chủ đề nào cho tất cả các ứng dụng đang hoạt động, khiến cho chủ đề trên mỗi ứng dụng không thể thay đổi.


5
Typo hay nhầm lẫn? ('gnome-settings-devil ") ... Từ này là daemon (không phải quỷ) .. Nó có nghĩa gốc rất khác: …(in ancient Greek belief) Daemons are good or benevolent supernatural beings between mortals and gods... daemon = good / devil = bad ... en.wikipedia.org/wiki / Daemon_% 28 classic_mythology% 29 .. (phát âm là ngày-mon )
Peter.O

Typo, đó là những gì xảy ra khi bạn không kiểm tra chính tả mọi thứ: |
giodamelio

2
@ Peter.O: Ý nghĩa khác nhau trong tiếng Anh ngày nay, nhưng cùng một nguồn gốc. etymonline.com/index.php?term=demon
Joce

1
đã thử GTK2_RC_FILES=/usr/share/themes/Adwaita/gtk-2.0/gtkrc /opt/ide/eclipsevà không hoạt động
Robbi Nespu

1

Cụ thể cho gnome-terminal, bạn có thể sử dụng các cách sau để làm cho ứng dụng cụ thể trở nên tối:

gsettings set org.gnome.Terminal.Legacy.Settings theme-variant 'dark'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.