i3, screen-lock: the session's output to the journal, and the colour locker removed before i3lock is checked
lemurs leaves the session a stdout nobody reads, so a program writing to it dies of EPIPE. i3lock-color provides i3lock, so with it still installed the host saw i3lock as present, skipped the install and then removed the only locker; removing it first lets the same apply install i3lock.
This commit is contained in:
@@ -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/<NN>-<module>.conf`. The
|
||||
`include` is the last line of the main file, so every variable set there (`$mod`, `$ws1`…`$ws10`) is
|
||||
|
||||
@@ -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{}
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user