Commit | Line | Data |
---|---|---|
02d6e78a TM |
1 | #include <stdlib.h> |
2 | #include <stdio.h> | |
3 | #include <getopt.h> | |
4 | #include <gtk/gtk.h> | |
5 | ||
aa9f75db TM |
6 | int return_true(void) { return 1; } |
7 | ||
02d6e78a TM |
8 | void print_help(char ** argv) { |
9 | printf( | |
10 | "Usage: %s [args]\n" | |
11 | "Args:\n" | |
12 | "\t -c color\n" | |
13 | "\t -w width\n" | |
14 | "\t -h height\n" | |
15 | "\t -? (display help)" | |
16 | "\nExample: %s -c black -w 640 -h 480\n\n", | |
17 | argv[0], argv[0]); | |
18 | } | |
19 | ||
20 | gint main(gint argc, gchar ** argv) | |
21 | { | |
22 | gchar *colorstr = "black"; | |
23 | int width = 640; | |
24 | int height = 480; | |
25 | ||
26 | int opt; | |
27 | while ((opt = getopt(argc, argv, "?c:w:h:")) != -1) { | |
28 | switch (opt) { | |
29 | case 'c': | |
30 | colorstr = optarg; | |
31 | break; | |
32 | case 'w': | |
33 | width = atoi(optarg); | |
34 | break; | |
35 | case 'h': | |
36 | height = atoi(optarg); | |
37 | break; | |
38 | case '?': | |
39 | print_help(argv); | |
40 | return 0; | |
41 | break; | |
42 | } | |
43 | } | |
44 | ||
45 | //printf("%s\n", colorstr); return 0; | |
46 | ||
47 | gtk_init(&argc, &argv); | |
48 | ||
49 | //Colors | |
50 | GdkColor color; | |
51 | gdk_color_parse(colorstr, &color); | |
52 | ||
53 | //Create window | |
54 | GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
55 | GtkWidget *sock = gtk_socket_new(); | |
aa9f75db | 56 | g_signal_connect(sock, "plug-removed", G_CALLBACK(return_true), NULL); |
02d6e78a TM |
57 | g_signal_connect(win, "delete-event", gtk_main_quit, NULL); |
58 | gtk_widget_set_size_request(sock, width, height); | |
59 | gtk_widget_modify_bg(sock, GTK_STATE_NORMAL, &color); | |
60 | gtk_container_add(GTK_CONTAINER(win), sock); | |
61 | gtk_widget_show_all(win); | |
62 | ||
63 | //Print id | |
64 | GdkNativeWindow wid = gtk_socket_get_id(GTK_SOCKET(sock)); | |
65 | int pid; | |
66 | if ((pid = fork())) { | |
67 | printf("XSOCK_WID=%d\nXSOCK_PID=%d\n", wid, pid); | |
68 | return 0; | |
69 | } | |
70 | fclose(stdout); | |
71 | ||
72 | //Run | |
73 | gtk_main(); | |
74 | return 0; | |
75 | } |