tree_space/lib.rs
1//! tree-space — a dockable, keyboard-first file manager panel for Wayland/Hyprland.
2//!
3//! The crate is split into three layers:
4//!
5//! * [`config`] — TOML configuration and XDG state persistence. Pure serde code,
6//! fully unit-tested, no GTK imports.
7//! * [`fs`] — the non-visual file-management core:
8//! * [`fs::model`] — a lazy, filesystem-agnostic tree model (expand/collapse,
9//! sorting, filtering, incremental updates from change events). Directory
10//! listings are read through the [`fs::model::DirSource`] trait so tests can
11//! substitute an in-memory filesystem.
12//! * [`fs::ops`] — create/rename/copy/move/duplicate/trash operations behind
13//! the [`fs::ops::TrashService`] abstraction (GIO trash in production, a
14//! recording fake in tests).
15//! * [`fs::watcher`] — `notify` inotify wrapper that maps raw filesystem
16//! events onto the model's [`fs::Change`] vocabulary.
17//! * [`ui`] — relm4/GTK4 components. The UI layer is intentionally thin: it
18//! renders [`fs::model::TreeModel`] and forwards user intents back into it.
19//!
20//! Keeping the model free of GTK imports means the interesting logic can be
21//! tested headlessly with `cargo test`.
22
23pub mod config;
24pub mod fs;
25pub mod cmd;
26pub mod ipc;
27pub mod audio;
28pub mod ui;