2012-09-20 3 views
0

나는 마임 유형과 연관된 Gtk3 아이콘 파일 이름을 얻을 수있는 명령 줄 프로그램을 쓰고 있어요에 대한 아이콘 파일 이름을 점점 ... 생각의이 할 수 있기를 :Gtk3 : MIME 타입

$ ./gtk-mimetype-icon text/html 
Mime type: text/html 
Icon file: /usr/share/icons/gnome/48x48/mimetypes/text-html.png 

불행하게도,이 대신에 무슨 일이 일어나고 :

$ ./gtk-mimetype-icon text/html 

(process:30041): Gtk-CRITICAL **: gtk_icon_theme_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed 

(process:30041): Gtk-CRITICAL **: gtk_icon_theme_lookup_by_gicon: assertion `GTK_IS_ICON_THEME (icon_theme)' failed  
Unable to load icon info, bailing! 

을 솔루션에 대한 인터넷 검색 워드 프로세서 &를 검색 후, 나는 진행하는 방법에 당황하고있다. X 터미널에서 DISPLAY를 제대로 내보내는 중입니다.

$ env |grep DISPLAY 
DISPLAY=:0.0 

프로그램 소스가 아래에 있습니다. 나는 glib2-2.30.3과 gtk3-3.2.4에 대해 구축하고있다. 어떤 통찰력이라도 감사드립니다!

#include <gio/gio.h> 
#include <gtk/gtk.h> 
#include <stdio.h> 
// save as gtk-mimetype.c and build w/: 
// cc -o gtk-mimetype-icon `pkg-config --cflags --libs glib-2.0 gtk+-3.0` gtk-mimetype.c 
// cf. http://unix.stackexchange.com/questions/11152/how-to-get-the-icon-for-a-mime-type 
int 
main (int argc, char **argv) 
{ 
    g_type_init(); 
    if (argc < 2) { 
     fprintf (stderr, "Usage: %s <mimetype\n", argv[0]); 
     return -1; 
    } 

    GIcon *icon = g_content_type_get_icon (argv[1]); 

    GtkIconInfo *icon_info = gtk_icon_theme_lookup_by_gicon (
     gtk_icon_theme_get_default(), 
     icon, 
     48, 
     GTK_ICON_LOOKUP_GENERIC_FALLBACK); 

    const char *filename; 
    if (icon_info != NULL) 
     filename = gtk_icon_info_get_filename (icon_info); 
    else { 
     fprintf (stderr, "Unable to load icon info, bailing!\n"); 
     return -1; 
    } 

    printf ("Mime type: %s\nIcon file: %s\n", 
      argv[1], 
      filename); 

    return 0; 
} 
+1

당신이 점점 오류가 무엇인가에 g_type_init();를 교체하십시오 GTK 프레임 워크를 초기화해야? – Nelson

답변

1

당신은 gtk_init(&argc, &argv);

+0

이것이 문제를 해결할 지 모르겠지만 어떤 경우에는 사실입니다. – ptomato

+0

게시하기 전에 시도 : – Kwariz

관련 문제