GTK - 앱별로 어두운 테마를 활성화/설정합니다.

GTK - 앱별로 어두운 테마를 활성화/설정합니다.

애플리케이션에 gtk-application-prefer-dark-theme을 설정하는 방법이 있나요?

이는 일반적으로 애플리케이션에 의해 코드에 설정됩니다. Eye of Gnome 및 Totem과 같은 앱에서 이 기능을 켤 수 있습니다. 앱별로 사용자로 열고 싶습니다.

그놈 터미널의 경우 일반적으로 검정색 배경 색상 구성에 흰색 텍스트를 사용하며 어두운 창 테두리를 사용하면 전체적인 모양이 향상됩니다.

또한 vlc용으로 열고 싶습니다.

답변1

gtk+ ≥ 3.12환경 변수를 통해GTK_THEME=theme:variant 애플리케이션별로 특정 테마와 그 변형(어두움, 밝음)을 로드 할 수 있습니다 . ~에 따르면gtk+참고 도서:

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.

그래서 2를 로드하려면어두운실행할 변형은 다음과 같습니다.

GTK_THEME=Adwaita:dark gedit

마찬가지로 반대 효과를 얻으려면(기본 테마가 어두운 경우) 다음을 로드할 수 있습니다.변형:

GTK_THEME=Adwaita:light gedit

사용자 정의 실행기(파일)를 통해 사용하려면 다음 줄에 명령을 추가 .desktop해야 합니다 .envExec

Exec=env GTK_THEME=Adwaita:dark eog %U

1: 개발자의 재량에 따라 최신 버전에는 gnome-terminal메뉴 > 기본 설정을 통해 자체 구성이 있고 테마를 무시한다는 점에 주목할 가치가 있습니다. 또한 이것은 상당히 새로운 것이기 때문에 일부 gtk+ 3 애플리케이션은 GTK_THEME(아직) 환경 변수를 지원하지 않을 수도 있습니다.
2: 이미 실행 중인 앱 인스턴스가 있는 경우에는 작동하지 않는 것 같습니다. 예를 들어 nautilus이미 어두운 모드에서 실행 중인 경우 실행하면 GTK_THEME=Adwaita:light nautilus새 창이 열리지 nautilus만 여전히 어두운 모드에 있습니다. 이게 기능인지 버그인지는 모르겠지만..

답변2

GTK+-3 애플리케이션의 경우 GtkSettings' settings.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

예를 들어 GTK+가 아닌 애플리케이션의 경우 vnctype의 X 속성을 로 설정하여 어두운 창 장식을 강제할 수 있습니다. 이를 수행하려면 다음 명령을 입력한 후 창을 클릭하십시오._GTK_THEME_VARIANTUTF8_STRINGdarkxprop

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

xpropWM_NAME속성(제목 표시줄 레이블) 또는 창 ID로 창을 선택할 수도 있습니다 .

$ 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

창 ID와 이름을 얻으려면 를 사용하십시오 xlsclients -l.

답변3

다음은 다양한 테마로 애플리케이션을 시작하는 데 사용하는 bash 스크립트입니다. 하지만 몇 년 동안 사용하지 않았기 때문에 현재 GTK에서 작동하는지 모르겠습니다.

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

다음은 ubuntu fourms 아카이브에서 얻은 정보입니다. 이것이 문제가 될지는 확실하지 않습니다. (여기) 이 방법을 자세히 설명하는 블로그 게시물도 있습니다. (여기) 그리고(여기). 이 사이트에 비슷한 질문이 답변되어 있습니다. (여기)

gnome에서 애플리케이션은 gnome-settings-daemon에서 테마를 가져옵니다. 이렇게 하면 모든 활성 앱에 테마 변경 사항이 즉시 적용되므로 모든 앱의 테마를 변경할 수 없습니다.

답변4

나는 이를 위해 작은 래퍼 스크립트를 작성했습니다.

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

그것은 사용하고있다https://github.com/BurntSushi/ripgrep정규 표현식의 경우

관련 정보