AtlatestRepositorysigil-wm

sigil-wm / tree / testcsd-client.c

1/* SPDX-License-Identifier: BSD-3-Clause */
2#include <gtk/gtk.h>
3#include <stdio.h>
4
5static 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;
13static 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;
27int 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;