Skip to content

Reference: Dependencies

Exhaustive inventory of runtime, development, and system dependencies.

This page mirrors DEPENDENCIES.md, which is the authoritative source and also records the security justification of each entry. Exact versions are pinned by the committed Cargo.lock.


1. Runtime Dependencies

Package Version License Purpose
gtk4 0.10, feature v4_14 MIT GTK 4 bindings. Optional: Cargo feature gui.
libadwaita 0.8, feature v1_5 MIT Adwaita widgets, toasts, dialogs. Optional: gui.
ksni 0.3, feature tokio Unlicense StatusNotifierItem tray icon, built on zbus. Optional: gui.
zbus 5, feature tokio MIT D-Bus client and the #[proxy] macro.
tokio 1 MIT The I/O runtime that owns every D-Bus call.
async-channel 2 Apache-2.0 OR MIT Executor-agnostic bridge between Tokio and the GLib main loop.
futures-util 0.3 MIT OR Apache-2.0 Stream combinators for event coalescing.
tracing, tracing-subscriber 0.1, 0.3 MIT Structured logging, driven by USBGUARD_GUI_LOG.
thiserror 2 MIT OR Apache-2.0 The error taxonomy that crosses layers.
gettext-rs 0.8, feature gettext-system MIT Translation catalogue lookup. Optional: gui.

Desktop notifications use GIO's own GNotification, which already speaks both the session-bus protocol and the Flatpak notification portal, so no notification crate is needed.

cargo build --no-default-features builds the headless commands (--diagnose, --list-devices, --list-rules) without GTK.

2. Development Dependencies

Package Version Purpose
proptest 1 Property tests for the rule parser and renderer.
zbus feature p2p 5 The mock USBGuard bridge the D-Bus tests run against.
cargo-fuzz / libfuzzer-sys Toolchain (nightly) Parser fuzzing: make fuzz-parser.
cargo-audit Toolchain RustSec advisory scanning (make audit).
Clippy, rustfmt Toolchain make lint; Clippy enforces the no-panic and runtime-boundary rules.
cargo-deb, cargo-generate-rpm Toolchain make package-deb, make package-rpm.

3. System Dependencies

Component Minimum version Purpose
usbguard 1.1.0 The daemon this program is a client of. Earlier versions differ in appendRule arity.
USBGuard D-Bus bridge Matching the daemon Provides org.usbguard1. Inside usbguard on Debian, Ubuntu, and Arch; the separate usbguard-dbus package on Fedora and RHEL.
GTK 4.14 Widgets. Build: gtk4-devel / libgtk-4-dev / gtk4.
libadwaita 1.5 Adwaita widgets. Build: libadwaita-devel / libadwaita-1-dev / libadwaita.
GLib Matching GTK Main loop, GSettings. glib-compile-schemas compiles the settings schema at build time.
GNU gettext any Build time only: msgfmt compiles the translations. Without it the build is English only.
A C toolchain, pkg-config any Required by the -sys crates under the GTK bindings.
D-Bus (system bus) any The only transport to the daemon.

Optional at runtime, each degrading visibly rather than silently: a Polkit session agent, a notification server, and a StatusNotifierWatcher.