Gtk: X 윈도 시스템을 위한 위젯 툴킷 가운데 하나

GTK김프 툴킷(GIMP Toolkit)의 준말로, 초기에 김프를 위해서 만든 툴킷이었으며 X 윈도 시스템을 위한 위젯 툴킷 가운데 하나이다. GTK와 Qt모티프에 대한 좋은 대안이 되어 주었다. GTK는 1997년 스펜서 킴볼(Spencer Kimball), 피터 마티스(Peter Mattis), 조시 맥도널드(Josh MacDonald)가 함께 만든 것이다. 그들은 모두 UC 버클리에 있는 eXperimental Computing Facility (XCF) 소속이었다. LGPL로 라이선스되었기 때문에, GTK는 자유 소프트웨어이자 오픈 소스 소프트웨어이고, GNU 프로젝트의 일부분이다.

GTK+
개발자그놈 재단
발표일1998년 4월 14일(26년 전)(1998-04-14)
안정화 버전
4.6.0 / 2021년 12월 30일(2년 전)(2021-12-30)
미리보기 버전
4.3.1 / 2021년 6월 9일(2년 전)(2021-06-09)
저장소
운영 체제크로스 플랫폼
종류개발 라이브러리
라이선스LGPL
웹사이트www.gtk.org

설계

GTK는 C언어로 작성된 객체지향 위젯 툴킷이다. X11 디스플레이 서버 상에서, GTK는 위젯들을 그리는데 Xlib를 사용한다. Xlib는 유연하고 X 윈도 시스템이 작동하지 않는 플랫폼에서도 GTK가 사용될 수 있도록 한다.

GTK는 Qt와 마찬가지로 (다른 많은 위젯 툴킷들과 달리) Xt에 기반을 두지 않는다. 그래서 GTK를 많은 다른 환경으로 이식할 수 있었다. 하지만 전통적인 X11 응용 프로그램의 사용자 설정 방식인 X 리소스 데이터베이스에 접근할 수 없다는 단점이 있다.

언어 바인딩

C++, , 루비, 자바, 파이썬 등으로의 바인딩을 제공한다. 많은 사람들이 에이다, D, 하스켈, 파스칼, PHP, 닷넷 프레임워크로의 바인딩을 작성하였다.

Hello World 프로그램

C

  • 소스 코드
// Include gtk #include   static void on_activate (GtkApplication *app) {   // Create a new window   GtkWidget *window = gtk_application_window_new (app);   // Create a new button   GtkWidget *button = gtk_button_new_with_label ("Hello, World!");   // When the button is clicked, close the window passed as an argument   g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_close), window);   gtk_container_add (GTK_CONTAINER (window), button);   gtk_widget_show_all (window); }  int main (int argc, char *argv[]) {   // Create a new application   GtkApplication *app = gtk_application_new ("com.example.GtkApplication",                                              G_APPLICATION_FLAGS_NONE);   g_signal_connect (app, "activate", G_CALLBACK (on_activate), NULL);   return g_application_run (G_APPLICATION (app), argc, argv); } 
  • 빌드 명령
$ gcc `pkg-config --cflags gtk+-3.0` -o hello-world-gtk hello-world-gtk.c `pkg-config --libs gtk+-3.0` 

Vala

  • 소스 코드
int main (string[] argv) {     // Create a new application     var app = new Gtk.Application ("com.example.GtkApplication",                                    GLib.ApplicationFlags.FLAGS_NONE);      app.activate.connect (() => {         // Create a new window         var window = new Gtk.ApplicationWindow (app);          // Create a new button         var button = new Gtk.Button.with_label ("Hello, World!");          // When the button is clicked, close the window         button.clicked.connect (() => {             window.close ();         });          window.add (button);         window.show_all ();     });      return app.run (argv); } 
  • 빌드 명령
$ valac --pkg gtk+-3.0 gtk-hello.vala 

모양

사용자는 디스플레이 엔진으로 툴킷의 모양을 설정할 수 있다. 엔진들은 윈도우, 모티프, Qt, 넥스트스텝 등의 모양으로 그려줄 수 있다.

GTK를 사용하는 환경

Gtk: 설계, 언어 바인딩, 모양 
Screenshot of the GIMP 2.0 on Xfce4
  • 그놈 환경은 GTK를 기반으로 사용한다.
  • Xfce 환경도 GTK를 기반으로 사용한다. 하지만 Xfce용 프로그램은 많은 것에 의존하지 않는다. (이것은 그놈 프로그램과 GTK 프로그램을 구분한다)
  • GPE, Maemo (노키아의 인터넷 태블릿 프레임워크), 액세스 리눅스 플랫폼 (새로운 팜 OS 호환 PDA 플랫폼) 도 GTK를 기반으로 한다.

GTK 프로그램은 KDE 같은 다른 데스크톱 환경에서 돌아간다. GTK는 마이크로소프트 윈도우에서도 돌아간다. DirectFB와 ncurses 기반 포팅도 있다.

창 관리자

  • 메타시티는 GTK+ 2를 사용한다.
  • Xfwm은 GTK+ 2를 사용한다.

그래픽과 관련되지 않은 코드

GTK는 초기에 그래픽과 관련되지 않은 코드를 포함했다. 이들은 링크드 리스트 및 바이너리 트리를 제공했다. GObject와 함께 오는 이러한 유틸리티 시스템은 Glib라는 별도의 라이브러리로 쪼개졌고, 이는 그래픽 인터페이스가 필요 없는 프로그래머에게 도움을 준다.

GTK+ 2

GTK+ 2는 GTK+를 계승하였다. 이것의 새로운 기능은 Pango를 사용하는 새로운 텍스트 렌더링 엔진, 새로운 테마 엔진, 향상된 접근성, 유니코드로의 완전한 전환이 있다. 하지만 GTK+ 2는 GTK+ 1과 호환성이 없으므로 프로그래머들이 소스를 새로 짜야 한다. 몇몇 프로그램들은 GTK+ 1을 그대로 사용한다. GTK+ 1은 GTK+ 2보다 빠르고 덜 복잡하고 임베디드 환경에 더 적합하다.

GTK+ 2.8부터는 카이로 엔진을 사용해서 벡터 그래픽을 처리한다.

MS 윈도우에서의 환경설정

공식적으로 MSYS2 혹은 gvsbuild를 통해 설치할 수 있다.

x86-64 환경에서 MSYS2를 이용하는 경우

$ pacman -S mingw-w64-x86_64-gtk3 

를 통해 설치할 수 있으며 GTK용 GUI 빌더 GLADE는

pacman -S mingw-w64-x86_64-glade 

를 통해 설치할 수 있다.

차후 개발

  • Project Ridley는 GTK+가 현재 포함하지 않는 각종의 라이브러리를 포함하려고 하는 시도이다. 이들은 libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel ,gtkglext를 포함한다.

같이 보기

각주

외부 링크

Tags:

Gtk 설계Gtk 언어 바인딩Gtk 모양Gtk GTK를 사용하는 환경Gtk 그래픽과 관련되지 않은 코드Gtk GTK+ 2Gtk MS 윈도우에서의 환경설정Gtk 차후 개발Gtk 같이 보기Gtk 각주Gtk 외부 링크Gtk

🔥 Trending searches on Wiki 한국어:

진 시황제정승연그래핀벤저민 해리슨인산유튜브아두이노우루과이오인혜서명운동KBS 1TV 일일 드라마김남국구강성교대마초고조선박은수 (배우)정규 표현식이기제기체 상수NFPA 704손미나 (작가)한국방송공사어는점 내림원진아너는 내 운명 (드라마)군사력 지수정용진인도네시아다음쌍곡선 함수김정은 (가수)숙휘공주C (프로그래밍 언어)박원숙헥세인질병 목록빌 게이츠류성현 (배우)7인의 탈출FIFA 월드컵24시간제이민우 (배우)옴의 법칙칼슘그리스전재용베릴륨조승우자바 (프로그래밍 언어)탄산 나트륨2023년 3월 죽음네이버 (기업)분산카를 융연평균 성장률정윤정 (쇼핑 호스트)김을동조성민 (가수)탄소웅남이업비트FIFTY FIFTY규소흥선대원군이상기체 법칙중화인민공화국나트륨태풍의 계절TVING국제 A매치폰허브신동엽 (시인)김영삼이소정 (기자)카지노 (드라마)밀도🡆 More