aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-19 15:25:28 +0200
committeruser <user@clank>2026-08-19 15:25:28 +0200
commit49ac13f70aa3a9224e90699fe68d8463909239db (patch)
tree303c3cee9492e23de6a1f0afc7b2feffeba5c6aa /include
parentslosh: the logo flies into place -- a particle engine, statelessly (diff)
downloadslosh-49ac13f70aa3a9224e90699fe68d8463909239db.tar.gz
slosh-49ac13f70aa3a9224e90699fe68d8463909239db.tar.xz
slosh-49ac13f70aa3a9224e90699fe68d8463909239db.zip
slosh: layout files are *.layout, not *.layout.kdl
The old name argued that the extension should say how to read the file. The argument lost to a collision: zellij speaks the same KDL syntax under that same extension with a different schema, and to anyone arriving from there .kdl said *whose* file it is -- naming the wrong owner is worse than not naming the parser. So a layout is x.layout, a project's is slosh.layout, the name says what the file is and --check says how it was read. (It is still KDL underneath; point your editor's highlighting at *.layout.) Nobody's checked-in workspace vanishes on upgrade: the project scan still finds slosh.layout.kdl, never writes it, and where both spellings exist the new one wins, because two files disagreeing needs one answer. The unparseable-file heuristic in --check learned the new suffix -- it matched '.layout.' with a trailing dot, which the new name no longer has. The webdemo overlay moves with it (demo.layout), rebuilt and boot-checked.
Diffstat (limited to 'include')
-rw-r--r--include/app.h2
-rw-r--r--include/config.h2
-rw-r--r--include/project.h12
3 files changed, 11 insertions, 5 deletions
diff --git a/include/app.h b/include/app.h
index 33fcbea..d422995 100644
--- a/include/app.h
+++ b/include/app.h
@@ -181,7 +181,7 @@ typedef struct {
} app_workspace_save_t;
/* Write one tab out as a project's layout: the same dump `dump-layout` answers
- * with, relative to the project, into `slosh.layout.kdl` beside it. `tab` 0 is
+ * with, relative to the project, into `slosh.layout` beside it. `tab` 0 is
* the current one; `path` names the project for a tab that is not yet a
* workspace (and saving adopts it, which is the whole of onboarding one).
* Refused without `force` when the project already has a layout: that file is
diff --git a/include/config.h b/include/config.h
index 5aefd01..969136a 100644
--- a/include/config.h
+++ b/include/config.h
@@ -390,7 +390,7 @@ typedef struct {
char *shader_dir;
/* Where projects live: `project_roots "~/dev" "~/work" depth=2`. A project is
- * a subdirectory of one of these with a `slosh.layout.kdl` in it -- or a
+ * a subdirectory of one of these with a `slosh.layout` in it -- or a
* `.git`, which gets `project_layout` instead. Empty means the feature is
* dormant and costs nothing.
*
diff --git a/include/project.h b/include/project.h
index 6bf3021..4cf3bf6 100644
--- a/include/project.h
+++ b/include/project.h
@@ -18,9 +18,15 @@
#include <stdint.h>
/* The file a project uses to say what it needs. One name, so there is no
- * precedence question: a layout file by D2's rule, checked by `--check`, and
- * highlighted by anything that knows KDL. */
-#define PROJECT_LAYOUT_FILE "slosh.layout.kdl"
+ * precedence question. `.layout` rather than `.kdl`: zellij speaks the same
+ * syntax under the same extension with a different schema, and an extension
+ * that names the wrong owner is worse than one that does not name the
+ * parser -- the file says what it is, `--check` says how it was read. */
+#define PROJECT_LAYOUT_FILE "slosh.layout"
+/* The spelling this replaced. Still *found* by the project scan, so nobody's
+ * checked-in workspace vanishes on upgrade; everything slosh writes is the
+ * new name, and the new name wins where both exist. */
+#define PROJECT_LAYOUT_FILE_OLD "slosh.layout.kdl"
/* How many projects one session will look at. A picker is not a filesystem
* browser: past this many the answer to "which project" is a search, not a