About
What Phosphor is and why it exists.
What
Phosphor is a suite of Qt6 and Wayland libraries for building window-management tools. It covers the layers a typical tiling / overlay / shader-driven compositor tool needs: zones, layouts, shaders, layer-shell surfaces, global shortcuts, motion, configuration, and window identity.
Each piece is a focused library with a narrow public API and a well-defined role. Consumers depend on just the libraries they need.
Where it came from
PlasmaZones started as a scratch-my-own-itch project. After moving from Windows to KDE Plasma, the one tool I kept reaching for and couldn't find was FancyZones: hold a modifier, drag a window across named regions, drop it into one and have it fill the zone. Plasma had tiling scripts and KWin effects, but nothing that gave the same direct drag-to-snap workflow. PlasmaZones was written to fill that gap and grew from there into autotiling, layout editing, shader effects, and multi-monitor zone assignments.
As the app grew, enough of its internals were already shaped like libraries that it made sense to treat them that way. Layer-shell hosting, shader compilation, tiling algorithms, zone persistence, and global shortcuts each got lifted into their own library. That split finished in 2026 and the libraries now live under the phosphor-works umbrella. PlasmaZones remains the flagship consumer, and the same libraries are open for other Qt projects to build on.
Design principles
- One library, one responsibility. If a piece can be used without the rest, it's its own library.
- Interfaces first. Every non-trivial subsystem ships an abstract interface so apps can mock or swap any implementation. Clients depend on
ILayoutManager, notJsonLayoutManager. - Wayland-native. No X11 fallbacks in the public API. XWayland clients work as windows within a Wayland session; everything else is layer-shell, compositor protocols, and QtWaylandClient.
- Scriptable extension points. Tiling algorithms live in a sandboxed QJSEngine. Shader effects are plain GLSL 450 files with a metadata manifest. No recompile needed to customize either.
- Readable over clever. The libraries skew toward code that reads well in review. Compile-time tricks are reserved for the handful of cases where they actually pay for themselves.
Who builds it
Phosphor is developed by fuddlesworth with community contributions. The source and issue tracker for PlasmaZones live at fuddlesworth/PlasmaZones; the library split and the website live under phosphor-works.
License
- Libraries and apps: GPL-3.0-or-later. Individual libraries ship as LGPL-2.1-or-later where they're meant to be linked against from non-GPL code.
- Brand assets: CC-BY-SA 4.0, hosted at
phosphor-works/branding. Logos, icons, and color tokens are yours to use with attribution. - Docs: the content of this website is GPL-3.0-or-later alongside the rest of the code.
Contributing
Issues, pull requests, packaging, and documentation are all welcome. The contributing page summarizes where to file what, the commit-message convention, and the build + test flow; the full CONTRIBUTING.md in the PlasmaZones repo has the canonical details.
AI disclosure
Some of Phosphor's code and docs are drafted with AI coding assistants, then reviewed by a human before they land. The AI disclosure page describes how that process works and what it does not cover.