#include #include static gboolean iconify_window(GtkWindow* w) { g_print("%s\n", __FUNCTION__); gtk_window_iconify(w); return FALSE; } static gboolean on_expose(GtkWidget *widget, GdkEvent *event, gpointer user_data) { g_print("%s\n", __FUNCTION__); GdkWindow* gdk_window = gtk_widget_get_window(widget); GdkRectangle rect = {50, 50, 100, 100}; GdkRegion* region = gdk_region_rectangle(&rect); gdk_window_input_shape_combine_region(gdk_window, region, 0,0); gdk_region_destroy(region); return FALSE; } int main(int argc, char *argv[]) { gtk_init(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(G_OBJECT(window), "expose-event", G_CALLBACK(on_expose), NULL); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 300, 300); gtk_window_set_title(GTK_WINDOW(window), "Input transparent window"); gtk_window_set_decorated(GTK_WINDOW(window), FALSE); gtk_widget_realize(window); gtk_widget_show_all(window); gdk_threads_add_timeout(3000, (GSourceFunc) iconify_window, window); gtk_main(); return 0; }