This project is in Pre-Release, and is subject to changes or instability.
changed is a lightweight system tuning changelog for systemd-based Linux systems.
It keeps a readable history of config changes while a dedicated daemon is running, with separate user and system scopes, line-numbered diffs for tracked files, and systemd service integration for long-running use.
It helps to answer:
- What did I change over time?
- Which changes mattered for CPU, GPU, boot, services, shell, or build tuning?
- What do I need to carry forward to a new install or new hardware?
Who it's for:
- System tuners
- Desktop tinkerers
- People who frequently adjust shell, boot, service, CPU, GPU, or build config
- Anyone who wants a readable changelog of config edits
It is not a backup, rollback, recovery, or snapshot tool.
The main feature set is in place today:
- user and system scoped tracking
- event-driven
changedddaemon - readable journal output with line-numbered changed-only diffs
changed setupfor first-run preset seedingchanged statusfor operational diagnosticschanged servicefor local/dev unit management- diff and redaction controls per tracked path
Still planned:
- package event tracking
- service-state event tracking
- CLI config management and setup refinement
Packaged installs already ship both systemd unit files. After installing the package, a normal first run looks like this:
sudo changed setup
systemctl --user enable --now changedd.service
sudo systemctl enable --now changedd.service
changed status -U
sudo changed status -SIf you only want private per-user tracking, start only the user service:
sudo changed setup
systemctl --user enable --now changedd.service
changed status
changed listThe default read behavior is user-scoped:
changed listreads current-user historychanged statusreads current-user diagnostics-SUis the explicit merged read across system plus current-user scope
changed list
changed list -U -a
changed list -P
sudo changed list -S -a
changed status -P
changed track -U ~/.config/fish/config.fish
sudo changed track -S /etc/makepkg.conf
changed diff -U enable ~/.config/fish/config.fish
changed redact -U enable ~/.config/fish/config.fish
changed history clear -U
sudo changed history clear -SUFor packaged installs, enable services with systemctl directly. For local or
non-packaged installs, changed service install can generate scoped unit files
that point at the current binary location.
With two binaries in the workspace, local cargo runs should be explicit:
cargo build
cargo run --bin changed -- --help
cargo run --bin changedd -- --helpTypical local flow:
cargo run --bin changed -- init -U
cargo run --bin changed -- init -S
sudo cargo run --bin changed -- setup
cargo run --bin changedd -- --user --once
sudo cargo run --bin changedd -- --system --once- Getting started
- Operations and behavior
- Default tracked paths
- Scope model
- Category definitions
- Packaging workflow
- CLI help reference
- Man page source
- Planned improvements
- Pre-release checklist
This repo includes a local-source PKGBUILD plus packaged systemd units under:
Packaged upgrades do not restart either scope automatically. Restart the scope you use explicitly after reinstalling or upgrading:
systemctl --user restart changedd.service
sudo systemctl restart changedd.service