summaryrefslogtreecommitdiffstats
path: root/xsettings/client-simple.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2001-03-19 15:44:42 +0000
committerOwen Taylor <otaylor@redhat.com>2001-03-19 15:44:42 +0000
commit2bee70df1f208df344c096cced4259eb44c2b3d2 (patch)
treed87432dacf1d27e11e1f6d9b2ec024b0f6002b14 /xsettings/client-simple.c
downloadxdg-specs-2bee70df1f208df344c096cced4259eb44c2b3d2.tar.xz
Initial revision
Diffstat (limited to 'xsettings/client-simple.c')
-rw-r--r--xsettings/client-simple.c123
1 files changed, 123 insertions, 0 deletions
diff --git a/xsettings/client-simple.c b/xsettings/client-simple.c
new file mode 100644
index 0000000..85dff05
--- /dev/null
+++ b/xsettings/client-simple.c
@@ -0,0 +1,123 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <X11/Xlib.h>
+
+#include "xsettings-client.h"
+
+static void
+usage (void)
+{
+ fprintf (stderr, "Usage: xsettings-client [-display DISPLAY]\n");
+ exit (1);
+}
+
+static void
+dump_setting (XSettingsSetting *setting)
+{
+ switch (setting->type)
+ {
+ case XSETTINGS_TYPE_INT:
+ printf (" INT: %d\n", setting->data.v_int);
+ break;
+ case XSETTINGS_TYPE_STRING:
+ printf (" STRING: %s\n", setting->data.v_string);
+ break;
+ case XSETTINGS_TYPE_COLOR:
+ printf (" COLOR: (%#4x, %#4x, %#4x, %#4x)\n",
+ setting->data.v_color.red,
+ setting->data.v_color.green,
+ setting->data.v_color.blue,
+ setting->data.v_color.alpha);
+ break;
+ }
+}
+
+static void
+notify_cb (const char *name,
+ XSettingsAction action,
+ XSettingsSetting *setting,
+ void *data)
+{
+ switch (action)
+ {
+ case XSETTINGS_ACTION_NEW:
+ printf ("%s: new\n", name);
+ dump_setting (setting);
+ break;
+ case XSETTINGS_ACTION_CHANGED:
+ printf ("%s: new\n", name);
+ dump_setting (setting);
+ break;
+ case XSETTINGS_ACTION_DELETED:
+ printf ("%s: deleted\n", name);
+ break;
+ }
+}
+
+static void
+watch_cb (Window window,
+ Bool is_start,
+ long mask,
+ void *cb_data)
+{
+ if (is_start)
+ printf ("Starting watch on %#lx with mask %#lx\n", window, mask);
+ else
+ printf ("Stopping watch on %#lx \n", window);
+}
+
+int
+main (int argc, char **argv)
+{
+ Display *display;
+ const char *display_str = NULL;
+ XSettingsClient *client;
+ int i;
+
+ for (i = 1; i < argc; i++)
+ {
+ if (strcmp (argv[i], "-display") == 0)
+ {
+ if (i + 1 == argc)
+ usage();
+ else
+ {
+ display_str = argv[i + 1];
+ i++;
+ }
+ }
+ else
+ usage ();
+ }
+
+ display = XOpenDisplay (display_str);
+ if (!display)
+ {
+ fprintf (stderr, "Cannot open display '%s'\n",
+ XDisplayName (display_str));
+ exit (1);
+ }
+
+ client = xsettings_client_new (display, DefaultScreen (display),
+ notify_cb, watch_cb, NULL);
+ if (!client)
+ {
+ fprintf (stderr, "Cannot create client\n");
+ exit (1);
+ }
+
+ while (1)
+ {
+ XEvent xev;
+
+ XNextEvent (display, &xev);
+
+ xsettings_client_process_event (client, &xev);
+ }
+
+ xsettings_client_destroy (client);
+ XCloseDisplay (display);
+
+ return 0;
+}