I love seeing how wpmctl is shaping up.
As I've been relying on it for managing Komorebi, Yasb, whkd, Altsnap, and Masir, I've implemented the following 'desktop.toml':
[Unit]
Name = "desktop"
Description = "Everything I need to work on Windows"
Requires = [
"yasb",
"whkd",
"komorebi",
"altsnap",
"masir",
]
[Service]
Kind = "Simple"
Autostart = true
Restart = "Never"
[Service.ExecStart]
Executable = "cmd.exe"
Arguments = ["/c", "pause"]
With this configuration, I would intuitively expect "wpmctl restart -d desktop" would fully stop/start all of the dependent services, but it does not. It WILL start them if they are stopped/failed, though.
2025-06-02T15:56:59.868268Z INFO wpmd: received socket message: RestartWithDependents(["desktop"])
2025-06-02T15:56:59.868369Z INFO wpmd: successfully queued socket message
2025-06-02T15:56:59.868442Z INFO wpm::process_manager: desktop: stopping unit
2025-06-02T15:56:59.868594Z INFO wpm::process_manager: desktop: sending kill signal to 42484
2025-06-02T15:56:59.870610Z INFO wpm::process_manager: desktop: process 42484 successfully terminated
2025-06-02T15:56:59.870707Z INFO wpm::process_manager: desktop: requires yasb
2025-06-02T15:56:59.870821Z INFO wpm::process_manager: desktop: requires whkd
2025-06-02T15:56:59.870908Z INFO wpm::process_manager: desktop: requires komorebi
2025-06-02T15:56:59.870985Z INFO wpm::process_manager: desktop: requires altsnap
2025-06-02T15:56:59.871108Z INFO wpm::process_manager: desktop: requires masir
2025-06-02T15:56:59.871177Z INFO wpm::unit: desktop: starting unit
2025-06-02T15:56:59.873365Z INFO wpm::unit: desktop: running pid 43408 liveness healthcheck (1s)
2025-06-02T15:57:00.928557Z INFO wpm::unit: desktop: passed healthcheck
Example if a service is not running (masir):
2025-06-02T15:57:48.311490Z INFO wpmd: received socket message: RestartWithDependents(["desktop"])
2025-06-02T15:57:48.311588Z INFO wpmd: successfully queued socket message
2025-06-02T15:57:48.311654Z INFO wpm::process_manager: desktop: stopping unit
2025-06-02T15:57:48.311722Z INFO wpm::process_manager: desktop: sending kill signal to 43408
2025-06-02T15:57:48.313694Z INFO wpm::process_manager: desktop: process 43408 successfully terminated
2025-06-02T15:57:48.313784Z INFO wpm::process_manager: desktop: requires yasb
2025-06-02T15:57:48.313918Z INFO wpm::process_manager: desktop: requires whkd
2025-06-02T15:57:48.313998Z INFO wpm::process_manager: desktop: requires komorebi
2025-06-02T15:57:48.314070Z INFO wpm::process_manager: desktop: requires altsnap
2025-06-02T15:57:48.314128Z INFO wpm::process_manager: desktop: requires masir
2025-06-02T15:57:48.314190Z INFO wpm::unit: masir: starting unit
2025-06-02T15:57:48.317518Z INFO wpm::unit: masir: running pid 53036 liveness healthcheck (1s)
2025-06-02T15:57:49.365251Z INFO wpm::unit: masir: passed healthcheck
2025-06-02T15:57:49.365356Z INFO wpm::unit: desktop: starting unit
2025-06-02T15:57:49.368648Z INFO wpm::unit: desktop: running pid 34664 liveness healthcheck (1s)
2025-06-02T15:57:50.418196Z INFO wpm::unit: desktop: passed healthcheck
In a similar vein, "stop --with-dependents" feels like it would with go along with this command/pattern nicely, and behave in the same way.
Thoughts?
I love seeing how wpmctl is shaping up.
As I've been relying on it for managing Komorebi, Yasb, whkd, Altsnap, and Masir, I've implemented the following 'desktop.toml':
With this configuration, I would intuitively expect "wpmctl restart -d desktop" would fully stop/start all of the dependent services, but it does not. It WILL start them if they are stopped/failed, though.
Example if a service is not running (masir):
In a similar vein, "stop --with-dependents" feels like it would with go along with this command/pattern nicely, and behave in the same way.
Thoughts?