AtlatestRepositorysigil-wm
1
/* SPDX-License-Identifier: BSD-3-Clause */2
#include <gtk/gtk.h>3
#include <stdio.h>5
static gboolean configured(GtkWidget *widget, GdkEventConfigure *event, gpointer data) {6
(void)widget;7
(void)data;8
printf("CSD_CONFIGURE=%d,%d,%d,%d\n", event->x, event->y, event->width, event->height);9
fflush(stdout);10
return FALSE;11
}13
static gboolean control(GIOChannel *channel, GIOCondition condition, gpointer data) {14
GtkWidget *window = data;15
if (condition & G_IO_HUP) return FALSE;16
gchar *line = NULL;17
if (g_io_channel_read_line(channel, &line, NULL, NULL, NULL) == G_IO_STATUS_NORMAL) {18
if (line[0] == 's') gtk_window_resize(GTK_WINDOW(window), 360, 220);19
if (line[0] == 'q') gtk_widget_destroy(window);20
printf("CSD_COMMAND=%c\n", line[0]);21
fflush(stdout);22
}23
g_free(line);24
return TRUE;25
}27
int main(int argc, char **argv) {28
gtk_init(&argc, &argv);29
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);30
GtkWidget *header = gtk_header_bar_new();31
gtk_header_bar_set_title(GTK_HEADER_BAR(header), "CSD probe");32
gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header), TRUE);33
gtk_window_set_title(GTK_WINDOW(window), "CSD probe");34
gtk_window_set_default_size(GTK_WINDOW(window), 480, 320);35
gtk_window_set_resizable(GTK_WINDOW(window), TRUE);36
gtk_window_set_titlebar(GTK_WINDOW(window), header);37
gtk_container_add(GTK_CONTAINER(window), gtk_label_new("Resize each edge"));38
g_signal_connect(window, "configure-event", G_CALLBACK(configured), NULL);39
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);40
GIOChannel *input = g_io_channel_unix_new(0);41
g_io_add_watch(input, G_IO_IN | G_IO_HUP, control, window);42
g_io_channel_unref(input);43
gtk_widget_show_all(window);44
puts("CSD_READY");45
fflush(stdout);46
gtk_main();47
return 0;48
}