Overview
ShojiWM is configured from TypeScript/TSX by default. Your config is a normal
Config languages
TypeScript/TSX is ShojiWM's default config language, but it is not the only
Default config
ShojiWM ships with a complete default config (packages/config/src/index.tsx,
Lifecycle & Events
Lifecycle hooks
Outputs (Displays)
COMPOSITOR.output controls monitor layout — resolution, refresh rate, scale,
Input devices
COMPOSITOR.input configures keyboards, pointers (mice), and touchpads. As with
Cursor
COMPOSITOR.cursor configures the XCursor theme used by ShojiWM's
Keybindings & Pointer
Keyboard shortcuts
Processes & Environment
Session logs
Window composition
COMPOSITOR.window.composition is the heart of ShojiWM's customization. Assign a
SSD Components
These are the building blocks you assemble inside
Paint shaders
Every server-side decoration is drawn by a shader. Paint shaders let you
Drag and drop
When you drag something from one window to another (text, a file, a link),
State & Signals
ShojiWM's composition is reactive: when a value your code read changes, the
Effects
ShojiWM can run GPU shader effects in these places, configured via
Output overlays
COMPOSITOR.effect.overlay(output, options) draws a fullscreen effect through the
Output composition and 3D
COMPOSITOR.rendering.composition decides how each output is put together. It is
Output composition reference
Every node and helper of output composition, all exported
Output composition recipes
Complete effects built from output composition. Each one
Animations
ShojiWM offers two ways to animate, with different trade-offs:
Frame Timing & Polls
ShojiWM keeps time per output. Each output's clock is the presentation time
KDE Plasma Shell
ShojiWM can host KDE's plasmashell, so you keep the KDE taskbar, Kickoff,
Lock backgrounds and unlock overlays
While the session is locked, ShojiWM normally draws nothing but the locker's