2026-01-24 15:17:47 +00: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 12:04:52 +00:00
< span class = "version" > v2.0.0</ span >
2026-01-24 15:17:47 +00: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 12:04:52 +00: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 15:17:47 +00: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 12:04:52 +00:00
< li >< a href = "#window-rules" > Window Rules</ a ></ li >
< li >< a href = "#window-marks" > Window Marks</ a ></ li >
2026-01-24 15:17:47 +00: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 12:04:52 +00: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 15:17:47 +00: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 12:04:52 +00:00
< p > Six layout modes available per workspace:</ p >
2026-01-24 15:17:47 +00: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 12:04:52 +00: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 15:17:47 +00: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 12:04:52 +00: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 15:17:47 +00: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 >