Skip to content

Development

locainin edited this page Jan 30, 2026 · 4 revisions

Development

Workspace layout

  • crates/unixnotis-daemon: D-Bus daemon and store.
  • crates/unixnotis-center: Control-center panel UI.
  • crates/unixnotis-popups: Popup UI.
  • crates/unixnotis-ui: Shared GTK/UI components and CSS loader.
  • crates/unixnotis-core: Shared models and configuration.
  • crates/unixnotis-installer: Installer and systemd integration.
  • crates/noticenterctl: CLI control tool.

Internal module layout

  • crates/unixnotis-center/src/dbus/: D-Bus backoff, command, seed, and type helpers.
  • crates/unixnotis-installer/src/main/: Installer UI flow, event handlers, and worker actions.
  • crates/unixnotis-ui/src/css/: CSS loading, overrides, and watcher helpers.
  • crates/unixnotis-core/src/model_*: Notification model split into types, images, and views.

Build and test

cargo build --release
cargo test --workspace
cargo clippy --workspace --all-targets --all-features -- -D warnings

Optional build acceleration

The installer can optionally write a local .cargo/config.toml that points to a wrapper script under .cargo/unixnotis-rustc-wrapper.sh. The wrapper uses sccache (compiler output caching) and mold (fast linker) when available, and falls back to plain rustc if either tool is missing.

Manual install on Arch:

sudo pacman -S sccache mold

Remove .cargo/config.toml and the wrapper script to disable build acceleration.

CSS validation

noticenterctl css-check

Logging

  • general.log_level in config.toml sets the default.
  • UNIXNOTIS_DIAGNOSTIC=1 enables capped diagnostic output.

Clone this wiki locally