2026-01-24 16:17:47 +01:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Features - DWN Documentation< / title >
< link rel = "stylesheet" href = "css/style.css" >
< / head >
< body >
< button class = "mobile-menu-btn" > Menu< / button >
< div class = "layout" >
< aside class = "sidebar" >
< div class = "sidebar-header" >
< h1 > DWN< / h1 >
2026-02-07 13:04:52 +01:00
< span class = "version" > v2.0.0< / span >
2026-01-24 16:17:47 +01:00
< / div >
< div class = "search-box" >
< input type = "text" class = "search-input" placeholder = "Search docs..." >
< / div >
< nav class = "sidebar-nav" >
< div class = "nav-section" >
< div class = "nav-section-title" > Getting Started< / div >
< a href = "index.html" class = "nav-link" > Introduction< / a >
< a href = "installation.html" class = "nav-link" > Installation< / a >
< a href = "quickstart.html" class = "nav-link" > Quick Start< / a >
< / div >
< div class = "nav-section" >
< div class = "nav-section-title" > User Guide< / div >
< a href = "features.html" class = "nav-link active" > Features< / a >
< a href = "shortcuts.html" class = "nav-link" > Keyboard Shortcuts< / a >
< a href = "configuration.html" class = "nav-link" > Configuration< / a >
< a href = "layouts.html" class = "nav-link" > Layouts< / a >
< a href = "ai-features.html" class = "nav-link" > AI Integration< / a >
< / div >
< div class = "nav-section" >
< div class = "nav-section-title" > API Reference< / div >
< a href = "api-overview.html" class = "nav-link" > API Overview< / a >
< a href = "api-reference.html" class = "nav-link" > API Reference< / a >
< a href = "api-examples.html" class = "nav-link" > API Examples< / a >
< / div >
< div class = "nav-section" >
< div class = "nav-section-title" > Advanced< / div >
< a href = "architecture.html" class = "nav-link" > Architecture< / a >
2026-02-07 13:04:52 +01:00
< a href = "abstraction-layer.html" class = "nav-link" > Abstraction Layer< / a >
< a href = "plugin-development.html" class = "nav-link" > Plugin Development< / a >
2026-01-24 16:17:47 +01:00
< a href = "building.html" class = "nav-link" > Building from Source< / a >
< / div >
< / nav >
< / aside >
< main class = "main-content" >
< div class = "content" >
< div class = "page-header" >
< h1 > Features< / h1 >
< p class = "lead" > Comprehensive overview of DWN capabilities< / p >
< / div >
< div class = "toc" >
< div class = "toc-title" > On this page< / div >
< ul class = "toc-list" >
< li > < a href = "#window-management" > Window Management< / a > < / li >
2026-02-07 13:04:52 +01:00
< li > < a href = "#window-rules" > Window Rules< / a > < / li >
< li > < a href = "#window-marks" > Window Marks< / a > < / li >
2026-01-24 16:17:47 +01:00
< li > < a href = "#workspaces" > Virtual Workspaces< / a > < / li >
< li > < a href = "#layouts" > Layout System< / a > < / li >
< li > < a href = "#panels" > Panels & System Tray< / a > < / li >
< li > < a href = "#notifications" > Notifications< / a > < / li >
< li > < a href = "#screenshot-ocr" > Screenshot & OCR< / a > < / li >
< li > < a href = "#ai" > AI Integration< / a > < / li >
< li > < a href = "#api" > WebSocket API< / a > < / li >
< / ul >
< / div >
< h2 id = "window-management" > Window Management< / h2 >
< p > DWN provides comprehensive window management with both manual and automatic control.< / p >
< h3 > Window States< / h3 >
< ul >
< li > < strong > Normal< / strong > - Standard window state, subject to layout rules< / li >
< li > < strong > Floating< / strong > - Exempt from tiling, freely movable and resizable< / li >
< li > < strong > Maximized< / strong > - Fills usable area with decorations< / li >
< li > < strong > Fullscreen< / strong > - Fills entire screen, no decorations or panels< / li >
< li > < strong > Minimized< / strong > - Hidden from view, accessible via taskbar< / li >
< / ul >
< h3 > Window Snapping< / h3 >
< p > Snap windows to screen edges with < code > Super+Arrow< / code > keys. Snapping is composable:< / p >
< ul >
< li > < code > Super+Left< / code > - Left half (press twice for full width)< / li >
< li > < code > Super+Right< / code > - Right half< / li >
< li > < code > Super+Up< / code > - Top half< / li >
< li > < code > Super+Down< / code > - Bottom half< / li >
< li > Combine for quarter-screen: < code > Super+Left< / code > then < code > Super+Up< / code > < / li >
< / ul >
< h3 > Focus Modes< / h3 >
< div class = "table-container" >
< table >
< thead >
< tr >
< th > Mode< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > click< / code > < / td >
< td > Focus window on mouse click (default)< / td >
< / tr >
< tr >
< td > < code > follow< / code > < / td >
< td > Focus follows mouse pointer with configurable delay< / td >
< / tr >
< / tbody >
< / table >
< / div >
< h3 > Alt-Tab Window Cycling< / h3 >
< p > DWN maintains a Most Recently Used (MRU) stack per workspace. < code > Alt+Tab< / code > cycles through windows in order of recent use, not visual order.< / p >
2026-02-07 13:04:52 +01:00
< h3 > Keyboard Window Control< / h3 >
< p > Move and resize floating windows without leaving the keyboard:< / p >
< ul >
< li > < code > Super+Alt+Arrow< / code > - Move window by 20 pixels< / li >
< li > < code > Super+Ctrl+Arrow< / code > - Resize window by 20 pixels< / li >
< / ul >
< h2 id = "window-rules" > Window Rules< / h2 >
< p > Automatically apply settings to windows based on their class or title. Rules are matched using glob patterns with case-insensitive matching.< / p >
< h3 > Matching Criteria< / h3 >
< ul >
< li > < strong > Class Pattern< / strong > - Match by WM_CLASS (e.g., < code > Firefox< / code > , < code > *terminal*< / code > )< / li >
< li > < strong > Title Pattern< / strong > - Match by window title (e.g., < code > *Calculator*< / code > )< / li >
< li > < strong > Combined< / strong > - Match both class and title simultaneously< / li >
< / ul >
< h3 > Available Actions< / h3 >
< div class = "table-container" >
< table >
< thead >
< tr >
< th > Property< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > workspace< / code > < / td >
< td > Move window to specific workspace (1-9)< / td >
< / tr >
< tr >
< td > < code > floating< / code > < / td >
< td > Set floating state (true/false)< / td >
< / tr >
< tr >
< td > < code > sticky< / code > < / td >
< td > Make window visible on all workspaces< / td >
< / tr >
< tr >
< td > < code > fullscreen< / code > < / td >
< td > Start window in fullscreen mode< / td >
< / tr >
< tr >
< td > < code > width< / code > , < code > height< / code > < / td >
< td > Set initial window size< / td >
< / tr >
< tr >
< td > < code > x< / code > , < code > y< / code > < / td >
< td > Set initial window position< / td >
< / tr >
< / tbody >
< / table >
< / div >
< p > See < a href = "configuration.html#rules" > Configuration< / a > for rule syntax.< / p >
< h2 id = "window-marks" > Window Marks< / h2 >
< p > Mark windows with letters (a-z) for instant navigation, inspired by Vim marks.< / p >
< div class = "feature-grid" >
< div class = "feature-card" >
< div class = "feature-title" > Set Mark< / div >
< div class = "feature-desc" > Press < code > Super+M< / code > then < code > a-z< / code > to mark the focused window.< / div >
< / div >
< div class = "feature-card" >
< div class = "feature-title" > Jump to Mark< / div >
< div class = "feature-desc" > Press < code > Super+'< / code > then < code > a-z< / code > to instantly focus the marked window.< / div >
< / div >
< div class = "feature-card" >
< div class = "feature-title" > Cross-Workspace< / div >
< div class = "feature-desc" > Marks work across workspaces, automatically switching if needed.< / div >
< / div >
< div class = "feature-card" >
< div class = "feature-title" > 26 Slots< / div >
< div class = "feature-desc" > Use any letter a-z for marks. Reassigning overwrites the previous mark.< / div >
< / div >
< / div >
2026-01-24 16:17:47 +01:00
< h2 id = "workspaces" > Virtual Workspaces< / h2 >
< p > DWN provides 9 virtual workspaces for organizing your windows.< / p >
< div class = "feature-grid" >
< div class = "feature-card" >
< div class = "feature-title" > Independent Layouts< / div >
< div class = "feature-desc" > Each workspace maintains its own layout mode, master ratio, and master count.< / div >
< / div >
< div class = "feature-card" >
< div class = "feature-title" > Quick Switching< / div >
< div class = "feature-desc" > Switch with F1-F9, or Ctrl+Alt+Left/Right for sequential navigation.< / div >
< / div >
< div class = "feature-card" >
< div class = "feature-title" > Window Movement< / div >
< div class = "feature-desc" > Move windows between workspaces with Shift+F1-F9.< / div >
< / div >
< div class = "feature-card" >
< div class = "feature-title" > Workspace Indicator< / div >
< div class = "feature-desc" > Panel shows which workspaces have windows and current workspace.< / div >
< / div >
< / div >
< h2 id = "layouts" > Layout System< / h2 >
2026-02-07 13:04:52 +01:00
< p > Six layout modes available per workspace:< / p >
2026-01-24 16:17:47 +01:00
< h3 > Tiling Layout< / h3 >
< p > Master-stack tiling with configurable ratios. The first window(s) occupy the master area, others stack on the side.< / p >
< ul >
< li > < code > Super+H/L< / code > - Adjust master area size< / li >
< li > < code > Super+I/D< / code > - Adjust master window count< / li >
< li > Default master ratio: 55%< / li >
< / ul >
< h3 > Floating Layout< / h3 >
< p > Traditional floating window management. Drag title bars to move, drag edges to resize.< / p >
< h3 > Monocle Layout< / h3 >
< p > All windows fullscreen and stacked. Use Alt-Tab to switch between them. Ideal for focused work.< / p >
2026-02-07 13:04:52 +01:00
< h3 > Centered Master Layout< / h3 >
< p > The master window is centered on screen with stack windows divided on left and right sides. Great for wide monitors.< / p >
< h3 > Columns Layout< / h3 >
< p > All windows arranged in equal-width vertical columns. Each window takes full height.< / p >
< h3 > Fibonacci Layout< / h3 >
< p > Windows arranged in a spiral pattern using recursive splitting. Creates a visually interesting and space-efficient arrangement.< / p >
< h3 > Grid Layout< / h3 >
< p > Windows arranged in an automatically-calculated grid pattern. Perfect for comparing multiple documents or monitoring many terminals simultaneously.< / p >
< h3 > Plugin System< / h3 >
< p > DWN v2.0 supports custom layout plugins. Create your own window arrangements using the Layout Plugin API. Both built-in and dynamically loaded plugins are supported.< / p >
< p > See < a href = "layouts.html" > Layouts< / a > and < a href = "plugin-development.html" > Plugin Development< / a > for detailed documentation.< / p >
2026-01-24 16:17:47 +01:00
< h2 id = "panels" > Panels & System Tray< / h2 >
< h3 > Top Panel< / h3 >
< p > Contains workspace indicators, taskbar, layout indicator, and system tray.< / p >
< h3 > Bottom Panel< / h3 >
< p > Contains clock and news ticker (when configured).< / p >
< h3 > System Tray< / h3 >
< p > Full XEmbed protocol support for external application icons plus built-in widgets:< / p >
< ul >
< li > < strong > Battery< / strong > - Percentage display with charging indicator< / li >
< li > < strong > Volume< / strong > - Click for slider, scroll to adjust, right-click to mute< / li >
< li > < strong > WiFi< / strong > - SSID display, click for network list< / li >
< li > < strong > External Icons< / strong > - nm-applet, blueman, Telegram, etc.< / li >
< / ul >
< h2 id = "notifications" > Notifications< / h2 >
< p > DWN includes a built-in D-Bus notification daemon implementing the freedesktop.org specification.< / p >
< ul >
< li > Automatic service registration on startup< / li >
< li > Configurable colors and timeout< / li >
< li > Stacking notification display< / li >
< li > Urgency level support (low, normal, critical)< / li >
< / ul >
< p > No external notification daemon required.< / p >
< h2 id = "screenshot-ocr" > Screenshot & OCR< / h2 >
< p > Built-in screenshot capture and OCR text extraction, accessible via the WebSocket API.< / p >
< h3 > Screenshot Modes< / h3 >
< div class = "table-container" >
< table >
< thead >
< tr >
< th > Mode< / th >
< th > Description< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > < code > fullscreen< / code > < / td >
< td > Capture entire screen< / td >
< / tr >
< tr >
< td > < code > window< / code > < / td >
< td > Capture specific window by ID< / td >
< / tr >
< tr >
< td > < code > active< / code > < / td >
< td > Capture currently focused window< / td >
< / tr >
< tr >
< td > < code > area< / code > < / td >
< td > Capture arbitrary rectangle< / td >
< / tr >
< / tbody >
< / table >
< / div >
< h3 > OCR Text Extraction< / h3 >
< p > Extract text from screenshots using Tesseract OCR engine:< / p >
< ul >
< li > Multi-language support (English by default)< / li >
< li > Confidence score reporting< / li >
< li > Useful for automation and accessibility< / li >
< / ul >
< p > See < a href = "api-reference.html" > API Reference< / a > for usage details.< / p >
< h2 id = "ai" > AI Integration< / h2 >
< p > Optional AI features powered by OpenRouter API:< / p >
< h3 > AI Command Palette< / h3 >
< p > Natural language command input (< code > Super+Shift+A< / code > ). Ask the AI to:< / p >
< ul >
< li > Launch applications ("open firefox")< / li >
< li > Answer questions< / li >
< li > Get system information< / li >
< / ul >
< h3 > AI Context Analysis< / h3 >
< p > Press < code > Super+A< / code > to see AI analysis of your current task based on open windows.< / p >
< h3 > Exa Semantic Search< / h3 >
< p > Web search with semantic understanding (< code > Super+Shift+E< / code > ). Find documentation, tutorials, and resources.< / p >
< p > See < a href = "ai-features.html" > AI Integration< / a > for setup instructions.< / p >
< h2 id = "api" > WebSocket API< / h2 >
< p > Full programmatic control via JSON WebSocket API on configurable port (default 8777).< / p >
< h3 > Capabilities< / h3 >
< ul >
< li > Window management (list, focus, move, resize, close)< / li >
< li > Workspace control (switch, move windows)< / li >
< li > Layout management (mode, master ratio)< / li >
< li > Keyboard simulation (key presses, typing)< / li >
< li > Mouse simulation (move, click, drag)< / li >
< li > Screenshot capture and OCR< / li >
< li > System queries (windows, workspaces, monitors)< / li >
< / ul >
< h3 > Use Cases< / h3 >
< ul >
< li > Test automation< / li >
< li > Custom hotkey scripts< / li >
< li > Remote desktop control< / li >
< li > Accessibility tools< / li >
< li > Integration with other applications< / li >
< / ul >
< p > See < a href = "api-overview.html" > API Overview< / a > for getting started.< / p >
2026-02-07 13:04:52 +01:00
< h2 > Abstraction Layer (v2.0)< / h2 >
< p > DWN v2.0 introduces a comprehensive abstraction layer enabling backend portability and plugin extensibility:< / p >
< ul >
< li > < strong > Backend Interface< / strong > - 80+ operation vtable for X11/Wayland portability< / li >
< li > < strong > Type Safety< / strong > - Strongly typed handles replacing void* casts< / li >
< li > < strong > Memory Safety< / strong > - Safe string and container abstractions< / li >
< li > < strong > Plugin API< / strong > - Extensible architecture for layouts and widgets< / li >
< li > < strong > 100% Compatible< / strong > - Existing code works unchanged< / li >
< / ul >
< p > See < a href = "abstraction-layer.html" > Abstraction Layer< / a > for technical details.< / p >
2026-01-24 16:17:47 +01:00
< h2 > Protocol Compliance< / h2 >
< p > DWN implements standard X11 protocols for compatibility:< / p >
< ul >
< li > < strong > EWMH< / strong > - Extended Window Manager Hints< / li >
< li > < strong > ICCCM< / strong > - Inter-Client Communication Conventions< / li >
< li > < strong > XEmbed< / strong > - System tray embedding protocol< / li >
< li > < strong > Xinerama< / strong > - Multi-monitor support< / li >
< / ul >
< footer >
< p > DWN Window Manager - retoor < retoor@molodetz.nl> < / p >
< / footer >
< / div >
< / main >
< / div >
< script src = "js/main.js" > < / script >
< / body >
< / html >