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