diff --git a/modules/i3/README.md b/modules/i3/README.md index ec40a56..489abef 100644 --- a/modules/i3/README.md +++ b/modules/i3/README.md @@ -19,7 +19,7 @@ The window manager as a module (novox/hq ADR 0208, research 026, to-be 42 phase | `~/.config/i3/` | owned directory | its contents other than `config` are found and kept | | `~/.config/i3/config.d/` | owned directory | other modules' drop-ins, and yours | | `~/.config/i3/config` | owned (the found file kept once) | the main configuration, from [`config/config`](config/config) | -| `/etc/lemurs/wms/i3` | owned | the login manager's session entry: `exec /bin/sh "$HOME/.xinitrc"` | +| `/etc/lemurs/wms/i3` | owned | the login manager's session entry: `exec systemd-cat -t x-session /bin/sh "$HOME/.xinitrc"`, the session's output in the journal (`journalctl -t x-session`) because the login manager's pipe has no reader | **Drop-ins.** Another module adds to i3 with its own `~/.config/i3/config.d/-.conf`. The `include` is the last line of the main file, so every variable set there (`$mod`, `$ws1`…`$ws10`) is diff --git a/modules/i3/cmd/i3-tools/manifest_test.go b/modules/i3/cmd/i3-tools/manifest_test.go index ec6e4da..2df3ab2 100644 --- a/modules/i3/cmd/i3-tools/manifest_test.go +++ b/modules/i3/cmd/i3-tools/manifest_test.go @@ -151,7 +151,7 @@ func TestTheLoginManagersEntryRunsTheSessionsStart(t *testing.T) { if r["path"] != "/etc/lemurs/wms/i3" || r["mode"] != "0755" { t.Fatalf("%v", r) } - if !strings.Contains(r["content"].(string), `exec /bin/sh "$HOME/.xinitrc"`) { + if !strings.Contains(r["content"].(string), `exec systemd-cat -t x-session /bin/sh "$HOME/.xinitrc"`) { t.Fatal("the entry runs the session's start, never i3 bare") } pkgs := map[string]bool{} diff --git a/modules/i3/module.json b/modules/i3/module.json index 63a9d3e..b44fa3f 100644 --- a/modules/i3/module.json +++ b/modules/i3/module.json @@ -81,7 +81,7 @@ "type": "file", "path": "/etc/lemurs/wms/i3", "mode": "0755", - "content": "#!/bin/sh\n# The i3 session (module i3, novox/hq ADR 0208), offered by the login manager. It runs the session's\n# start, ~/.xinitrc, which the display server's module writes and which ends by starting i3.\n# Replaced at every push.\nexec /bin/sh \"$HOME/.xinitrc\"\n" + "content": "#!/bin/sh\n# The i3 session (module i3, novox/hq ADR 0208), offered by the login manager. It runs the session's\n# start, ~/.xinitrc, which the display server's module writes and which ends by starting i3.\n# Replaced at every push.\n#\n# The login manager hands the session a stdout and stderr whose reading end nobody holds, so a\n# program that writes to them dies of EPIPE (an Electron tray app shows it as an error dialog).\n# The session's output goes to the journal instead, under `journalctl -t x-session`.\nexec systemd-cat -t x-session /bin/sh \"$HOME/.xinitrc\"\n" } ], "build": { diff --git a/modules/screen-lock/module.json b/modules/screen-lock/module.json index 834b301..d8ca419 100644 --- a/modules/screen-lock/module.json +++ b/modules/screen-lock/module.json @@ -29,16 +29,6 @@ } ], "resources": [ - { - "id": "watcher", - "type": "package", - "package": "xss-lock" - }, - { - "id": "locker", - "type": "package", - "package": "i3lock" - }, { "id": "colour-locker", "type": "package", @@ -51,6 +41,16 @@ "package": "xscreensaver", "absent": true }, + { + "id": "watcher", + "type": "package", + "package": "xss-lock" + }, + { + "id": "locker", + "type": "package", + "package": "i3lock" + }, { "id": "wrapper", "type": "file",