An fzf terminal UI for Linux systemd and macOS launchd. Cross-platform fork of joehillen/sysz.
Successor: Sovi is the new Go + Bubble Tea rewrite with no third-party runtime CLI dependency. sysz 2.1.0 remains available for existing users.
VERSION: 2.1.0
- One UI for system and user services on Linux and macOS.
- Capability-aware actions: unsupported launchd equivalents stay hidden.
- Explicit launchd domains:
gui/$UIDandsystem. - Standard plist inventory from LaunchAgents and LaunchDaemons directories.
- Apple jobs hidden by default and always read-only.
sudoonly for mutating system-scope actions.- Recent/following logs from plist paths, with Unified Logging fallback.
- Interactive return navigation; completed actions reopen the command menu.
- State filtering, multi-selection, previews, and command aliases.
- fzf >= 0.27.1
- Bash >= 4.3
- Linux: systemd
- macOS: launchd and Homebrew Bash; Apple's
/bin/bash3.2 is unsupported
brew install NightWatcher314/formula/syszcurl -L https://github.com/NightWatcher314/sysz/releases/latest/download/sysz -o ~/.local/bin/sysz
chmod +x ~/.local/bin/syszgit clone https://github.com/NightWatcher314/sysz.git
cd sysz
sudo make installA cross-platform fzf terminal UI for systemd and macOS launchd.
Usage: sysz [OPTS...] [CMD] [-- ARGS...]
Only mutating system-scope commands invoke sudo.
OPTS:
-u, --user Only show user units or gui/$UID jobs
--sys, --system Only show system units or jobs
-s STATE, --state STATE Only show entries in STATE (repeatable)
--all Include Apple launchd jobs (read-only)
-V, --verbose Print commands before running them
-v, --version Print version
-h, --help Print this message
CMD:
start Start selected entries
stop Stop entries; launchd uses bootout (unload)
r, re, restart Restart selected entries
s, stat, status Show status
en, enable Enable entries
d, dis, disable Disable entries
j, journal Show recent logs
f, follow Follow logs
c, cat Show unit/plist source
ed, edit Edit systemd unit override
reload Reload systemd unit
mask, unmask Mask/unmask systemd unit
show Show raw backend status
Available interactive commands depend on backend capabilities.
ARGS are passed to systemctl. launchd rejects unsupported extra args.
Interactive navigation:
return Return from the command menu to the unit list
After an action, press Enter to reopen the command menu.
Keybindings:
TAB Toggle selection.
ctrl-v Show unit/job definition in preview.
ctrl-s Select states to match. Selection is reset.
ctrl-p History previous.
ctrl-n History next.
? Show keybindings.
ESC Return to units from commands; exit from units.
History:
$XDG_CACHE_HOME/sysz/history
Override with SYSZ_HISTORY.
States:
systemd: values reported by systemctl --state=help
launchd: running, loaded, not-loaded, disabled
macOS scope:
user gui/$UID; ~/Library/LaunchAgents and /Library/LaunchAgents
system /Library/LaunchDaemons
Apple jobs under /System/Library and com.apple.* are hidden by default and
always read-only. launchd has no exact daemon-reload, mask, or journalctl
equivalent.
sysz intentionally does not pretend launchd is systemd:
stopuseslaunchctl bootout, unloading the job.restartuseskickstart -k.enableanddisablechange launchd overrides;--nowalso starts or unloads.- There is no launchd equivalent for daemon-reload, mask/unmask, or per-unit journal.
- A loaded job without a PID may be healthy and waiting for demand.
- Background Items approval and Full Disk Access remain controlled by System Settings.
launchctl printis human-readable, not a stable parsing API. Parsing is tolerant; raw output remains the status fallback.
Default inventory:
~/Library/LaunchAgents
/Library/LaunchAgents
/Library/LaunchDaemons
--all also shows /System/Library jobs, but mutations remain blocked.
make lint
make test
# macOS only; creates and removes one temporary gui/$UID LaunchAgent
bash tests/macos-launchd-integration.shOriginal sysz by Joe Hillenbrand. Inspired by fuzzy-sys.