X-Git-Url: https://git.harvie.cz/?a=blobdiff_plain;f=c%2Fvizionix%2Fmkxsock.c;fp=c%2Fvizionix%2Fmkxsock.c;h=afc9bebe17e519c09fe9cd69d12d2406a401cc26;hb=02d6e78a2540449d88f8f815b02ea85aad7f6ab1;hp=0000000000000000000000000000000000000000;hpb=3e906a3f10d1e1d94b54b45a1040dc6cd4178cb5;p=mirrors%2FPrograms.git diff --git a/c/vizionix/mkxsock.c b/c/vizionix/mkxsock.c new file mode 100644 index 0000000..afc9beb --- /dev/null +++ b/c/vizionix/mkxsock.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +void print_help(char ** argv) { + printf( + "Usage: %s [args]\n" + "Args:\n" + "\t -c color\n" + "\t -w width\n" + "\t -h height\n" + "\t -? (display help)" + "\nExample: %s -c black -w 640 -h 480\n\n", + argv[0], argv[0]); +} + +gint main(gint argc, gchar ** argv) +{ + gchar *colorstr = "black"; + int width = 640; + int height = 480; + + int opt; + while ((opt = getopt(argc, argv, "?c:w:h:")) != -1) { + switch (opt) { + case 'c': + colorstr = optarg; + break; + case 'w': + width = atoi(optarg); + break; + case 'h': + height = atoi(optarg); + break; + case '?': + print_help(argv); + return 0; + break; + } + } + + //printf("%s\n", colorstr); return 0; + + gtk_init(&argc, &argv); + + //Colors + GdkColor color; + gdk_color_parse(colorstr, &color); + + //Create window + GtkWidget *win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget *sock = gtk_socket_new(); + g_signal_connect(sock, "plug-removed", gtk_main_quit, NULL); + g_signal_connect(win, "delete-event", gtk_main_quit, NULL); + gtk_widget_set_size_request(sock, width, height); + gtk_widget_modify_bg(sock, GTK_STATE_NORMAL, &color); + gtk_container_add(GTK_CONTAINER(win), sock); + gtk_widget_show_all(win); + + //Print id + GdkNativeWindow wid = gtk_socket_get_id(GTK_SOCKET(sock)); + int pid; + if ((pid = fork())) { + printf("XSOCK_WID=%d\nXSOCK_PID=%d\n", wid, pid); + return 0; + } + fclose(stdout); + + //Run + gtk_main(); + return 0; +}