aboutsummaryrefslogtreecommitdiffstats
path: root/include/server.h
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-19 13:46:57 +0200
committeruser <user@clank>2026-08-19 13:46:57 +0200
commit42b3c10995eb67778d9dd3aa2fd80624896acd5f (patch)
tree751bcb8604967dc8687cf23fbeb1033aa26ca427 /include/server.h
parentslosh: a website that is a page, not a mock session (diff)
downloadslosh-42b3c10995eb67778d9dd3aa2fd80624896acd5f.tar.gz
slosh-42b3c10995eb67778d9dd3aa2fd80624896acd5f.tar.xz
slosh-42b3c10995eb67778d9dd3aa2fd80624896acd5f.zip
slosh: defaults most people can live in, said by shaders
The out-of-the-box look, rethought as one piece: - the compiled-in palette calms down: muted blue #7aa2f7 on the same neutral darks, with the colours that mean something kept semantic -- amber bell, red-orange dead. sl0p stays one include away as the house style, and contrib/themes/default.kdl is the starting point written down (theme-tour shows it). - derived state defaults now actually follow the theme: the scrolled wash is rebuilt from scroll_bg after the theme block (it used to bake the compiled accent), and declaring a state -- in any file of an include chain -- still wins. The dump writes derived states as comments so C-a e cannot pin what is meant to keep following. - a bell you can see: the frame blinks three times in theme's bell colour then breathes until answered, and a soft diagonal shimmer -- the bell colour halved towards default_fg, width breathing on a sine -- crosses the body for the same 900ms. bell_indicator false silences all of it; states { bell { } } replaces it like any state. since carries the clock dependency, so an idle session pays nothing. - scrollback says where it continues: while scrolled, the viewport's top and bottom rows melt towards an edge with content past it and turn solid at the buffer's end. New expression variables above/below (lines hidden past each edge, own dependency bit, cached per scroll position), carried in shade_ctx_t -- SLOSH_SHADER_ABI 3 -> 4. - expressions survive the dump: a program keeps its source and cb_chain writes it back, so amount="(y % 2) * 40" no longer dumps as a number. - headers move to include/, -Iinclude everywhere; the plugin Makefile's SLOSH var becomes SLOSH_DIR because slosh exports SLOSH=1 into every pane it runs, and building from inside a session read that as a path. - comment drift culled where features outran the prose, and the derivation boilerplate folded into derived_pass()/ctx_scroll().
Diffstat (limited to 'include/server.h')
-rw-r--r--include/server.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/include/server.h b/include/server.h
new file mode 100644
index 0000000..b5d114a
--- /dev/null
+++ b/include/server.h
@@ -0,0 +1,28 @@
+/* Server and client entry points. See proto.h for the wire. */
+#ifndef SLOSH_SERVER_H
+#define SLOSH_SERVER_H
+
+#include <stdbool.h>
+#include <stdint.h>
+
+#include "slosh.h"
+
+/* Run the session in this process (the daemonised half). `watch` re-reads the
+ * config when the file changes; see server.c for why that is a flag and not a
+ * config setting. */
+/* What panes are told about the session around them: its name, or NULL for a
+ * mode that has no socket, which must clear it rather than inherit a lie. */
+void session_env(const char *name);
+
+int server_run(const char *name, const char *const argv[], uint16_t cols,
+ uint16_t rows, const char *layout, bool watch);
+/* Fork a server, then wait for its socket to answer. Returns a connected fd. */
+int server_spawn(const char *name, const char *const argv[], uint16_t cols,
+ uint16_t rows, const char *layout, bool watch);
+/* Connect to an existing session, or -1. */
+int server_connect(const char *name);
+
+int client_run(int fd);
+int client_control(int fd, const char *line);
+
+#endif /* SLOSH_SERVER_H */