GTK+ 는 김프 툴킷 (GIMP Toolkit)의 준말로, 초기에 김프를 위해서 만든 툴킷이었으며 X 윈도 시스템을 위한 위젯 툴킷 가운데 하나이다. GTK+와 Qt는 모티프에 대한 좋은 대안이 되어 주었다. GTK+는 1997년 스펜서 킴볼(Spencer Kimball), 피터 마티스(Peter Mattis), 조시 맥도널드(Josh MacDonald)가 함께 만든 것이다. 그들은 모두 UC 버클리에 있는 eXperimental Computing Facility (XCF) 소속이었다. LGPL로 라이선스되었기 때문에, GTK+는 자유 소프트웨어이자 오픈 소스 소프트웨어이고, GNU 프로젝트의 일부분이다. GTK+는 C언어로 작성된 객체지향 위젯 툴킷이다. X11 디스플레이 서버 상에서, GTK+는 위젯들을 그리는데 Xlib를 사용한다. Xlib는 유연하고 X 윈도 시스템이 작동하지 않는 플랫폼에서도 GTK+가 사용될 수 있도록 한다. GTK+는 Qt와 마찬가지로 (다른 많은 위젯 툴킷들과 달리) Xt에 기반을 두지 않는다. 그래서 GTK+를 많은 다른 환경으로 이식할 수 있었다. 하지만 전통적인 X11 응용 프로그램의 사용자 설정 방식인 X 리소스 데이터베이스에 접근할 수 없다는 단점이 있다. C++, 펄, 루비, 자바, 파이썬 등으로의 바인딩을 제공한다. 많은 사람들이 에이다, D, 하스켈, 파스칼, PHP, 닷넷 프레임워크로의 바인딩을 작성하였다. 소스 코드 #include int main (int argc, char *argv) { GtkWidget *window; GtkWidget *label; gtk_init(&argc, &argv); / Create the main, top level window */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); / Give it the title */ gtk_window_set_title(GTK_WINDOW(window), "Hello, world!"); / * Map the destroy signal of the window to gtk_main_quit; * When the window is about to be destroyed, we get a notification and * stop the main GTK+ loop by returning 0 */ g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); / * Assign the variable "label" to a new GTK label, * with the text "Hello, world!" */ label = gtk_label_new("Hello, world!"); / Plot the label onto the main window */ gtk_container_add(GTK_CONTAINER(window), label); / Make sure that everything, window and label, are visible */ gtk_widget_show_all(window); / * Start the main loop, and do nothing (block) until * the application is closed */ gtk_main(); return 0; } 빌드 명령 $ gcc -Wall helloworld.c -o helloworld $(pkg-config --cflags --libs gtk+-3.0) 소스 코드 using Gtk; int main (string args) { Gtk.init (ref args); / Create the main, top level window */ var window = new Window(); / Give it the title, border, position, and size */ window.title = "Hello, World!"; window.border_width = 10; window.window_position = WindowPosition.CENTER; window.set_default_size(350, 70); / * Map the destroy signal of the window to gtk_main_quit; * When the window is about to be destroyed, we get a notification and * stop the main GTK+ loop by returning 0 */ window.destroy.connect(Gtk.main_quit); / * Assign the variable "label" to a new GTK label, * with the text "Hello, world!" */ var label = new Label("Hello, World!"); / Add the label onto the main window */ window.add(label); / Make sure that everything, window and label, are visible */ window.show_all(); / * Start the main loop, and do nothing (block) until * the application is closed */ Gtk.main(); return 0; } 빌드 명령 $ valac --pkg gtk+-3.0 HelloWorldGtk.vala 사용자는 디스플레이 엔진으로 툴킷의 모양을 설정할 수 있다. 엔진들은 윈도, 모티프, Qt, 넥스트스텝등의 모양으로 그려줄 수 있다. 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+를 계승하였다. 이것의 새로운 기능은 Pango를 사용하는 새로운 텍스트 렌더링 엔진, 새로운 테마 엔진, 향상된 접근성, 유니코드로의 완전한 전환이 있다. 하지만 GTK+ 2는 GTK+ 1과 호환성이 없으므로 프로그래머들이 소스를 새로 짜야 한다. 몇몇 프로그램들은 GTK+ 1을 그대로 사용한다. GTK+ 1은 GTK+ 2보다 빠르고 덜 복잡하고 임베디드 환경에 더 적합하다. GTK+ 2.8부터는 카이로 엔진을 사용해서 벡터 그래픽을 처리한다. 공식웹사이트 에서 최신버전을 다운로드받아 압축을 원하는 폴더에 풀어준다. 압축을 푼 다음, ------\gtk------\bin 경로를 시스템 환경 설정(환경변수)에서 PATH 경로 추가 설치가 잘 되었는지 확인을 위해 명령행에서 "gtk-demo"를 실행 Project Ridley는 GTK+가 현재 포함하지 않는 각종의 라이브러리를 포함하려고 하는 시도이다. 이들은 libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel ,gtkglext를 포함한다. Gtk# - 닷넷 프레임워크 API를 GTK+로 PyGTK, 파이썬 API를 GTK+로 PHP-GTK, PHP 확장 루비 그놈 GTK+ Reference Manual List of GTK+ applications Another list of GTK+ applications GTK+2&3 binaries for Windows 분류:GNU 프로젝트 소프트웨어 분류:그놈 분류:위젯 툴킷 분류:C로 작성된 자유 소프트웨어 분류:LGPL 라이선스 소프트웨어