diff --git a/README.md b/README.md index 84c3504..9462b15 100644 --- a/README.md +++ b/README.md @@ -1,134 +1,314 @@ # DWN - Desktop Window Manager -DWN is a high-performance, X11-compliant window manager written in ANSI C. It combines the efficiency of tiling layouts with the usability of a full desktop environment, featuring integrated status bars, system tray support, and a robust notification system. +retoor -## Project Vision +A production-ready X11 window manager written in ANSI C. DWN implements EWMH and ICCCM protocols for cross-compatibility while providing tiling-first workflow management with integrated desktop components. -The Desktop Window Manager (DWN) is designed for users who seek a productive, tiling-first workflow without sacrificing modern desktop features. It adheres to EWMH and ICCCM standards, ensuring compatibility with contemporary applications while providing advanced automation capabilities through its built-in WebSocket API. +## Architecture -## Key Features +DWN uses a modular architecture with specialized subsystems for window management, layout algorithms, panel rendering, system tray, notifications, and optional AI integration. All state is managed through a global singleton with strict encapsulation patterns. -* **Hybrid Layout Management**: Seamlessly switch between Tiling (Master-Stack), Monocle, and Floating modes on a per-workspace basis. -* **Virtual Workspaces**: Supports 9 independent workspaces with persistent state and layout configurations. -* **Integrated Desktop Components**: - * **Status Panel**: Built-in top and bottom panels with workspace indicators, taskbars, and system clocks. - * **System Tray**: XEmbed-compliant systray implementation. - * **Notification Daemon**: Integrated D-Bus notification server support. -* **AI Integration**: Native support for LLM-assisted window management and semantic command execution. - * **Command Palette**: Intelligent prompt-based interface for window and system management. - * **Auto-Organization**: Context-aware window placement and workspace optimization. - * **Smart Notifications**: Intelligent filtering and prioritization based on application context. - * **Semantic Search**: Deep integration with Exa for enhanced application launching and web search. -* **Extensible API**: A real-time WebSocket interface for remote control and introspection. +The window manager operates with zero window borders and zero gaps between tiles, providing a seamless, professional appearance. Title bars remain at 28px height for window controls. + +## Core Features + +### Layout Management +- **Tiling Mode**: Master-stack layout with configurable ratios +- **Floating Mode**: Traditional overlapping windows +- **Monocle Mode**: Single fullscreen window +- **Composable Snapping**: Quarter-screen, half-screen, and full-screen snapping via Super+Arrow keys + +### Workspace System +- 9 independent virtual workspaces (F1-F9) +- Per-workspace layout persistence +- Workspace indicators in panel +- Fast workspace switching with Shift+F1-F9 to move windows + +### Integrated Components +- **Top Panel**: Workspace indicators, taskbar, system tray, clock +- **Bottom Panel**: Additional status information +- **System Tray**: XEmbed protocol implementation supporting external applications +- **System Widgets**: Battery indicator, volume control, WiFi manager +- **Notification Daemon**: D-Bus org.freedesktop.Notifications implementation + +### News Ticker +- Real-time news feed in panel +- Scrolling article titles +- Super+Return to open current article in browser +- Configurable news sources + +### AI Integration +- **Command Palette** (Super+Shift+A): Natural language window management +- **Context Analysis** (Super+A): Workspace and task detection +- **Exa Semantic Search** (Super+Shift+E): Intelligent web search +- Powered by OpenRouter API (supports multiple LLM providers) + +### Interactive Features +- **Tutorial System** (Super+T): Step-by-step keyboard shortcut training +- **Demo Mode** (Super+Shift+D): Automated feature showcase +- **Keyboard Shortcuts Help** (Super+S): Quick reference overlay + +### Automation +- **XDG Autostart**: Automatic application launching from .desktop files +- **Service Manager**: Background process management +- **WebSocket API**: Remote control and state monitoring on port 8777 ## Installation -### Prerequisites +### Dependencies -DWN requires the following development libraries: -* `libX11`, `libXext`, `libXinerama`, `libXrandr`, `libXft` -* `fontconfig` -* `libdbus-1` -* `libcurl` (for AI features) +Required packages (via pkg-config): +- X11, Xext, Xinerama, Xrandr, Xft +- fontconfig +- libdbus-1 +- libcurl +- libm -### Building +### Build Process ```bash -# Clone the repository git clone https://github.com/your-repo/dwn.git cd dwn -# Install dependencies (automated for apt/dnf/pacman) -make deps - -# Compile the project -make +make deps # Auto-install dependencies (apt/dnf/pacman) +make # Build release version with -O2 optimization +make install # Install to /usr/local/bin ``` -### Running - -To test DWN without affecting your current session, use the provided Xephyr-based runner: +### Testing ```bash -make run +make run # Launch in nested Xephyr window (safe testing) ``` -To install system-wide: +### Build Targets ```bash -sudo make install +make # Release build with optimization +make debug # Debug build with -g -DDEBUG +make clean # Remove build artifacts +make format # Run clang-format +make check # Run cppcheck static analysis ``` -## AI-Assisted Management +## Configuration -DWN differentiates itself through deep integration with Large Language Models (LLMs) via the OpenRouter API. This allows for semantic understanding of your workflow and proactive window management. +Configuration file: `~/.config/dwn/config` -### Features -* **Natural Language Commands**: Control your workspace using plain English (e.g., "move all browser windows to workspace 3", "arrange my coding environment"). -* **Intelligent Context**: The AI is aware of your active windows, workspace layouts, and historical usage patterns. -* **Workflow Optimization**: Proactive suggestions for layout changes based on your current activity (coding vs. browsing vs. communication). -* **Semantic App Launcher**: Find and launch applications based on intent rather than just binary names. +### General Settings + +```ini +[general] +terminal = xfce4-terminal +launcher = dmenu_run +file_manager = thunar +focus_mode = click # click or follow +focus_follow_delay = 100 # 0-1000ms +decorations = true +``` + +### Appearance + +```ini +[appearance] +border_width = 0 # 0-50px (0 for seamless) +title_height = 28 # 0-100px +panel_height = 32 # 0-100px +gap = 0 # 0-100px (0 for seamless) +font = fixed +``` + +### Layout + +```ini +[layout] +default = tiling # tiling, floating, monocle +master_ratio = 0.55 # 0.1-0.9 +master_count = 1 # 1-10 +``` + +### Panels + +```ini +[panels] +top = true +bottom = true +``` + +### Colors + +```ini +[colors] +panel_bg = #080808 +panel_fg = #00ff00 +workspace_active = #ff00ff +workspace_inactive = #222222 +workspace_urgent = #ff0000 +title_focused_bg = #00ffff +title_focused_fg = #000000 +title_unfocused_bg = #111111 +title_unfocused_fg = #444444 +border_focused = #00ff00 +border_unfocused = #000000 +notification_bg = #111111 +notification_fg = #00ffff +``` + +### AI Integration -To use AI features, configure your API keys in `config.ini`: ```ini [ai] -enabled = true -model = anthropic/claude-3-sonnet -openrouter_key = YOUR_API_KEY -exa_key = YOUR_EXA_KEY +model = google/gemini-2.0-flash-exp:free +openrouter_api_key = sk-or-v1-your-key +exa_api_key = your-exa-key ``` -## WebSocket API +Environment variables: +```bash +export OPENROUTER_API_KEY=sk-or-v1-your-key +export EXA_API_KEY=your-exa-key +``` -DWN exposes a powerful WebSocket API that allows external applications to monitor state and control the window manager programmatically. +Get API keys: +- OpenRouter: https://openrouter.ai/keys +- Exa: https://dashboard.exa.ai/api-keys -### Connectivity -* **Default Port**: `8777` -* **Endpoint**: `ws://localhost:8777/ws` -* **Protocol**: JSON-RPC style messages +### Autostart + +```ini +[autostart] +enabled = true +xdg_autostart = true # Scan /etc/xdg/autostart and ~/.config/autostart +path = ~/.config/dwn/autostart.d +``` + +### WebSocket API -The API is disabled by default. It can be enabled in the configuration file: ```ini [api] enabled = true port = 8777 ``` -### API Commands +### Demo Mode -All commands are sent as JSON objects containing a `command` field. +```ini +[demo] +step_delay = 4000 # 1000-30000ms between steps +ai_timeout = 15000 # 5000-60000ms for AI responses +window_timeout = 5000 # 1000-30000ms for window spawns +``` -#### 1. `get_status` -Retrieves the current state of the window manager. -* **Response**: Returns an object with version, current workspace ID, and total client count. +## Keyboard Shortcuts -#### 2. `get_workspaces` -Lists all workspaces and their current configuration. -* **Response**: An array of workspace objects (ID, Name, Layout, Client Count). +### Application Launchers +| Shortcut | Action | +|----------|--------| +| `Ctrl+Alt+T` | Terminal | +| `Super` / `Alt+F2` | Application launcher | +| `Super+E` | File manager | +| `Super+B` | Web browser | +| `Print` | Screenshot | -#### 3. `get_clients` -Lists all managed windows across all workspaces. -* **Response**: An array of client objects containing: - * `window`: X11 Window ID - * `title`: Window title - * `class`: Window class - * `workspace`: Workspace ID - * `geometry`: x, y, width, height - * `focused`: Boolean indicating focus state +### Window Management +| Shortcut | Action | +|----------|--------| +| `Alt+F4` | Close window | +| `Alt+Tab` | Next window | +| `Alt+Shift+Tab` | Previous window | +| `Alt+F9` | Toggle minimize | +| `Alt+F10` | Toggle maximize | +| `Alt+F11` | Toggle fullscreen | +| `Super+F9` | Toggle floating | -#### 4. `switch_workspace` -Changes the active workspace. -* **Parameters**: `{"command": "switch_workspace", "workspace": }` +### Workspace Navigation +| Shortcut | Action | +|----------|--------| +| `F1` - `F9` | Switch to workspace 1-9 | +| `Shift+F1` - `Shift+F9` | Move window to workspace 1-9 | +| `Ctrl+Alt+Right` | Next workspace | +| `Ctrl+Alt+Left` | Previous workspace | -#### 5. `run_command` -Executes an arbitrary shell command. -* **Parameters**: `{"command": "run_command", "exec": ""}` +### Layout Control +| Shortcut | Action | +|----------|--------| +| `Super+Space` | Cycle layout (tiling/floating/monocle) | +| `Super+H` | Shrink master area | +| `Super+L` | Expand master area | +| `Super+I` | Increase master count | +| `Super+D` | Decrease master count | -#### 6. `focus_client` -Focuses a specific window and switches to its workspace if necessary. -* **Parameters**: `{"command": "focus_client", "window": }` +### Window Snapping +| Shortcut | Action | +|----------|--------| +| `Super+Left` | Snap left (50% or 100% width) | +| `Super+Right` | Snap right (50% or 100% width) | +| `Super+Up` | Snap top (50% or 100% height) | +| `Super+Down` | Snap bottom (50% or 100% height) | -### Example Usage (Python) +Snapping is composable: Super+Left then Super+Up snaps to top-left quarter. + +### AI Features +| Shortcut | Action | +|----------|--------| +| `Super+A` | Show AI context analysis | +| `Super+Shift+A` | AI command palette | +| `Super+Shift+E` | Exa semantic search | + +### News & Help +| Shortcut | Action | +|----------|--------| +| `Super+Return` | Open current news article | +| `Super+S` | Show shortcuts help | +| `Super+T` | Interactive tutorial | +| `Super+Shift+D` | Toggle demo mode | +| `Super+Backspace` | Quit DWN | + +## WebSocket API + +Connect to `ws://localhost:8777/ws` for programmatic control. + +### Commands + +#### get_status +Returns window manager state. +```json +{"command": "get_status"} +``` + +#### get_workspaces +Returns array of workspace objects. +```json +{"command": "get_workspaces"} +``` + +#### get_clients +Returns array of all managed windows. +```json +{"command": "get_clients"} +``` + +Response includes window ID, title, class, workspace, geometry, focus state. + +#### switch_workspace +Change active workspace. +```json +{"command": "switch_workspace", "workspace": 2} +``` + +#### run_command +Execute shell command. +```json +{"command": "run_command", "exec": "firefox"} +``` + +#### focus_client +Focus specific window by ID. +```json +{"command": "focus_client", "window": 12345678} +``` + +### Python Example ```python import websocket @@ -136,59 +316,76 @@ import json ws = websocket.create_connection("ws://localhost:8777/ws") -# Switch to workspace 2 -ws.send(json.dumps({ - "command": "switch_workspace", - "workspace": 2 -})) +ws.send(json.dumps({"command": "switch_workspace", "workspace": 3})) -# Get all clients ws.send(json.dumps({"command": "get_clients"})) -result = ws.recv() -print(json.loads(result)) +print(json.loads(ws.recv())) ws.close() ``` -### Advanced API Examples +## Module Architecture -The `scripts/api_examples/` directory contains several sophisticated applications leveraging the WebSocket API: +### Core Modules (src/) -* **Window Picker (`window_picker_fzf.py`)**: A terminal-based window switcher using `fzf`. It allows for fuzzy-searching through all open windows across all workspaces and jumping to the selected one. -* **Web Remote (`web_remote.html`)**: A standalone, mobile-friendly HTML5 dashboard. Control your window manager from a tablet or phone on the same network. -* **Session Manager (`session_manager.py`)**: Save and restore your window layouts. Snapshots current open applications and their workspace assignments for easy restoration. -* **Auto-Manager (`listen.py`)**: A background service that monitors workspace occupancy and proactively suggests moving windows if a workspace becomes too crowded. +| Module | Responsibility | +|--------|----------------| +| main.c | X11 initialization, event loop, signal handling | +| client.c | Window management, focus, frame creation | +| workspace.c | Virtual desktop management | +| layout.c | Tiling, floating, monocle algorithms | +| decorations.c | Title bars and borders | +| panel.c | Top and bottom panel rendering | +| systray.c | XEmbed system tray, battery/volume/WiFi widgets | +| notifications.c | D-Bus notification daemon | +| atoms.c | EWMH/ICCCM atom management | +| keys.c | Keyboard shortcut handling | +| config.c | INI configuration parser | +| ai.c | OpenRouter API, Exa search integration | +| news.c | News ticker with scrolling animation | +| autostart.c | XDG autostart implementation | +| services.c | Background service management | +| demo.c | Automated feature demonstration | +| api.c | WebSocket server and JSON handler | +| util.c | Logging, memory, string utilities | -## Configuration +### Design Patterns -DWN looks for a configuration file at `~/.config/dwn/config.ini`. If not found, it falls back to `/etc/dwn/config.ini`. - -Refer to `config/config.example` for a documented template of all available options, including color schemes, keybindings, and autostart commands. +- **Encapsulation**: Opaque pointer types hide internal structures +- **Error Handling**: Status codes with output parameters +- **Resource Management**: Goto cleanup pattern for multi-resource functions +- **Modularity**: Single responsibility per source file +- **Naming**: Module prefix convention (e.g., `client_focus()`, `workspace_switch()`) ## Development -DWN is built with modularity in mind. Each major component is isolated in its own source file to facilitate easier debugging and feature additions. +### Standards -### Key Components -* `src/main.c`: The core event loop and X11 event dispatcher. -* `src/client.c`: Window management logic (framing, focus, resizing). -* `src/layout.c`: Tiling and floating layout algorithms. -* `src/api.c`: WebSocket server and JSON command handler. -* `src/ai.c`: OpenRouter API integration and semantic logic. +- ANSI C (C89/C90) for maximum compatibility +- Snake_case for functions and variables +- CamelCase for types and structs +- No external dependencies beyond X11 and standard libraries +- Defensive programming: validate inputs, check malloc, null-terminate strings -### Coding Standards -* Strict adherence to ANSI C (C89/C90) for maximum compatibility. -* No external dependencies beyond standard X11 and networking libraries. -* Formatting is enforced via `clang-format`. Run `make format` before submitting patches. +### Code Style -## Codebase Structure +```bash +make format # Apply clang-format +make check # Run cppcheck +``` -* `src/`: Core implementation logic. -* `include/`: Header files and internal API definitions. -* `config/`: Configuration templates. -* `scripts/`: Deployment and utility scripts. -* `site/`: Technical documentation and architecture overviews. +### Project Structure + +``` +dwn/ +├── src/ # Implementation +├── include/ # Headers +├── config/ # Configuration templates +├── scripts/ # Utilities and API examples +├── site/ # Documentation website +└── build/ # Build artifacts +``` ## License -This project is licensed under the MIT License - see the `LICENSE` file for details. \ No newline at end of file +MIT License - see LICENSE file for details. diff --git a/bin/dwn b/bin/dwn index 7989689..1c3d25a 100755 Binary files a/bin/dwn and b/bin/dwn differ diff --git a/build/client.o b/build/client.o index 156d35e..41785e9 100644 Binary files a/build/client.o and b/build/client.o differ diff --git a/build/config.o b/build/config.o index 31e279b..a5fbba1 100644 Binary files a/build/config.o and b/build/config.o differ diff --git a/build/decorations.o b/build/decorations.o index 37d0872..4552732 100644 Binary files a/build/decorations.o and b/build/decorations.o differ diff --git a/build/layout.d b/build/layout.d index 6bd55f2..a1dcf3e 100644 --- a/build/layout.d +++ b/build/layout.d @@ -1,8 +1,47 @@ build/layout.o: src/layout.c include/layout.h include/dwn.h \ - include/client.h include/workspace.h include/config.h include/util.h + include/client.h include/workspace.h include/config.h include/util.h \ + include/panel.h include/notifications.h \ + /usr/include/dbus-1.0/dbus/dbus.h \ + /usr/lib/x86_64-linux-gnu/dbus-1.0/include/dbus/dbus-arch-deps.h \ + /usr/include/dbus-1.0/dbus/dbus-macros.h \ + /usr/include/dbus-1.0/dbus/dbus-address.h \ + /usr/include/dbus-1.0/dbus/dbus-types.h \ + /usr/include/dbus-1.0/dbus/dbus-errors.h \ + /usr/include/dbus-1.0/dbus/dbus-protocol.h \ + /usr/include/dbus-1.0/dbus/dbus-bus.h \ + /usr/include/dbus-1.0/dbus/dbus-connection.h \ + /usr/include/dbus-1.0/dbus/dbus-memory.h \ + /usr/include/dbus-1.0/dbus/dbus-message.h \ + /usr/include/dbus-1.0/dbus/dbus-shared.h \ + /usr/include/dbus-1.0/dbus/dbus-misc.h \ + /usr/include/dbus-1.0/dbus/dbus-pending-call.h \ + /usr/include/dbus-1.0/dbus/dbus-server.h \ + /usr/include/dbus-1.0/dbus/dbus-signature.h \ + /usr/include/dbus-1.0/dbus/dbus-syntax.h \ + /usr/include/dbus-1.0/dbus/dbus-threads.h include/layout.h: include/dwn.h: include/client.h: include/workspace.h: include/config.h: include/util.h: +include/panel.h: +include/notifications.h: +/usr/include/dbus-1.0/dbus/dbus.h: +/usr/lib/x86_64-linux-gnu/dbus-1.0/include/dbus/dbus-arch-deps.h: +/usr/include/dbus-1.0/dbus/dbus-macros.h: +/usr/include/dbus-1.0/dbus/dbus-address.h: +/usr/include/dbus-1.0/dbus/dbus-types.h: +/usr/include/dbus-1.0/dbus/dbus-errors.h: +/usr/include/dbus-1.0/dbus/dbus-protocol.h: +/usr/include/dbus-1.0/dbus/dbus-bus.h: +/usr/include/dbus-1.0/dbus/dbus-connection.h: +/usr/include/dbus-1.0/dbus/dbus-memory.h: +/usr/include/dbus-1.0/dbus/dbus-message.h: +/usr/include/dbus-1.0/dbus/dbus-shared.h: +/usr/include/dbus-1.0/dbus/dbus-misc.h: +/usr/include/dbus-1.0/dbus/dbus-pending-call.h: +/usr/include/dbus-1.0/dbus/dbus-server.h: +/usr/include/dbus-1.0/dbus/dbus-signature.h: +/usr/include/dbus-1.0/dbus/dbus-syntax.h: +/usr/include/dbus-1.0/dbus/dbus-threads.h: diff --git a/build/layout.o b/build/layout.o index 66377f5..e90ee2f 100644 Binary files a/build/layout.o and b/build/layout.o differ diff --git a/build/main.o b/build/main.o index b747f55..b199557 100644 Binary files a/build/main.o and b/build/main.o differ diff --git a/build/notifications.o b/build/notifications.o index 8496e2f..f14220f 100644 Binary files a/build/notifications.o and b/build/notifications.o differ diff --git a/build/panel.o b/build/panel.o index 3dfc344..ee402a8 100644 Binary files a/build/panel.o and b/build/panel.o differ diff --git a/build/systray.o b/build/systray.o index 6c30bb1..fc76154 100644 Binary files a/build/systray.o and b/build/systray.o differ diff --git a/config/config.example b/config/config.example index 3fae9fd..9e373e4 100644 --- a/config/config.example +++ b/config/config.example @@ -21,11 +21,11 @@ decorations = true # Border width in pixels (default: 0) border_width = 0 -# Title bar height in pixels (default: 24) -title_height = 24 +# Title bar height in pixels (default: 28) +title_height = 28 -# Panel height in pixels (default: 28) -panel_height = 28 +# Panel height in pixels (default: 32) +panel_height = 32 # Gap between windows in pixels (default: 0) gap = 0 diff --git a/site/architecture.html b/site/architecture.html index 323ab30..5f46fba 100644 --- a/site/architecture.html +++ b/site/architecture.html @@ -171,11 +171,31 @@ ai.c Async OpenRouter API integration, Exa semantic search + + News + news.c + News ticker with API integration, scrolling animation, article navigation + Autostart autostart.c XDG Autostart support, .desktop file parsing, concurrent app launch + + Services + services.c + Background service management, process lifecycle control + + + Demo + demo.c + Automated feature demonstration mode, tutorial system + + + API + api.c + WebSocket server, JSON-RPC command handler, remote control interface + Util util.c diff --git a/site/configuration.html b/site/configuration.html index b19b4f0..246cec9 100644 --- a/site/configuration.html +++ b/site/configuration.html @@ -134,27 +134,27 @@ decorations = true border_width - 2 + 0 0-50 - Window border width in pixels + Window border width in pixels (0 for seamless design) title_height - 24 + 28 0-100 Title bar height in pixels panel_height - 28 + 32 0-100 Top/bottom panel height gap - 4 + 0 0-100 - Gap between tiled windows + Gap between tiled windows (0 for edge-to-edge tiling) font @@ -170,11 +170,11 @@ decorations = true
[appearance]
-border_width = 2
+border_width = 0
 title_height = 28
 panel_height = 32
-gap = 8
-font = DejaVu Sans-10
+gap = 0 +font = fixed

[layout] - Layout Behavior

Configure the default layout mode and tiling parameters. @@ -489,11 +489,11 @@ focus_mode = click focus_follow_delay = 100 decorations = true [appearance] -border_width = 2 -title_height = 24 -panel_height = 28 -gap = 6 -font = DejaVu Sans-10 +border_width = 0 +title_height = 28 +panel_height = 32 +gap = 0 +font = fixed [layout] default = tiling master_ratio = 0.55 diff --git a/site/documentation.html b/site/documentation.html index 2501fd8..6c5fa27 100644 --- a/site/documentation.html +++ b/site/documentation.html @@ -131,12 +131,24 @@

Window Decorations

- Each window has a title bar showing its name. The title bar color indicates focus: + DWN features a professional borderless design for maximum screen utilization:

    -
  • Blue title bar - Focused window
  • -
  • Gray title bar - Unfocused window
  • +
  • 0px borders - No visible borders around windows
  • +
  • 0px gaps - Windows tile edge-to-edge without spacing
  • +
  • 28px title bars - Minimal height showing window name and controls
+

+ The title bar color indicates focus: +

+
    +
  • Bright title bar - Focused window
  • +
  • Dim title bar - Unfocused window
  • +
+

+ This seamless design creates a smooth, professional appearance where content takes + center stage. All settings can be customized in ~/.config/dwn/config. +

Interactive Tutorial

DWN includes a built-in interactive tutorial that teaches you essential shortcuts @@ -152,6 +164,23 @@

Start the Tutorial

Press Super + T at any time to start or resume the tutorial.

+

Demo Mode

+

+ DWN includes an automated demo mode that showcases all features without requiring + any interaction. The demo: +

+
    +
  • Automatically demonstrates window management operations
  • +
  • Shows workspace switching and layout changes
  • +
  • Highlights panel features and system tray widgets
  • +
  • Demonstrates AI integration capabilities (if configured)
  • +
  • Displays the complete keyboard shortcut reference
  • +
+
+

Start Demo Mode

+

Press Super + Shift + D to start the demo. + Press the same shortcut again to stop it at any time.

+

Managing Windows

Window Operations

diff --git a/site/features.html b/site/features.html index 9f2bdf6..c388534 100644 --- a/site/features.html +++ b/site/features.html @@ -63,7 +63,7 @@
  • Adjustable master area ratio (0.1 - 0.9)
  • Multiple windows in master area
  • Smart stack arrangement
  • -
  • Configurable gaps between windows
  • +
  • Seamless borderless design (0px borders, 0px gaps)
  • @@ -94,6 +94,21 @@

    Switch layouts instantly with Super + Space. Your window arrangement is preserved when switching back.

    +

    Borderless Design

    +
    +

    DWN employs a professional, seamless aesthetic with zero window borders and zero gaps:

    +
      +
    • 0px borders - No visible borders around windows
    • +
    • 0px gaps - Windows tile edge-to-edge without spacing
    • +
    • 28px title bars - Minimal height for window controls
    • +
    • Maximum screen utilization - Every pixel counts
    • +
    +

    + This creates a smooth, professional appearance where content takes center stage. The focus + remains on your work, not on window decorations. All settings are configurable via + ~/.config/dwn/config if you prefer different values. +

    +
    diff --git a/site/index.html b/site/index.html index 2e4e25d..261b2b3 100644 --- a/site/index.html +++ b/site/index.html @@ -45,7 +45,8 @@

    Modern Window Management for X11

    DWN is a production-ready window manager written in ANSI C with XFCE-like functionality, - powerful tiling layouts, and optional AI integration. Fast, flexible, and fully featured. + powerful tiling layouts, and optional AI integration. Seamless borderless design, zero gaps, + and professional appearance. Fast, flexible, and fully featured.

    Get Started @@ -109,6 +110,24 @@

    Automatic startup of system services and tray applications following the XDG Autostart spec. Works with nm-applet, blueman, and more.

    +
    +
    📰
    +

    News Ticker

    +

    Real-time news feed with scrolling article titles in the panel. Press + Super+Return to open the current article in your browser.

    +
    +
    +
    🎓
    +

    Interactive Learning

    +

    Built-in tutorial system (Super+T) guides you through keyboard shortcuts. + Demo mode (Super+Shift+D) showcases all features automatically.

    +
    +
    +
    📐
    +

    Borderless Design

    +

    Zero window borders and zero gaps for a seamless, professional appearance. + Windows tile edge-to-edge for maximum screen utilization.

    +