Skip to main content

Crate flow_wm

Crate flow_wm 

Source
Expand description

FlowWM (flow) — a tiling window manager for Windows built around a scrolling, infinite-horizontal-canvas layout model.

§Binaries

The project ships as two binaries inside a single Cargo package sharing this library crate:

BinaryRole
flowdDaemon — owns all state, manages windows
flowCLI client — sends commands to the daemon via named-pipe IPC

§Modules

  • workspace — layout orchestration (ScrollingSpace, Monitor, Workspace)
  • layout — pure layout math: mutation + projection (zero Win32)
  • registry — window metadata, classification, and the Win32 bridge
  • animation — embedded animation crate (WindowAnimator, DwmFlush pacing)
  • daemonFlowWM coordinator, hook handlers, dispatch
  • ipc — named-pipe server and message protocol
  • config — TOML config (code is the single source of truth)
  • common — shared bridge types (WindowId, Rect, Direction)

Every layout change flows through a pure three-stage pipeline — mutate → project → animate — and all subsystems take &mut self (no Arc<Mutex>; the borrow checker enforces exclusive access).

§Developer guide

Architecture diagrams, design rationale, the threading model, and deep algorithm walkthroughs (classification, projection, animation) live in the mdBook developer guide under docs/. Start with “How to Read This Book” (docs/src/dev-guide/README.md), which explains the three-layer documentation strategy used throughout the crate.

Modules§

animation
Embedded animation engine — rect-based HWND animation for Windows tiling window managers.
autostart
Daemon autostart and AutoHotkey lifecycle.
borders
Window border overlay engine — komorebi/Hyprland-style colored borders.
common
Common types shared across all modules.
config
Configuration parser, auto-creation, and JSON Schema generation.
daemon
FlowWM — the single top-level orchestrator for the flowd daemon.
ipc
IPC message types shared between flowd daemon and flow CLI.
layout
Layout engine — infinite horizontal canvas with camera-based viewport.
logging
Daemon logging initialization — date-stamped log file plus stderr tee.
registry
Window registry — authoritative source of truth for all tracked windows.
workspace
Workspace hierarchy — monitors, workspaces, and the scrolling/floating split.