Skip to main content

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;