A rofi-powered systemd service manager for Linux.
- Lists all systemd services
- Color-coded status indicators (active, failed, inactive)
- Context-aware action menu based on service state
- Supports: Start, Stop, Restart, Reload, Enable, Disable, Status
- Privileged operations via polkit (pkexec)
- Linux with systemd
- Go 1.25 or later
- rofi
- polkit
# Ubuntu/Debian
sudo apt install golang-go rofi polkitd-pkla
# Arch Linux
sudo pacman -S go rofi polkit# Download latest release
wget https://github.com/natrium404/systofi/releases/latest/download/systofi-linux-amd64
chmod +x systofi-linux-amd64
sudo mv systofi-linux-amd64 /usr/local/bin/systofigo install github.com/natrium404/systofi@latestOr clone and build:
git clone https://github.com/natrium404/systofi.git
cd systofi
go build -o systofi .Run the binary:
systofiBind to a key (Niri WM example):
MOD+S hotkey-overlay-title="System Services" { spawn-sh "systofi"; }Systofi uses the following environment variables:
| Variable | Description | Default |
|---|---|---|
SYSTOFI_ROFI_THEME |
Path to rofi theme file | None (system default) |
Example:
export SYSTOFI_ROFI_THEME="$HOME/.config/rofi/main.rasi"
systofi- Launch: Run
systofifrom your terminal or bind it to a keyboard shortcut - Select Service: Use arrow keys to browse, type to filter, Enter to select
- Choose Action: Select the action you want to perform (Start, Stop, Restart, etc.)
- Confirm: For privileged actions, authenticate via polkit prompt if needed
| Icon | Meaning |
|---|---|
| ● | Active |
| ✗ | Failed |
| ○ | Inactive/Other |
Actions shown depend on the current state of the service:
- Active services: Stop, Restart/Reload, Enable, Disable, Status
- Failed services: Start, Restart, Enable, Disable, Status
- Inactive services: Start, Enable, Disable, Status
Systofi uses pkexec (via polkit) to execute privileged systemctl commands. You will be prompted for authentication when performing actions that require root privileges (Start, Stop, Restart, Enable, Disable).
Contributions are welcome:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Clone and setup:
git clone https://github.com/natrium404/systofi.git
cd systofi
go mod tidyBuild and test:
go build ./...
go test ./...Run dev version:
go run .This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2026 Natrium
