- Python 98.9%
- Shell 0.6%
- Meson 0.5%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| data | ||
| packaging | ||
| po | ||
| screenshots | ||
| src | ||
| tests | ||
| tools | ||
| .gitignore | ||
| LICENSE | ||
| meson.build | ||
| meson.options | ||
| pyproject.toml | ||
| README.md | ||
| vigil.sh | ||
BitCrafts Vigil
Spot every file change, find every duplicate, catch every tampered byte.
GTK4 + libadwaita desktop frontend for bit-crafts. Vigil brings three offline file tools together in one window:
- Hashing — snapshot a folder, then verify later exactly what was added, removed, or modified against that baseline, file by file.
- Duplicate detection — find duplicate files across your folders and see how much space they waste.
- Integrity verification — detect tampering and corruption by checking files against a saved manifest, down to content, metadata, and permissions.
No daemon, no cloud, no telemetry.
Features
- Three tools, one window — hashing, duplicate detection, and file integrity verification, each with its own run history.
- Friendly algorithm picker — choose by intent (Secure, Standard,
Fast) instead of jargon, from
blake3,sha256,xxh3,xxh128. - Automatic threading — Vigil detects whether a folder lives on an SSD, hard disk, or network share and picks the fastest read mode, with a manual override per target.
- Track folders over time as named targets, with a sidebar listing everything you've registered.
- Queue runs through a job queue page that surfaces in-flight, pending, and completed runs.
- Browse per-folder history of every run, with relative timestamps and per-run duration + file count.
- Compare any two snapshots side-by-side — added / removed / modified files in a single pane, with hash before → after.
- Inspect duplicate groups and integrity changes with severity badges (added / removed / content / metadata) and reveal-in-files.
- Export the findings as a self-contained ZIP bundle (manifest + diff NDJSON + per-target preferences).
- English + French shipped. Drop-in
de.poores.pofor new locales.
Screenshots
| Watch a folder | History view |
|---|---|
![]() |
![]() |
| Pick a folder, choose the algorithm, snapshot. | Every snapshot you took, with timestamps and run duration. |
| Verify diff detail |
|---|
![]() |
| Exact file-by-file diff: added (2), removed (4), modified (1) with the hash before → after. |
| Tracked folders | New watch |
|---|---|
![]() |
![]() |
| Sidebar of every folder Vigil is tracking. | Register a new folder as a tracked watch. |
| Runs view | Job queue |
|---|---|
![]() |
![]() |
| Every run executed for a given watch. | Pending, in-flight, and completed runs. |
| Per-watch history |
|---|
![]() |
| Full audit trail per tracked folder. |
Install
Download bitcrafts-vigil_<version>_amd64.deb from the
GitHub Releases
page (x86-v3 for any Haswell-or-later CPU, x86-v4 only if your CPU
supports AVX-512), then:
sudo apt install ./bitcrafts-vigil_<version>_amd64.deb
Releases are GPG-signed; verify via SHA256SUMS.asc and
GPG-KEY-bitcrafts.asc shipped alongside each release.
Or build from source per the root CONTRIBUTING.md.
The .deb installs Vigil under /usr/bin/vigil and its Python
modules under /usr/lib/python3/dist-packages/vigil/. It declares
bitcrafts-tools as a dependency, so apt pulls in the matching
CLI package automatically (which provides /usr/bin/bchash,
/usr/bin/bcduplicate, /usr/bin/bcintegrity, statically linked —
no runtime need for liburing, libblake3, libxxhash). Direct
filesystem access (no sandbox) so io_uring and the multi-threaded
worker pool run at full speed.
Override the binary lookup with BITCRAFTS_TOOLS_DIR=/custom/bin vigil for development or out-of-tree builds.
Architecture
applications/vigil/
├── src/vigil/
│ ├── backend/ # SQLite, XDG paths, argv contracts, parsers
│ ├── ui/ # GTK4 widgets, Blueprint templates, runners
│ ├── resources/ # vigil.gresource.xml + .blp source
│ └── _i18n.py # gettext binding (domain: bitcrafts-vigil)
├── data/ # AppStream metainfo, .desktop, hicolor icons
├── packaging/
│ └── debian/ # control.in, postinst/postrm/prerm, copyright
└── po/ # bitcrafts-vigil.pot + fr.po
Vigil never links against the C libraries directly. It launches bchash
via Gio.Subprocess with explicit argv and parses the JSONL output.
This is a deliberate isolation: the GUI never crashes if a C tool
segfaults, and the same backend code can be reused by any other
frontend.
Runtime data
User state lives at $XDG_DATA_HOME/bitcrafts-vigil/
(default ~/.local/share/bitcrafts-vigil/). The .deb install reads
and writes the real path directly — no sandbox redirection.
The CLI tools come from the bitcrafts-tools package and live at
/usr/bin/. Override the lookup with BITCRAFTS_TOOLS_DIR=/custom/bin
for development or out-of-tree builds.
License
GPL-3.0-or-later. Vigil is part of the bit-crafts toolkit.








