Skip to main content

flow_wm/
lib.rs

1#![warn(missing_docs)]
2//! FlowWM (`flow`) — a tiling window manager for Windows built
3//! around a **scrolling, infinite-horizontal-canvas** layout model.
4//!
5//! # Binaries
6//!
7//! The project ships as two binaries inside a single Cargo package sharing
8//! this library crate:
9//!
10//! | Binary | Role |
11//! |--------|------|
12//! | `flowd` | Daemon — owns all state, manages windows |
13//! | `flow` | CLI client — sends commands to the daemon via named-pipe IPC |
14//!
15//! # Modules
16//!
17//! - [`workspace`] — layout orchestration (`ScrollingSpace`, `Monitor`, `Workspace`)
18//! - [`layout`] — pure layout math: mutation + projection (zero Win32)
19//! - [`registry`] — window metadata, classification, and the Win32 bridge
20//! - [`animation`] — embedded animation crate (`WindowAnimator`, `DwmFlush` pacing)
21//! - [`daemon`] — `FlowWM` coordinator, hook handlers, dispatch
22//! - [`ipc`] — named-pipe server and message protocol
23//! - [`config`] — TOML config (code is the single source of truth)
24//! - [`common`] — shared bridge types (`WindowId`, `Rect`, `Direction`)
25//!
26//! Every layout change flows through a pure three-stage pipeline —
27//! **mutate → project → animate** — and all subsystems take `&mut self` (no
28//! `Arc<Mutex>`; the borrow checker enforces exclusive access).
29//!
30//! # Developer guide
31//!
32//! Architecture diagrams, design rationale, the threading model, and deep
33//! algorithm walkthroughs (classification, projection, animation) live in the
34//! mdBook developer guide under `docs/`. Start with *"How to Read This Book"*
35//! (`docs/src/dev-guide/README.md`), which explains the three-layer
36//! documentation strategy used throughout the crate.
37
38pub mod animation;
39pub mod autostart;
40pub mod borders;
41pub mod common;
42pub mod config;
43pub mod daemon;
44pub mod ipc;
45pub mod layout;
46pub mod logging;
47pub mod registry;
48pub mod workspace;