# Features

Comprehensive overview of DWN capabilities

## Window Management

DWN provides comprehensive window management with both manual and automatic control.

### Window States

- Normal - Standard window state, subject to layout rules
- Floating - Exempt from tiling, freely movable and resizable
- Maximized - Fills usable area with decorations
- Fullscreen - Fills entire screen, no decorations or panels
- Minimized - Hidden from view, accessible via taskbar

### Window Snapping

Snap windows to screen edges with `Super+Arrow` keys. Snapping is composable:

- `Super+Left` - Left half (press twice for full width)
- `Super+Right` - Right half
- `Super+Up` - Top half
- `Super+Down` - Bottom half
- Combine for quarter-screen: `Super+Left` then `Super+Up`

### Focus Modes

Mode | Description
--- | ---
`click` | Focus window on mouse click (default)
`follow` | Focus follows mouse pointer with configurable delay

### Alt-Tab Window Cycling

DWN maintains a Most Recently Used (MRU) stack per workspace. `Alt+Tab` cycles through windows in order of recent use, not visual order.

### Keyboard Window Control

Move and resize floating windows without leaving the keyboard:

- `Super+Alt+Arrow` - Move window by 20 pixels
- `Super+Ctrl+Arrow` - Resize window by 20 pixels

## Window Rules

Automatically apply settings to windows based on their class or title. Rules are matched using glob patterns with case-insensitive matching.

### Matching Criteria

- Class Pattern - Match by WM_CLASS (e.g., `Firefox`, `*terminal*`)
- Title Pattern - Match by window title (e.g., `*Calculator*`)
- Combined - Match both class and title simultaneously

### Available Actions

Property | Description
--- | ---
`workspace` | Move window to specific workspace (1-9)
`floating` | Set floating state (true/false)
`sticky` | Make window visible on all workspaces
`fullscreen` | Start window in fullscreen mode
`width`, `height` | Set initial window size
`x`, `y` | Set initial window position

See Configuration for rule syntax.

## Window Marks

Mark windows with letters (a-z) for instant navigation, inspired by Vim marks.

Set Mark
Press `Super+M` then `a-z` to mark the focused window.
Jump to Mark
Press `Super+'` then `a-z` to instantly focus the marked window.
Cross-Workspace
Marks work across workspaces, automatically switching if needed.
26 Slots
Use any letter a-z for marks. Reassigning overwrites the previous mark.

## Virtual Workspaces

DWN provides 9 virtual workspaces for organizing your windows.

Independent Layouts
Each workspace maintains its own layout mode, master ratio, and master count.
Quick Switching
Switch with F1-F9, or Ctrl+Alt+Left/Right for sequential navigation.
Window Movement
Move windows between workspaces with Shift+F1-F9.
Workspace Indicator
Panel shows which workspaces have windows and current workspace.

## Layout System

Six layout modes available per workspace:

### Tiling Layout

Master-stack tiling with configurable ratios. The first window(s) occupy the master area, others stack on the side.

- `Super+H/L` - Adjust master area size
- `Super+I/D` - Adjust master window count
- Default master ratio: 55%

### Floating Layout

Traditional floating window management. Drag title bars to move, drag edges to resize.

### Monocle Layout

All windows fullscreen and stacked. Use Alt-Tab to switch between them. Ideal for focused work.

### Centered Master Layout

The master window is centered on screen with stack windows divided on left and right sides. Great for wide monitors.

### Columns Layout

All windows arranged in equal-width vertical columns. Each window takes full height.

### Fibonacci Layout

Windows arranged in a spiral pattern using recursive splitting. Creates a visually interesting and space-efficient arrangement.

### Grid Layout

Windows arranged in an automatically-calculated grid pattern. Perfect for comparing multiple documents or monitoring many terminals simultaneously.

### Plugin System

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.

See Layouts and Plugin Development for detailed documentation.

## Panels & System Tray

### Top Panel

Contains workspace indicators, taskbar, layout indicator, and system tray.

### Bottom Panel

Contains clock and news ticker (when configured).

### System Tray

Full XEmbed protocol support for external application icons plus built-in widgets:

- Battery - Percentage display with charging indicator
- Volume - Click for slider, scroll to adjust, right-click to mute
- WiFi - SSID display, click for network list
- External Icons - nm-applet, blueman, Telegram, etc.

## Notifications

DWN includes a built-in D-Bus notification daemon implementing the freedesktop.org specification.

- Automatic service registration on startup
- Configurable colors and timeout
- Stacking notification display
- Urgency level support (low, normal, critical)

No external notification daemon required.

## Screenshot & OCR

Built-in screenshot capture and OCR text extraction, accessible via the WebSocket API.

### Screenshot Modes

Mode | Description
--- | ---
`fullscreen` | Capture entire screen
`window` | Capture specific window by ID
`active` | Capture currently focused window
`area` | Capture arbitrary rectangle

### OCR Text Extraction

Extract text from screenshots using Tesseract OCR engine:

- Multi-language support (English by default)
- Confidence score reporting
- Useful for automation and accessibility

See API Reference for usage details.

## AI Integration

Optional AI features powered by OpenRouter API:

### AI Command Palette

Natural language command input (`Super+Shift+A`). Ask the AI to:

- Launch applications ("open firefox")
- Answer questions
- Get system information

### AI Context Analysis

Press `Super+A` to see AI analysis of your current task based on open windows.

### Exa Semantic Search

Web search with semantic understanding (`Super+Shift+E`). Find documentation, tutorials, and resources.

See AI Integration for setup instructions.

## WebSocket API

Full programmatic control via JSON WebSocket API on configurable port (default 8777).

### Capabilities

- Window management (list, focus, move, resize, close)
- Workspace control (switch, move windows)
- Layout management (mode, master ratio)
- Keyboard simulation (key presses, typing)
- Mouse simulation (move, click, drag)
- Screenshot capture and OCR
- System queries (windows, workspaces, monitors)

### Use Cases

- Test automation
- Custom hotkey scripts
- Remote desktop control
- Accessibility tools
- Integration with other applications

See API Overview for getting started.

## Abstraction Layer (v2.0)

DWN v2.0 introduces a comprehensive abstraction layer enabling backend portability and plugin extensibility:

- Backend Interface - 80+ operation vtable for X11/Wayland portability
- Type Safety - Strongly typed handles replacing void* casts
- Memory Safety - Safe string and container abstractions
- Plugin API - Extensible architecture for layouts and widgets
- 100% Compatible - Existing code works unchanged

See Abstraction Layer for technical details.

## Protocol Compliance

DWN implements standard X11 protocols for compatibility:

- EWMH - Extended Window Manager Hints
- ICCCM - Inter-Client Communication Conventions
- XEmbed - System tray embedding protocol
- Xinerama - Multi-monitor support