/* Caolan McNamara, just a quickly hacked version of * http://folks.o-hand.com/mallum/xres/gxlsmixmaps.c * by Matthew Allum to take pixmap ids from stdin * * gcc dumper.c `pkg-config --cflags --libs gtk+-2.0` -o dumper * * e.g. cut -f 1 /tmp/foome | sort | uniq -u | ./dumper */ #include #include static int error_handler(Display *display, XErrorEvent *error) { printf("Got an X error but trapping....\n"); return 0; } int main(int argc, char **argv) { char buffer[256]; GdkPixmap *gdk_pixmap; GtkWidget *img, *window, *scrolled_window, *vbox; gtk_init(&argc, &argv); XSetErrorHandler(error_handler); window = gtk_dialog_new (); gtk_container_set_border_width (GTK_CONTAINER (window), 0); gtk_widget_set_size_request (window, 600, 400); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)->vbox), scrolled_window, TRUE, TRUE, 0); vbox = gtk_vbox_new (FALSE, 5); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), vbox); gtk_widget_show_all (window); while (fgets(buffer, 256, stdin) != NULL) { long id = strtol(buffer, NULL, 16); gdk_pixmap = gdk_pixmap_foreign_new (id); img = gtk_image_new_from_pixmap (gdk_pixmap, NULL); gtk_box_pack_start_defaults (vbox, img); gtk_widget_show (img); } gtk_main(); return 0; }