<div align="center">

# SysD Manager
[](https://raw.githubusercontent.com/plrigaux/sysd-manager/refs/heads/main/LICENSE)
[](https://github.com/sponsors/plrigaux)
[](https://flathub.org/apps/io.github.plrigaux.sysd-manager)
A user-friendly GUI to manage systemd units
</div>
## π Description
- Change the enablement and running status of systemd units
- View and modify unit files with syntax highlighting
- Check journal logs with syntax highlighting
- Explore unit dependencies visually
- And much more!
> **Disclaimer:** This application is intended for users with less experience with systemd rather than professional system administrators. If you consider yourself an administrator, please refer to `systemctl` and `journalctl` documentation.
## β¨ Features
| Unit file browser with search and filtering | β
|
| Enable or disable a unit | β
|
| Enable a unit in runtime | β
|
| Activate or deactivate a unit | β
|
| View and modify unit file | β
|
| View and navigate unit's dependencies | β
|
| Unit file syntax highlighting | β
|
| Journal file syntax highlighting | β
|
| List of all running units (systemd-analyze blame) | β
|
| Dark and Light style switching | β
|
| Select a unit at program opening via CLI | β
|
| Clean unit like `systemctl clean` | β
|
| Freeze & Thaw unit like `systemctl freeze` and `systemctl thaw` | β
|
| Multi-language support | β
|
| Real-time journal events update | β
|
| Retrieve list of boot IDs | β
|
| Ability to watch _systemd_ signals | β
|
*Need a feature? Contact the author or contribute to the project! If you're stuck, take a look at `systemctl`.*
## πΈ Screenshots
<div align="center">
### Unit Info (Dark)

### Unit Info (Light)

### Unit Dependencies

### Unit Files

### Unit Journal

</div>
## π§ Installation
### Flathub
<a href="https://flathub.org/apps/io.github.plrigaux.sysd-manager"><img width="200" alt="Download on Flathub" src="https://flathub.org/api/badge?svg"/></a>
### Arch Linux
<a href="https://aur.archlinux.org/packages/sysd-manager"><img width="200" alt="Download on Flathub" src="https://aur.archlinux.org/static/css/archnavbar/aurlogo.png"/></a>
```bash
yay -S sysd-manager
```
### AppImage
<a href="https://github.com/plrigaux/sysd-manager/releases/latest"><img width="100" alt="Download latest Appimage release" src="https://docs.appimage.org/_images/appimage.svg"/></a>
### Build from Source
1. Install prerequisites:
- [Rust](https://www.rust-lang.org/tools/install)
- GTK 4 and build essentials ([how-to](https://gtk-rs.org/gtk4-rs/stable/latest/book/installation_linux.html))
- Libadwaita ([how-to](https://gtk-rs.org/gtk4-rs/stable/latest/book/libadwaita.html))
- Systemd development library (`libsystemd-dev`)
- GtkSourceView 5 development library
2. Clone and build:
```bash
git clone https://github.com/plrigaux/sysd-manager
cd sysd-manager/scripts
sh install.sh
```
3. Run:
```bash
sysd-manager
```
*For a clean removal, execute:* `sh uninstall.sh`
## π§ͺ Testing
You can safely test SysD Manager using **tiny_daemon**, a simple web server service included with the project:
```bash
cd packaging
python install_tiny
```
## π£οΈ Roadmap
Planned features:
- Filter units on more properties
- Save filters
- Display more properties in the unit browser
- Add/Remove columns
- Ajust cell viewer according to property types (time)
- Functionality edit gereated file or original
- Context menu on unit browser row
- Always administrator mode
- Continuous UX improvements
## π Changelog
All notable changes are documented in the [CHANGELOG](CHANGELOG.md).
## π€ Contributing
Interested in contributing? Contact the project maintainer on [GitHub](https://github.com/plrigaux/sysd-manager).
## π Internationalization
__SysD Manager__ can be displayed in different languages as long a translation has been provided.
<div align="center">
<a href="https://hosted.weblate.org/engage/sysd-manager/" target="_blank">
<img src="https://hosted.weblate.org/widget/sysd-manager/translation/multi-auto.svg" alt="Status da traduΓ§Γ£o" style="height:300px;" >
</a>
</div>
### Translators
Translations are generously hosted by [Weblate](https://weblate.org).
Please help translate __Sysd Manager__ into more languages through the [__Sysd Manager__ Hosted Weblate](https://hosted.weblate.org/engage/sysd-manager/).
### Developpers and Translator
Some tools have been created to help with translation. The following shows the most important ones to help translators
#### Generate missing po files or update them
After changes in the source code it's needed to update a po languages file. The following command helps you to perform that.
```
cargo run -p transtools -- po -lang <LANG>
```
_Also useful for adding a new translated language_
#### Extract transalation texts
To extract translation texts form source code and generate a Portable Object Template (pot) file. This is needed __only__ after code changes.
```
cargo run -p transtools -- extract -lang <LANG>
```
#### Notes
- To add a new translated language, first add the new language code, respecting ```ll``` or ```ll_LL``` format, in the ```./po/LINGUAS``` files.
- To test any tanslated languages, just set the envroment variable like this: ```export LANGUAGE=<language code>```
## π‘ Credits
This project is inspired by the work of Guillaume Gomez: https://github.com/GuillaumeGomez/systemd-manager/