summaryrefslogtreecommitdiff
path: root/src/astal-river.c
diff options
context:
space:
mode:
authorkotontrion <[email protected]>2024-06-09 20:27:00 +0200
committerkotontrion <[email protected]>2024-06-09 20:27:00 +0200
commit29b1060c6fc2614dcbfe6edc177944a31f4decd6 (patch)
tree5e0b0305206f6499edeffe5152267e4ad96b88b0 /src/astal-river.c
initial commit
Diffstat (limited to 'src/astal-river.c')
-rw-r--r--src/astal-river.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/astal-river.c b/src/astal-river.c
new file mode 100644
index 0000000..6596eb4
--- /dev/null
+++ b/src/astal-river.c
@@ -0,0 +1,50 @@
+#include "river.h"
+#include "gio/gio.h"
+#include <getopt.h>
+#include <json-glib/json-glib.h>
+
+GMainLoop *loop;
+
+void print_json(AstalRiverRiver *river) {
+ JsonNode *json = json_gobject_serialize (G_OBJECT(river));
+
+ gchar* json_str = json_to_string (json, FALSE);
+ g_print("%s\n", json_str);
+ g_free(json);
+}
+
+int main(int argc, char **argv) {
+
+ gboolean daemon = FALSE;
+
+ int opt;
+ const char *optstring = "d";
+
+ static struct option long_options[] = {
+ {"daemon", no_argument, NULL, 'd'},
+ {NULL, 0, NULL, 0}
+ };
+
+ while ((opt = getopt_long(argc, argv, optstring, long_options, NULL)) != -1) {
+ switch (opt) {
+ case 'd':
+ daemon = TRUE;
+ break;
+ default:
+ g_print("Usage: %s [-d]\n", argv[0]);
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ AstalRiverRiver *river = astal_river_river_new ();
+ if(daemon) {
+ loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect(river, "changed", G_CALLBACK(print_json), NULL);
+ g_main_loop_run (loop);
+ }
+ else {
+ print_json (river);
+ g_object_unref(river);
+ }
+
+}