it-swarm-ko.tech

GTK-애플리케이션별로 다크 테마를 활성화 / 설정

응용 프로그램에 gtk-application-prefer-dark-theme을 설정하는 방법이 있습니까?

이것은 일반적으로 응용 프로그램에 의해 코드에서 설정됩니다. 그놈의 눈과 토템과 같은 앱이 켜집니다. 사용자가 응용 프로그램 기반으로 켜고 싶습니다.

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

또한 vlc를 켜고 싶습니다.

62

gtk+ ≥ 3.12 애플리케이션별로 특정 테마 및 변형 (어둡고 밝음)을로드 할 수 있습니다.1 환경 변수를 통한 기초 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 실행할 dark 변형 :

GTK_THEME=Adwaita:dark gedit

마찬가지로 (기본 테마가 어두울 때) 반대를 달성하려면 light 변형을로드하십시오.

GTK_THEME=Adwaita:light gedit

맞춤 실행기를 통해 사용하려는 경우 (.desktop file) env 행의 명령 앞에 Exec를 추가해야합니다.

Exec=env GTK_THEME=Adwaita:dark eog %U

1 : 개발자의 결정에 따라-gnome-terminal는 메뉴> 환경 설정을 통해 자체 구성이 있으며 테마를 무시합니다. 또한 이것은 다소 새로운 것이므로 일부 gtk + 3 애플리케이션은 (아직) GTK_THEME 환경 변수.
2 : 이미 해당 애플리케이션의 실행중인 인스턴스가있는 경우 작동하지 않는 것 같습니다 (예 : nautilus이 이미 어두운 모드에서 실행중인 경우 GTK_THEME=Adwaita:light nautilus은 (는) 새 nautilus 창을 열지 만 여전히 어두운 모드입니다. 이것이 기능인지 버그인지 모르겠습니다.

72
don_crissti

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

vnc과 같은 GTK +가 아닌 응용 프로그램의 경우 _GTK_THEME_VARIANT 유형의 UTF8_STRING X 속성을 dark으로 설정하여 어두운 창 장식을 계속 적용 할 수 있습니다. xprop으로이를 수행하려면 다음 명령을 입력하고 나중에 창을 클릭하십시오.

$ 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를 사용하십시오.

22
Florian Müllner

다음은 다른 테마로 응용 프로그램을 시작하는 데 사용한 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 "[email protected]"

다음은 우분투 fourms 아카이브에서 얻은 약간의 정보입니다. 문제가 될지 확실하지 않습니다. ( here )이 방법을 자세히 설명하는 블로그 게시물도 있습니다. ( here ) 및 ( here ). 이 사이트에는 이미 답변 된 비슷한 질문이 있습니다. ( 여기 )

그놈 아래에서 앱은 gnome-settings-daemon에서 테마를 가져옵니다. 이렇게하면 테마 변경 내용이 모든 활성 응용 프로그램에 즉시 적용되므로 응용 프로그램 별 테마 변경이 불가능합니다.

7
giodamelio

특히 gnome-terminal, 다음을 사용하여 특정 응용 프로그램을 어둡게 만들 수 있습니다.

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

나는 그것을 위해 작은 래퍼 스크립트를 작성했다.

#!/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

REGEX에 https://github.com/BurntSushi/ripgrep 을 사용하고 있습니다

0
user2452171