gsudo 를 설치합니다.
msys2 mingw64를 관리자 권한으로 실행하세요
pacman -S mingw-w64-x86_64-sassc
https://github.com/vinceliuice/WhiteSur-gtk-theme
을 클론하여 테마를 다운 받습니다.
사실 위의 과정은 귀찮다 https://www.gnome-look.org/p/1403328 에서 받고 싶은거 받아주자
pacman -Syu –noconfirm
pacman -S –noconfirm –needed mingw-w64-x86_64-sassc
네, 이해합니다! 지금까지의 모든 정보를 바탕으로, GTK4 테마 적용을 위한 파일 위치와 내용을 처음부터 끝까지 명확하게 문서화하여 정리해 드리겠습니다. 이 문서를 잘 저장해 두시면 나중에 다시 참고하실 수 있을 거예요.
MSYS2 환경에서 Python GTK4 애플리케이션 테마 적용 완벽 가이드
이 가이드는 MSYS2 (Mingw64) 환경에서 Python GTK4 애플리케이션에 WhiteSur-Light 테마를 적용하는 방법을 단계별로 설명합니다.
목표: 당신의 GTK4 앱이 WhiteSur-Light 테마로 표시되도록 합니다.
1단계: GTK4 테마 파일 준비 및 배치
GTK4 테마는 특정 규칙에 따라 MSYS2 홈 디렉토리 내에 위치해야 합니다.
WhiteSur-Light
테마 다운로드:- 사용하려는
WhiteSur-Light
테마의 GTK4 호환 버전을 다운로드합니다. (예: GitHub, Pling 등) - 다운로드한 파일은 보통
.zip
또는.tar.xz
형태의 압축 파일입니다.
- 사용하려는
- 테마 압축 해제 및 배치:
- 압축 파일을 푼 후,
WhiteSur-Light
라는 이름의 폴더가 생기는지 확인합니다. 이 폴더 안에는gtk-4.0
,gtk-3.0
,cinnamon
등의 하위 폴더가 있을 것입니다. - 이
WhiteSur-Light
폴더 전체를 MSYS2의 사용자 테마 디렉토리인~/.themes/
안에 복사합니다. - Windows 탐색기 경로:C:\msys64\home\admin\.themes\(여기서 admin은 당신의 MSYS2 사용자 이름입니다. .themes 폴더가 보이지 않는다면 Windows 탐색기에서 숨김 파일 표시를 활성화하거나 주소창에 직접 입력하세요.)
- 결과적으로 다음과 같은 경로가 되어야 합니다:C:\msys64\home\admin\.themes\WhiteSur-Light\(그리고 이 WhiteSur-Light 폴더 안에 gtk-4.0 폴더와 그 내용물(gtk.css, gtk.gresource 등)이 있어야 합니다.)
- 압축 파일을 푼 후,
2단계: GTK 설정 파일 (settings.ini
) 배치 및 구성
GTK에게 어떤 테마를 사용할지 알려주는 설정 파일입니다.
- 필요한 폴더 생성:MSYS2 터미널을 열고 다음 명령어를 입력하여 필요한 디렉토리를 생성합니다. Bash
mkdir -p ~/.config/gtk-4.0/
- 이 명령은
C:\msys64\home\admin\.config\gtk-4.0\
경로에 폴더가 없으면 자동으로 만들어 줍니다. (.config
폴더 역시 숨김 폴더입니다.)
- 이 명령은
settings.ini
파일 생성 및 내용 작성:C:\msys64\home\admin\.config\gtk-4.0\
폴더로 이동합니다.- 이 폴더 안에
settings.ini
라는 이름의 새 텍스트 파일을 생성합니다. - 파일을 열고 정확히 다음 내용을 입력하거나 붙여넣습니다: Ini, TOML
[Settings] gtk-theme-name=WhiteSur-Light
gtk-theme-name=
뒤에는 1단계에서 사용한 테마 폴더 이름과 정확히 일치해야 합니다. (대소문자 구분)- 파일을 UTF-8 인코딩으로 저장합니다. (메모장 등에서 저장 시 인코딩을 지정할 수 있습니다.)
3단계: Python 코드 확인
Python GTK4 코드 내에서 테마 설정이 settings.ini
를 방해하지 않도록 해야 합니다.
- 테마 강제 설정 줄 주석 처리/제거:당신의 Python 코드 (app.py 또는 해당 파일)를 열어, Gtk.Settings.get_default()를 사용하여 테마 이름을 직접 설정하는 줄이 단 한 군데만 존재하고, 다른 모든 곳(특히 MainWindow 클래스 내부)에서는 완전히 주석 처리되거나 삭제되어 있는지 확인합니다.
- 올바른 예시 (코드 상단에 한 번만): Python
import sys import gi gi.require_version('Gtk', '4.0') gi.require_version('Adw', '1') from gi.repository import Gtk, Adw settings = Gtk.Settings.get_default() settings.set_property("gtk-theme-name", "WhiteSur-Light") # 이 줄은 여기에만! # 다른 곳에서는 이와 유사한 줄이 없어야 합니다.
- 파일을 저장합니다.
- 올바른 예시 (코드 상단에 한 번만): Python
4단계: 변경 사항 적용 및 테스트
모든 설정이 완료되었다면, 이제 MSYS2 환경에서 앱을 실행하여 테마가 적용되었는지 확인합니다.
- MSYS2 터미널 완전 재시작:
- 가장 중요합니다.
settings.ini
와 같은 환경 설정 파일은 터미널 세션이 시작될 때 로드되는 경우가 많으므로, 현재 열려 있는 MSYS2 터미널 창을 완전히 닫고 새로 열어야 합니다.
- 가장 중요합니다.
- 애플리케이션 실행:MSYS2 터미널에서 당신의 Python 애플리케이션을 실행합니다. Bash
python your_app_file_name.py
(예:python app.py
) - 결과 확인:
- 앱이 실행되었을 때 WhiteSur-Light 테마가 적용되어 있는지 확인합니다.
5단계: 문제 발생 시 디버깅 (선택 사항)
만약 여전히 테마가 적용되지 않거나 이상하게 보인다면, 다음과 같이 디버깅 정보를 얻을 수 있습니다.
- GTK Inspector (인스펙터) 사용:
- 앱이 실행된 상태에서
Ctrl + F12
를 누르면 GTK Inspector 창이 열립니다. 이 도구를 통해 현재 적용된 CSS 스타일을 직접 확인할 수 있습니다. - 만약
Ctrl + F12
가 작동하지 않는다면, 다음 명령으로 앱을 실행해 보세요: Bashexport GTK_DEBUG=interactive python your_app_file_name.py
이후Ctrl + F12
를 다시 시도합니다.
- 앱이 실행된 상태에서
- GTK CSS 디버그 메시지 확인:
- 테마의 CSS 파일이 제대로 파싱되고 있는지 확인하려면 다음 명령으로 앱을 실행하고 터미널 출력을 확인합니다: Bash
export GTK_DEBUG=css python your_app_file_name.py
- 이전처럼
Theme parser warning
메시지(alpha() is deprecated
,@define-color and named colors are deprecated
등)가 계속 보인다면, 테마 파일 자체의 CSS 문법이 당신의 GTK4 버전에 완벽하게 호환되지 않는다는 의미입니다. 이 경우 다른 GTK4 호환 테마를 시도해 보는 것이 가장 좋은 해결책일 수 있습니다.
- 테마의 CSS 파일이 제대로 파싱되고 있는지 확인하려면 다음 명령으로 앱을 실행하고 터미널 출력을 확인합니다: Bash
이 가이드가 테마 적용 문제를 해결하는 데 도움이 되기를 바랍니다. 차근차근 따라 해 보시고, 어떤 단계에서든 문제가 발생하면 다시 알려주세요!

#include <gtk/gtk.h>
static void
print_hello(GtkWidget* widget,
gpointer data)
{
g_print("Hello World\n");
}
static void
activate(GtkApplication* app,
gpointer user_data)
{
GtkWidget* window;
GtkWidget* button;
window = gtk_application_window_new(app);
gtk_window_set_title(GTK_WINDOW(window), "Hello");
gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
button = gtk_button_new_with_label("Hello World");
g_signal_connect(button, "clicked", G_CALLBACK(print_hello), NULL);
gtk_window_set_child(GTK_WINDOW(window), button);
gtk_window_present(GTK_WINDOW(window));
GtkCssProvider *provider = gtk_css_provider_new();
gtk_css_provider_load_from_path(provider, "/usr/share/themes/WhiteSur-Light/gtk-4.0/gtk.css");
gtk_style_context_add_provider_for_display(
gdk_display_get_default(),
GTK_STYLE_PROVIDER(provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
);
}
int
main(int argc,
char** argv)
{
GtkApplication* app;
int status;
app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
return status;
}
와 같이 설정한 뒤

settings -> GTK 테마 -> WhiteSur-Light 으로 진입하여 바꿔주시면

잘 됩니다.