style: remove comments from header files
This commit is contained in:
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="hero" style="padding: 8rem 0 4rem;">
|
||||
<div class="container hero-content">
|
||||
@@ -47,7 +46,6 @@
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="alert alert-info" style="margin-bottom: 2rem;">
|
||||
@@ -55,7 +53,6 @@
|
||||
<p style="margin: 0;">AI features are completely optional and require external API keys.
|
||||
DWN works perfectly without them.</p>
|
||||
</div>
|
||||
|
||||
<h2>Overview</h2>
|
||||
<p>
|
||||
DWN integrates with two AI services to provide intelligent desktop assistance:
|
||||
@@ -64,7 +61,6 @@
|
||||
<li><strong>OpenRouter API</strong> - Powers the AI command palette and context analysis</li>
|
||||
<li><strong>Exa API</strong> - Provides semantic web search capabilities</li>
|
||||
</ul>
|
||||
|
||||
<div class="features-grid">
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">🤖</div>
|
||||
@@ -88,14 +84,11 @@
|
||||
<p style="margin-top: 1rem;"><kbd>Super</kbd> + <kbd>Shift</kbd> + <kbd>E</kbd></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Setup OpenRouter -->
|
||||
<h2 id="openrouter" style="margin-top: 4rem;">Setting Up OpenRouter</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
OpenRouter provides access to multiple AI models through a single API.
|
||||
You can use free models or paid ones depending on your needs.
|
||||
</p>
|
||||
|
||||
<div class="steps">
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
@@ -105,7 +98,6 @@
|
||||
and create a free account to get your API key.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<div class="step-content">
|
||||
@@ -118,7 +110,6 @@
|
||||
<pre><code>export OPENROUTER_API_KEY="sk-or-v1-your-key-here"</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<div class="step-content">
|
||||
@@ -136,7 +127,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" style="margin-top: 2rem;">
|
||||
<h3>Recommended Free Models</h3>
|
||||
<div class="table-wrapper">
|
||||
@@ -168,14 +158,11 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AI Command Palette -->
|
||||
<h2 id="command-palette" style="margin-top: 4rem;">AI Command Palette</h2>
|
||||
<p>
|
||||
Press <kbd>Super</kbd> + <kbd>Shift</kbd> + <kbd>A</kbd> to open the command palette.
|
||||
Type natural language commands and press Enter.
|
||||
</p>
|
||||
|
||||
<h3>Supported Commands</h3>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
@@ -215,19 +202,15 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-success" style="margin-top: 1.5rem;">
|
||||
<strong class="alert-title">Pro Tip</strong>
|
||||
<p style="margin: 0;">The AI understands context. You can say "open browser" instead of
|
||||
remembering the exact application name - it will figure out what you mean.</p>
|
||||
</div>
|
||||
|
||||
<!-- Context Analysis -->
|
||||
<h2 id="context" style="margin-top: 4rem;">Context Analysis</h2>
|
||||
<p>
|
||||
Press <kbd>Super</kbd> + <kbd>A</kbd> to see AI-powered analysis of your current workspace.
|
||||
</p>
|
||||
|
||||
<div class="card">
|
||||
<h3>What It Shows</h3>
|
||||
<ul style="padding-left: 1.25rem;">
|
||||
@@ -237,13 +220,10 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
<li><strong>Workspace Summary</strong> - Overview of open applications</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Setup Exa -->
|
||||
<h2 id="exa" style="margin-top: 4rem;">Setting Up Exa Search</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
Exa provides semantic search - finding content based on meaning rather than exact keywords.
|
||||
</p>
|
||||
|
||||
<div class="steps">
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
@@ -253,7 +233,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
and create an account to get your API key.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<div class="step-content">
|
||||
@@ -265,7 +244,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
<pre><code>export EXA_API_KEY="your-exa-key-here"</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<div class="step-content">
|
||||
@@ -274,13 +252,10 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Semantic Search -->
|
||||
<h2 id="search" style="margin-top: 4rem;">Using Semantic Search</h2>
|
||||
<p>
|
||||
Unlike traditional search, Exa understands the meaning of your query.
|
||||
</p>
|
||||
|
||||
<div class="comparison" style="grid-template-columns: repeat(2, 1fr);">
|
||||
<div class="comparison-card">
|
||||
<h3>Traditional Search</h3>
|
||||
@@ -307,7 +282,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 style="margin-top: 2rem;">Search Tips</h3>
|
||||
<ul>
|
||||
<li>Use natural, conversational queries</li>
|
||||
@@ -315,14 +289,11 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
<li>Results appear in a dmenu/rofi list - select to open in browser</li>
|
||||
<li>Search includes articles, documentation, tutorials, and more</li>
|
||||
</ul>
|
||||
|
||||
<!-- Privacy -->
|
||||
<h2 id="privacy" style="margin-top: 4rem;">Privacy Considerations</h2>
|
||||
<div class="alert alert-warning">
|
||||
<strong class="alert-title">Data Sent to External Services</strong>
|
||||
<p style="margin: 0;">When using AI features, the following data is sent to external APIs:</p>
|
||||
</div>
|
||||
|
||||
<div class="table-wrapper" style="margin-top: 1rem;">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -351,7 +322,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<p style="margin-top: 1rem; color: var(--text-muted);">
|
||||
If you're concerned about privacy, you can:
|
||||
</p>
|
||||
@@ -360,10 +330,7 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
<li>Use OpenRouter with privacy-focused models</li>
|
||||
<li>Only use AI features when needed</li>
|
||||
</ul>
|
||||
|
||||
<!-- Troubleshooting -->
|
||||
<h2 id="troubleshooting" style="margin-top: 4rem;">Troubleshooting</h2>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
AI commands don't work - "API key not configured"
|
||||
@@ -380,7 +347,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
Slow responses from AI
|
||||
@@ -392,7 +358,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
Exa search returns no results
|
||||
@@ -404,11 +369,9 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -452,7 +415,6 @@ model = google/gemini-2.0-flash-exp:free</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="hero" style="padding: 8rem 0 4rem;">
|
||||
<div class="container hero-content">
|
||||
@@ -47,7 +46,6 @@
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Overview</h2>
|
||||
@@ -56,7 +54,6 @@
|
||||
A global <code>DWNState</code> singleton manages all state, and the main event loop
|
||||
dispatches X11 events to specialized modules.
|
||||
</p>
|
||||
|
||||
<div class="card" style="margin: 2rem 0;">
|
||||
<h3>Project Statistics</h3>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; text-align: center;">
|
||||
@@ -78,8 +75,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Directory Structure -->
|
||||
<h2 id="structure" style="margin-top: 3rem;">Directory Structure</h2>
|
||||
<div class="code-header">
|
||||
<span>Project Layout</span>
|
||||
@@ -104,8 +99,6 @@
|
||||
├── Makefile # Build system
|
||||
├── CLAUDE.md # AI assistant context
|
||||
└── README.md # Project readme</code></pre>
|
||||
|
||||
<!-- Core Modules -->
|
||||
<h2 id="modules" style="margin-top: 3rem;">Core Modules</h2>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
@@ -185,8 +178,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Module Dependencies -->
|
||||
<h2 id="dependencies" style="margin-top: 3rem;">Module Dependencies</h2>
|
||||
<div class="card">
|
||||
<pre style="margin: 0; background: transparent; border: none; padding: 0;"><code>main.c (orchestrator)
|
||||
@@ -208,14 +199,11 @@
|
||||
└── keys.c
|
||||
└── config.c</code></pre>
|
||||
</div>
|
||||
|
||||
<!-- Global State -->
|
||||
<h2 id="state" style="margin-top: 3rem;">Global State (DWNState)</h2>
|
||||
<p>
|
||||
All window manager state is centralized in a single <code>DWNState</code> structure.
|
||||
This simplifies state management and makes the codebase easier to understand.
|
||||
</p>
|
||||
|
||||
<div class="code-header">
|
||||
<span>include/dwn.h (simplified)</span>
|
||||
</div>
|
||||
@@ -223,32 +211,23 @@
|
||||
Display *display; // X11 connection
|
||||
Window root; // Root window
|
||||
int screen; // Default screen
|
||||
|
||||
Client *clients[MAX_CLIENTS]; // All managed windows
|
||||
int client_count;
|
||||
|
||||
Workspace workspaces[MAX_WORKSPACES]; // Virtual desktops
|
||||
int current_workspace;
|
||||
|
||||
Panel top_panel;
|
||||
Panel bottom_panel;
|
||||
|
||||
Config config; // User configuration
|
||||
KeyBinding keys[MAX_KEYBINDINGS];
|
||||
|
||||
// EWMH atoms
|
||||
Atom atoms[ATOM_COUNT];
|
||||
} DWNState;
|
||||
|
||||
extern DWNState *dwn; // Global singleton</code></pre>
|
||||
|
||||
<!-- Event Loop -->
|
||||
<h2 id="events" style="margin-top: 3rem;">Event Loop</h2>
|
||||
<p>
|
||||
DWN uses a traditional X11 event loop with XNextEvent. Events are dispatched
|
||||
to appropriate handlers based on type.
|
||||
</p>
|
||||
|
||||
<div class="code-header">
|
||||
<span>main.c (simplified)</span>
|
||||
</div>
|
||||
@@ -256,11 +235,9 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
dwn_init(); // Initialize X11, atoms, config
|
||||
setup_keybindings(); // Register keyboard shortcuts
|
||||
setup_panels(); // Create panel windows
|
||||
|
||||
XEvent event;
|
||||
while (running) {
|
||||
XNextEvent(dwn->display, &event);
|
||||
|
||||
switch (event.type) {
|
||||
case MapRequest:
|
||||
handle_map_request(&event.xmaprequest);
|
||||
@@ -280,12 +257,9 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
// ... more event types
|
||||
}
|
||||
}
|
||||
|
||||
dwn_cleanup();
|
||||
return 0;
|
||||
}</code></pre>
|
||||
|
||||
<!-- Key Constants -->
|
||||
<h2 id="constants" style="margin-top: 3rem;">Key Constants</h2>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
@@ -325,8 +299,6 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Coding Conventions -->
|
||||
<h2 id="conventions" style="margin-top: 3rem;">Coding Conventions</h2>
|
||||
<div class="features-grid" style="grid-template-columns: repeat(2, 1fr);">
|
||||
<div class="card">
|
||||
@@ -348,33 +320,26 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="code-header" style="margin-top: 1.5rem;">
|
||||
<span>Example Function</span>
|
||||
</div>
|
||||
<pre><code>void client_focus(Client *c) {
|
||||
if (!c) return;
|
||||
|
||||
// Unfocus previous
|
||||
if (dwn->focused && dwn->focused != c) {
|
||||
client_unfocus(dwn->focused);
|
||||
}
|
||||
|
||||
dwn->focused = c;
|
||||
XSetInputFocus(dwn->display, c->window, RevertToPointerRoot, CurrentTime);
|
||||
XRaiseWindow(dwn->display, c->frame);
|
||||
|
||||
decorations_update(c);
|
||||
atoms_set_active_window(c->window);
|
||||
}</code></pre>
|
||||
|
||||
<!-- EWMH/ICCCM -->
|
||||
<h2 id="protocols" style="margin-top: 3rem;">EWMH/ICCCM Support</h2>
|
||||
<p>
|
||||
DWN implements key Extended Window Manager Hints and ICCCM protocols
|
||||
for compatibility with modern applications.
|
||||
</p>
|
||||
|
||||
<div class="features-grid" style="grid-template-columns: repeat(2, 1fr);">
|
||||
<div class="card">
|
||||
<h3>EWMH Atoms</h3>
|
||||
@@ -407,13 +372,10 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Build System -->
|
||||
<h2 id="build" style="margin-top: 3rem;">Build System</h2>
|
||||
<p>
|
||||
DWN uses a simple Makefile-based build system with pkg-config for dependency detection.
|
||||
</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -467,13 +429,10 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Contributing -->
|
||||
<h2 id="contributing" style="margin-top: 3rem;">Contributing</h2>
|
||||
<p>
|
||||
Contributions are welcome! Here's how to get started:
|
||||
</p>
|
||||
|
||||
<div class="steps">
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
@@ -511,11 +470,9 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -559,7 +516,6 @@ extern DWNState *dwn; // Global singleton</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="hero" style="padding: 8rem 0 4rem;">
|
||||
<div class="container hero-content">
|
||||
@@ -47,7 +46,6 @@
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Configuration File</h2>
|
||||
@@ -55,19 +53,15 @@
|
||||
DWN reads its configuration from <code>~/.config/dwn/config</code> using an INI-style format.
|
||||
Changes take effect on restart (or you can reload in a future version).
|
||||
</p>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<strong class="alert-title">First Run</strong>
|
||||
<p style="margin: 0;">DWN creates a default configuration file on first run if one doesn't exist.
|
||||
You can also copy the example config from the source repository.</p>
|
||||
</div>
|
||||
|
||||
<!-- General Section -->
|
||||
<h2 id="general" style="margin-top: 3rem;">[general] - Core Settings</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
Basic behavior settings for applications and focus handling.
|
||||
</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -106,7 +100,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="code-header">
|
||||
<span>Example</span>
|
||||
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
||||
@@ -117,13 +110,10 @@ launcher = rofi -show run
|
||||
file_manager = nautilus
|
||||
focus_mode = click
|
||||
decorations = true</code></pre>
|
||||
|
||||
<!-- Appearance Section -->
|
||||
<h2 id="appearance" style="margin-top: 3rem;">[appearance] - Visual Settings</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
Control the visual appearance of windows, panels, and gaps.
|
||||
</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -168,7 +158,6 @@ decorations = true</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="code-header">
|
||||
<span>Example</span>
|
||||
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
||||
@@ -179,13 +168,10 @@ title_height = 28
|
||||
panel_height = 32
|
||||
gap = 8
|
||||
font = DejaVu Sans-10</code></pre>
|
||||
|
||||
<!-- Layout Section -->
|
||||
<h2 id="layout" style="margin-top: 3rem;">[layout] - Layout Behavior</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
Configure the default layout mode and tiling parameters.
|
||||
</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -218,7 +204,6 @@ font = DejaVu Sans-10</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="code-header">
|
||||
<span>Example</span>
|
||||
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
||||
@@ -227,13 +212,10 @@ font = DejaVu Sans-10</code></pre>
|
||||
default = tiling
|
||||
master_ratio = 0.60
|
||||
master_count = 1</code></pre>
|
||||
|
||||
<!-- Panels Section -->
|
||||
<h2 id="panels" style="margin-top: 3rem;">[panels] - Panel Visibility</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
Control which panels are displayed.
|
||||
</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -257,7 +239,6 @@ master_count = 1</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="code-header">
|
||||
<span>Example - Minimal Setup</span>
|
||||
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
||||
@@ -265,13 +246,10 @@ master_count = 1</code></pre>
|
||||
<pre><code>[panels]
|
||||
top = true
|
||||
bottom = false</code></pre>
|
||||
|
||||
<!-- Colors Section -->
|
||||
<h2 id="colors" style="margin-top: 3rem;">[colors] - Color Scheme</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
Customize all colors using hex format (#RRGGBB).
|
||||
</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -350,7 +328,6 @@ bottom = false</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="code-header">
|
||||
<span>Example - Nord Theme</span>
|
||||
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
||||
@@ -369,13 +346,10 @@ border_focused = #88c0d0
|
||||
border_unfocused = #3b4252
|
||||
notification_bg = #3b4252
|
||||
notification_fg = #eceff4</code></pre>
|
||||
|
||||
<!-- AI Section -->
|
||||
<h2 id="ai" style="margin-top: 3rem;">[ai] - AI Integration</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1.5rem;">
|
||||
Configure AI features. See <a href="ai-features.html">AI Features</a> for full setup instructions.
|
||||
</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -400,7 +374,6 @@ notification_fg = #eceff4</code></pre>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="code-header">
|
||||
<span>Example</span>
|
||||
<button class="copy-btn" onclick="copyCode(this)">Copy</button>
|
||||
@@ -409,14 +382,11 @@ notification_fg = #eceff4</code></pre>
|
||||
model = google/gemini-2.0-flash-exp:free
|
||||
openrouter_api_key = sk-or-v1-your-key-here
|
||||
exa_api_key = your-exa-key-here</code></pre>
|
||||
|
||||
<div class="alert alert-warning" style="margin-top: 1rem;">
|
||||
<strong class="alert-title">Security Note</strong>
|
||||
<p style="margin: 0;">For better security, use environment variables instead of storing API keys in the config file:
|
||||
<code>export OPENROUTER_API_KEY=sk-or-v1-...</code></p>
|
||||
</div>
|
||||
|
||||
<!-- Complete Example -->
|
||||
<h2 style="margin-top: 3rem;">Complete Configuration Example</h2>
|
||||
<div class="code-header">
|
||||
<span>~/.config/dwn/config</span>
|
||||
@@ -424,30 +394,25 @@ exa_api_key = your-exa-key-here</code></pre>
|
||||
</div>
|
||||
<pre><code># DWN Window Manager Configuration
|
||||
# https://dwn.github.io
|
||||
|
||||
[general]
|
||||
terminal = alacritty
|
||||
launcher = rofi -show drun
|
||||
file_manager = thunar
|
||||
focus_mode = click
|
||||
decorations = true
|
||||
|
||||
[appearance]
|
||||
border_width = 2
|
||||
title_height = 24
|
||||
panel_height = 28
|
||||
gap = 6
|
||||
font = DejaVu Sans-10
|
||||
|
||||
[layout]
|
||||
default = tiling
|
||||
master_ratio = 0.55
|
||||
master_count = 1
|
||||
|
||||
[panels]
|
||||
top = true
|
||||
bottom = true
|
||||
|
||||
[colors]
|
||||
panel_bg = #1a1a2e
|
||||
panel_fg = #e0e0e0
|
||||
@@ -462,15 +427,12 @@ border_focused = #4a90d9
|
||||
border_unfocused = #333333
|
||||
notification_bg = #2a2a3e
|
||||
notification_fg = #ffffff
|
||||
|
||||
[ai]
|
||||
model = google/gemini-2.0-flash-exp:free
|
||||
# API keys via environment variables recommended</code></pre>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -514,7 +476,6 @@ model = google/gemini-2.0-flash-exp:free
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<div class="docs-layout container">
|
||||
<aside class="docs-sidebar">
|
||||
<ul>
|
||||
@@ -70,23 +69,19 @@
|
||||
</li>
|
||||
</ul>
|
||||
</aside>
|
||||
|
||||
<main class="docs-content">
|
||||
<h1 id="introduction">Getting Started with DWN</h1>
|
||||
<p class="lead">
|
||||
Learn the fundamentals of DWN and become productive in minutes.
|
||||
</p>
|
||||
|
||||
<h2 id="first-steps">First Steps</h2>
|
||||
<p>
|
||||
After <a href="installation.html">installing DWN</a> and starting your session,
|
||||
you'll see a clean desktop with two panels: a top panel with workspace indicators,
|
||||
taskbar, and system tray, and a bottom panel showing the clock.
|
||||
</p>
|
||||
|
||||
<h3>Opening Your First Application</h3>
|
||||
<p>Start by launching a terminal and application launcher:</p>
|
||||
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead>
|
||||
@@ -115,28 +110,23 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info">
|
||||
<strong class="alert-title">Tip: Run the Tutorial</strong>
|
||||
<p style="margin: 0;">Press <kbd>Super</kbd> + <kbd>T</kbd> to start an interactive
|
||||
tutorial that will guide you through all essential shortcuts.</p>
|
||||
</div>
|
||||
|
||||
<h2 id="basic-concepts">Basic Concepts</h2>
|
||||
|
||||
<h3>The Super Key</h3>
|
||||
<p>
|
||||
Most DWN shortcuts use the <kbd>Super</kbd> key (often the Windows key or Command key).
|
||||
This keeps shortcuts separate from application shortcuts that typically use
|
||||
<kbd>Ctrl</kbd> or <kbd>Alt</kbd>.
|
||||
</p>
|
||||
|
||||
<h3>Focus Model</h3>
|
||||
<p>
|
||||
By default, DWN uses "click to focus" - you click on a window to focus it.
|
||||
You can change this to "focus follows mouse" (sloppy focus) in the configuration.
|
||||
</p>
|
||||
|
||||
<h3>Window Decorations</h3>
|
||||
<p>
|
||||
Each window has a title bar showing its name. The title bar color indicates focus:
|
||||
@@ -145,7 +135,6 @@
|
||||
<li><strong>Blue title bar</strong> - Focused window</li>
|
||||
<li><strong>Gray title bar</strong> - Unfocused window</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="tutorial">Interactive Tutorial</h2>
|
||||
<p>
|
||||
DWN includes a built-in interactive tutorial that teaches you essential shortcuts
|
||||
@@ -157,14 +146,11 @@
|
||||
<li>Automatically advances when you complete each step</li>
|
||||
<li>Covers all essential shortcuts from basic to advanced</li>
|
||||
</ul>
|
||||
|
||||
<div class="card">
|
||||
<h3>Start the Tutorial</h3>
|
||||
<p>Press <kbd>Super</kbd> + <kbd>T</kbd> at any time to start or resume the tutorial.</p>
|
||||
</div>
|
||||
|
||||
<h2 id="windows">Managing Windows</h2>
|
||||
|
||||
<h3>Window Operations</h3>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
@@ -202,20 +188,17 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>Moving and Resizing</h3>
|
||||
<p>In floating mode, you can move and resize windows with the mouse:</p>
|
||||
<ul>
|
||||
<li><strong>Move</strong> - Click and drag the title bar</li>
|
||||
<li><strong>Resize</strong> - Drag any window edge or corner</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="workspaces">Using Workspaces</h2>
|
||||
<p>
|
||||
DWN provides 9 virtual workspaces to organize your windows. You can see which
|
||||
workspaces are active in the top panel.
|
||||
</p>
|
||||
|
||||
<h3>Workspace Navigation</h3>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
@@ -245,7 +228,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>Workspace Organization Tips</h3>
|
||||
<ul>
|
||||
<li><strong>Workspace 1</strong> - Main work (editor, terminal)</li>
|
||||
@@ -253,13 +235,11 @@
|
||||
<li><strong>Workspace 3</strong> - Communication (email, chat)</li>
|
||||
<li><strong>Workspace 4-9</strong> - Project-specific contexts</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="layouts">Layout Modes</h2>
|
||||
<p>
|
||||
DWN supports three layout modes. Press <kbd>Super</kbd> + <kbd>Space</kbd> to cycle
|
||||
through them.
|
||||
</p>
|
||||
|
||||
<div class="features-grid" style="grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 1.5rem 0;">
|
||||
<div class="card" style="padding: 1.5rem;">
|
||||
<h4>Tiling</h4>
|
||||
@@ -283,7 +263,6 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>Tiling Layout Controls</h3>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
@@ -313,9 +292,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h2 id="panels">Panels & System Tray</h2>
|
||||
|
||||
<h3>Top Panel</h3>
|
||||
<p>The top panel contains:</p>
|
||||
<ul>
|
||||
@@ -323,7 +300,6 @@
|
||||
<li><strong>Taskbar</strong> - Shows windows on current workspace</li>
|
||||
<li><strong>System tray</strong> - Battery, volume, WiFi (see below)</li>
|
||||
</ul>
|
||||
|
||||
<h3>System Tray</h3>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
@@ -357,7 +333,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>Bottom Panel</h3>
|
||||
<p>
|
||||
The bottom panel shows the current time and a scrolling news ticker. Navigate
|
||||
@@ -365,7 +340,6 @@
|
||||
the current article with <kbd>Super</kbd> + <kbd>Return</kbd>. Both panels can
|
||||
be hidden in the configuration if you prefer a minimal setup.
|
||||
</p>
|
||||
|
||||
<h2>Next Steps</h2>
|
||||
<p>Now that you know the basics, explore these topics:</p>
|
||||
<ul>
|
||||
@@ -375,7 +349,6 @@
|
||||
</ul>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -419,7 +392,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="hero" style="padding: 8rem 0 4rem;">
|
||||
<div class="container hero-content">
|
||||
@@ -47,8 +46,6 @@
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Window Management -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Window Management</h2>
|
||||
@@ -56,7 +53,6 @@
|
||||
DWN provides flexible window management that adapts to your workflow, whether you prefer
|
||||
the precision of tiling or the freedom of floating windows.
|
||||
</p>
|
||||
|
||||
<div class="features-grid">
|
||||
<div class="card">
|
||||
<h3><span class="card-icon">☷</span> Tiling Layout</h3>
|
||||
@@ -92,7 +88,6 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" style="margin-top: 2rem;">
|
||||
<strong class="alert-title">Pro Tip</strong>
|
||||
<p style="margin: 0;">Switch layouts instantly with <kbd>Super</kbd> + <kbd>Space</kbd>.
|
||||
@@ -100,8 +95,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Workspaces -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2>Virtual Workspaces</h2>
|
||||
@@ -109,7 +102,6 @@
|
||||
Nine virtual desktops give you unlimited room to organize your work.
|
||||
Each workspace maintains its own window state and layout preferences.
|
||||
</p>
|
||||
|
||||
<div class="features-grid" style="grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));">
|
||||
<div class="feature-card">
|
||||
<div class="feature-icon">1-9</div>
|
||||
@@ -135,8 +127,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Panel & System Tray -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Panels & System Tray</h2>
|
||||
@@ -144,7 +134,6 @@
|
||||
Built-in panels provide essential information and quick access to common functions
|
||||
without needing external tools or status bars.
|
||||
</p>
|
||||
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 2rem;">
|
||||
<div class="card">
|
||||
<h3>Top Panel</h3>
|
||||
@@ -165,7 +154,6 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3 style="margin-top: 3rem; margin-bottom: 1.5rem;">News Ticker</h3>
|
||||
<div class="card">
|
||||
<p>The bottom panel includes a scrolling news ticker that displays headlines from a news feed.
|
||||
@@ -180,7 +168,6 @@
|
||||
at 80 pixels per second keeps you informed without distraction.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<h3 style="margin-top: 3rem; margin-bottom: 1.5rem;">System Tray Features</h3>
|
||||
<div class="features-grid">
|
||||
<div class="card">
|
||||
@@ -213,8 +200,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Notifications -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2>Notification System</h2>
|
||||
@@ -222,7 +207,6 @@
|
||||
Built-in D-Bus notification daemon following freedesktop.org standards.
|
||||
No need for external notification tools like dunst or notify-osd.
|
||||
</p>
|
||||
|
||||
<div class="features-grid" style="grid-template-columns: repeat(2, 1fr);">
|
||||
<div class="card">
|
||||
<h3>Standards Compliant</h3>
|
||||
@@ -235,7 +219,6 @@
|
||||
Notifications match your overall color scheme automatically.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-success" style="margin-top: 2rem;">
|
||||
<strong class="alert-title">Capacity</strong>
|
||||
<p style="margin: 0;">DWN can display up to 32 notifications simultaneously,
|
||||
@@ -243,8 +226,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- AI Features Preview -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>AI Integration</h2>
|
||||
@@ -252,7 +233,6 @@
|
||||
Optional AI features powered by OpenRouter API and Exa semantic search.
|
||||
Control your desktop with natural language and get intelligent assistance.
|
||||
</p>
|
||||
|
||||
<div class="features-grid">
|
||||
<div class="card">
|
||||
<h3>🤖 AI Command Palette</h3>
|
||||
@@ -275,15 +255,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- EWMH/ICCCM -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2>Standards Compliance</h2>
|
||||
<p style="color: var(--text-muted); max-width: 700px; margin-bottom: 2rem;">
|
||||
DWN implements EWMH and ICCCM protocols for maximum compatibility with X11 applications.
|
||||
</p>
|
||||
|
||||
<div class="features-grid" style="grid-template-columns: repeat(2, 1fr);">
|
||||
<div class="card">
|
||||
<h3>EWMH Support</h3>
|
||||
@@ -310,8 +287,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Technical Specs -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Technical Specifications</h2>
|
||||
@@ -361,8 +336,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA -->
|
||||
<section class="section section-alt">
|
||||
<div class="container" style="text-align: center;">
|
||||
<h2>Ready to Try DWN?</h2>
|
||||
@@ -376,7 +349,6 @@
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -420,7 +392,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+1
-73
@@ -38,9 +38,7 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<!-- Hero Section -->
|
||||
<section class="hero">
|
||||
<div class="container hero-content">
|
||||
<h1>Modern Window Management for X11</h1>
|
||||
@@ -54,8 +52,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Key Features Overview -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 style="text-align: center; margin-bottom: 1rem;">Why Choose DWN?</h2>
|
||||
@@ -103,8 +99,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Stats -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<div class="stats">
|
||||
@@ -127,8 +121,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Quick Start -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 style="text-align: center;">Get Up and Running in Minutes</h2>
|
||||
@@ -136,7 +128,6 @@
|
||||
DWN is designed for easy installation and immediate productivity.
|
||||
Build from source or use your distribution's package manager.
|
||||
</p>
|
||||
|
||||
<div class="card" style="max-width: 700px; margin: 0 auto;">
|
||||
<div class="code-header">
|
||||
<span>Terminal</span>
|
||||
@@ -145,25 +136,19 @@
|
||||
<pre><code># Clone the repository
|
||||
git clone https://retoor.molodetz.nl/retoor/dwn.git
|
||||
cd dwn
|
||||
|
||||
# Install dependencies (auto-detects your distro)
|
||||
make deps
|
||||
|
||||
# Build and install
|
||||
make
|
||||
sudo make install
|
||||
|
||||
# Add to your .xinitrc
|
||||
echo "exec dwn" >> ~/.xinitrc</code></pre>
|
||||
</div>
|
||||
|
||||
<p style="text-align: center; margin-top: 2rem;">
|
||||
<a href="installation.html" class="btn btn-primary">Full Installation Guide</a>
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Screenshots Preview -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2 style="text-align: center;">See DWN in Action</h2>
|
||||
@@ -192,8 +177,6 @@ echo "exec dwn" >> ~/.xinitrc</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Comparison -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2 style="text-align: center;">How DWN Compares</h2>
|
||||
@@ -239,62 +222,9 @@ echo "exec dwn" >> ~/.xinitrc</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Testimonials -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2 style="text-align: center;">What Users Say</h2>
|
||||
<div class="testimonials">
|
||||
<div class="testimonial">
|
||||
<p class="testimonial-text">
|
||||
"Finally, a window manager that doesn't make me choose between
|
||||
productivity and usability. DWN just works."
|
||||
</p>
|
||||
<div class="testimonial-author">
|
||||
<div class="testimonial-avatar">JD</div>
|
||||
<div class="testimonial-info">
|
||||
<strong>John Developer</strong>
|
||||
<span>Senior Software Engineer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="testimonial">
|
||||
<p class="testimonial-text">
|
||||
"The AI command palette changed how I interact with my desktop.
|
||||
It's like having an assistant for window management."
|
||||
</p>
|
||||
<div class="testimonial-author">
|
||||
<div class="testimonial-avatar">SA</div>
|
||||
<div class="testimonial-info">
|
||||
<strong>Sarah Admin</strong>
|
||||
<span>System Administrator</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="testimonial">
|
||||
<p class="testimonial-text">
|
||||
"Coming from i3, the learning curve was minimal. The built-in
|
||||
tutorial had me productive in under 10 minutes."
|
||||
</p>
|
||||
<div class="testimonial-author">
|
||||
<div class="testimonial-avatar">ML</div>
|
||||
<div class="testimonial-info">
|
||||
<strong>Mike Linux</strong>
|
||||
<span>DevOps Engineer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA Section -->
|
||||
<section class="section">
|
||||
<div class="container" style="text-align: center;">
|
||||
<h2>Ready to Transform Your Desktop?</h2>
|
||||
<p style="color: var(--text-muted); max-width: 500px; margin: 0 auto 2rem;">
|
||||
Join thousands of developers and power users who have made DWN their window manager of choice.
|
||||
</p>
|
||||
<h2>Ready to Try DWN?</h2>
|
||||
<div class="hero-buttons" style="justify-content: center;">
|
||||
<a href="installation.html" class="btn btn-primary btn-lg">Install DWN</a>
|
||||
<a href="documentation.html" class="btn btn-secondary btn-lg">Read the Docs</a>
|
||||
@@ -302,7 +232,6 @@ echo "exec dwn" >> ~/.xinitrc</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -346,7 +275,6 @@ echo "exec dwn" >> ~/.xinitrc</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="hero" style="padding: 8rem 0 4rem;">
|
||||
<div class="container hero-content">
|
||||
@@ -47,15 +46,12 @@
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Requirements -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Requirements</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 2rem;">
|
||||
DWN requires X11 and a few common libraries. Most Linux distributions include these by default.
|
||||
</p>
|
||||
|
||||
<div class="card">
|
||||
<h3>Required Dependencies</h3>
|
||||
<div class="table-wrapper" style="margin-top: 1rem;">
|
||||
@@ -114,15 +110,12 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Quick Install -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2>Quick Installation</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 2rem;">
|
||||
The fastest way to get started. Our build system auto-detects your distribution.
|
||||
</p>
|
||||
|
||||
<div class="steps">
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
@@ -137,7 +130,6 @@
|
||||
cd dwn</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<div class="step-content">
|
||||
@@ -153,7 +145,6 @@ cd dwn</code></pre>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<div class="step-content">
|
||||
@@ -166,7 +157,6 @@ cd dwn</code></pre>
|
||||
<pre><code>make</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">4</div>
|
||||
<div class="step-content">
|
||||
@@ -182,7 +172,6 @@ cd dwn</code></pre>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">5</div>
|
||||
<div class="step-content">
|
||||
@@ -198,19 +187,15 @@ cd dwn</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Distribution-specific -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Distribution-Specific Instructions</h2>
|
||||
|
||||
<div class="tabs">
|
||||
<button class="tab active" onclick="showTab('debian')">Debian/Ubuntu</button>
|
||||
<button class="tab" onclick="showTab('fedora')">Fedora</button>
|
||||
<button class="tab" onclick="showTab('arch')">Arch Linux</button>
|
||||
<button class="tab" onclick="showTab('void')">Void Linux</button>
|
||||
</div>
|
||||
|
||||
<div id="debian" class="tab-content active">
|
||||
<h3>Debian / Ubuntu / Linux Mint</h3>
|
||||
<div class="code-header">
|
||||
@@ -230,14 +215,12 @@ sudo apt install -y \
|
||||
libdbus-1-dev \
|
||||
libcurl4-openssl-dev \
|
||||
pkg-config
|
||||
|
||||
# Build and install
|
||||
git clone https://retoor.molodetz.nl/retoor/dwn.git
|
||||
cd dwn
|
||||
make
|
||||
sudo make install</code></pre>
|
||||
</div>
|
||||
|
||||
<div id="fedora" class="tab-content">
|
||||
<h3>Fedora / RHEL / CentOS</h3>
|
||||
<div class="code-header">
|
||||
@@ -257,14 +240,12 @@ sudo dnf install -y \
|
||||
dbus-devel \
|
||||
libcurl-devel \
|
||||
pkg-config
|
||||
|
||||
# Build and install
|
||||
git clone https://retoor.molodetz.nl/retoor/dwn.git
|
||||
cd dwn
|
||||
make
|
||||
sudo make install</code></pre>
|
||||
</div>
|
||||
|
||||
<div id="arch" class="tab-content">
|
||||
<h3>Arch Linux / Manjaro</h3>
|
||||
<div class="code-header">
|
||||
@@ -283,7 +264,6 @@ sudo pacman -S --needed \
|
||||
dbus \
|
||||
curl \
|
||||
pkg-config
|
||||
|
||||
# Build and install
|
||||
git clone https://retoor.molodetz.nl/retoor/dwn.git
|
||||
cd dwn
|
||||
@@ -295,7 +275,6 @@ sudo make install</code></pre>
|
||||
<code>yay -S dwn-git</code></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="void" class="tab-content">
|
||||
<h3>Void Linux</h3>
|
||||
<div class="code-header">
|
||||
@@ -314,7 +293,6 @@ sudo xbps-install -S \
|
||||
dbus-devel \
|
||||
libcurl-devel \
|
||||
pkg-config
|
||||
|
||||
# Build and install
|
||||
git clone https://retoor.molodetz.nl/retoor/dwn.git
|
||||
cd dwn
|
||||
@@ -323,15 +301,12 @@ sudo make install</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Session Setup -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2>Session Setup</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 2rem;">
|
||||
Configure your display manager or xinit to start DWN.
|
||||
</p>
|
||||
|
||||
<div class="features-grid" style="grid-template-columns: repeat(2, 1fr);">
|
||||
<div class="card">
|
||||
<h3>Using xinit / startx</h3>
|
||||
@@ -342,10 +317,8 @@ sudo make install</code></pre>
|
||||
</div>
|
||||
<pre><code># Optional: set display settings
|
||||
xrandr --output DP-1 --mode 2560x1440
|
||||
|
||||
# Optional: set wallpaper
|
||||
feh --bg-fill ~/wallpaper.jpg
|
||||
|
||||
# Start DWN
|
||||
exec dwn</code></pre>
|
||||
<p style="margin-top: 1rem; font-size: 0.875rem; color: var(--text-muted);">
|
||||
@@ -372,15 +345,12 @@ DesktopNames=DWN</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Testing -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Testing in a Nested X Server</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 2rem;">
|
||||
Test DWN without leaving your current session using Xephyr.
|
||||
</p>
|
||||
|
||||
<div class="card">
|
||||
<h3>Using make run</h3>
|
||||
<p>The easiest way to test DWN safely:</p>
|
||||
@@ -392,14 +362,12 @@ DesktopNames=DWN</code></pre>
|
||||
# Debian/Ubuntu: sudo apt install xserver-xephyr
|
||||
# Fedora: sudo dnf install xorg-x11-server-Xephyr
|
||||
# Arch: sudo pacman -S xorg-server-xephyr
|
||||
|
||||
# Run DWN in a nested window
|
||||
make run</code></pre>
|
||||
<p style="margin-top: 1rem; color: var(--text-muted);">
|
||||
This opens a 1280x720 window running DWN. Perfect for experimenting with configuration changes.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="card" style="margin-top: 1.5rem;">
|
||||
<h3>Manual Xephyr Setup</h3>
|
||||
<p>For more control over the test environment:</p>
|
||||
@@ -409,21 +377,16 @@ make run</code></pre>
|
||||
</div>
|
||||
<pre><code># Start Xephyr on display :1
|
||||
Xephyr :1 -screen 1920x1080 &
|
||||
|
||||
# Run DWN on that display
|
||||
DISPLAY=:1 ./dwn
|
||||
|
||||
# Open a terminal in the test environment
|
||||
DISPLAY=:1 xterm &</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Post-install -->
|
||||
<section class="section section-alt">
|
||||
<div class="container">
|
||||
<h2>Post-Installation</h2>
|
||||
|
||||
<div class="steps">
|
||||
<div class="step">
|
||||
<div class="step-number">1</div>
|
||||
@@ -437,7 +400,6 @@ DISPLAY=:1 xterm &</code></pre>
|
||||
<pre><code>mkdir -p ~/.config/dwn</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">2</div>
|
||||
<div class="step-content">
|
||||
@@ -446,7 +408,6 @@ DISPLAY=:1 xterm &</code></pre>
|
||||
that will teach you all the essential shortcuts.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">3</div>
|
||||
<div class="step-content">
|
||||
@@ -454,7 +415,6 @@ DISPLAY=:1 xterm &</code></pre>
|
||||
<p>Press <kbd>Super</kbd> + <kbd>S</kbd> to see a complete list of keyboard shortcuts.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<div class="step-number">4</div>
|
||||
<div class="step-content">
|
||||
@@ -465,12 +425,9 @@ DISPLAY=:1 xterm &</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Troubleshooting -->
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<h2>Troubleshooting</h2>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
DWN doesn't start - "cannot open display"
|
||||
@@ -486,7 +443,6 @@ DISPLAY=:1 xterm &</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
Build fails - "pkg-config: command not found"
|
||||
@@ -500,7 +456,6 @@ sudo pacman -S pkg-config # Arch</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
Missing header files during build
|
||||
@@ -513,7 +468,6 @@ sudo pacman -S pkg-config # Arch</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
Keyboard shortcuts don't work
|
||||
@@ -529,7 +483,6 @@ sudo pacman -S pkg-config # Arch</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<button class="faq-question" onclick="toggleFaq(this)">
|
||||
Fonts look bad or missing
|
||||
@@ -545,8 +498,6 @@ sudo dnf install dejavu-fonts-all liberation-fonts # Fedora</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA -->
|
||||
<section class="section section-alt">
|
||||
<div class="container" style="text-align: center;">
|
||||
<h2>Installation Complete?</h2>
|
||||
@@ -560,7 +511,6 @@ sudo dnf install dejavu-fonts-all liberation-fonts # Fedora</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -604,7 +554,6 @@ sudo dnf install dejavu-fonts-all liberation-fonts # Fedora</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="hero" style="padding: 8rem 0 4rem;">
|
||||
<div class="container hero-content">
|
||||
@@ -48,14 +47,11 @@
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section">
|
||||
<div class="container">
|
||||
<div class="search-box">
|
||||
<input type="text" id="shortcut-search" placeholder="Search shortcuts..." onkeyup="filterShortcuts()">
|
||||
</div>
|
||||
|
||||
<!-- Application Launchers -->
|
||||
<h2 id="launchers">Application Launchers</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="shortcuts-table">
|
||||
@@ -89,8 +85,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Window Management -->
|
||||
<h2 id="windows">Window Management</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="shortcuts-table">
|
||||
@@ -128,8 +122,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Workspace Navigation -->
|
||||
<h2 id="workspaces">Workspace Navigation</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="shortcuts-table">
|
||||
@@ -223,8 +215,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Layout Control -->
|
||||
<h2 id="layouts">Layout Control</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="shortcuts-table">
|
||||
@@ -258,8 +248,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- AI Features -->
|
||||
<h2 id="ai">AI Features</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1rem;">
|
||||
These shortcuts require API keys to be configured. See <a href="ai-features.html">AI Features</a> for setup.
|
||||
@@ -288,8 +276,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- News Ticker -->
|
||||
<h2 id="news">News Ticker</h2>
|
||||
<p style="color: var(--text-muted); margin-bottom: 1rem;">
|
||||
Navigate the scrolling news ticker displayed in the bottom panel.
|
||||
@@ -318,8 +304,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Help & System -->
|
||||
<h2 id="system">Help & System</h2>
|
||||
<div class="table-wrapper">
|
||||
<table class="shortcuts-table">
|
||||
@@ -345,12 +329,9 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Printable Reference -->
|
||||
<div class="card" style="margin-top: 3rem;">
|
||||
<h3>Printable Quick Reference</h3>
|
||||
<p>Essential shortcuts to memorize when starting with DWN:</p>
|
||||
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem; margin-top: 1.5rem;">
|
||||
<div>
|
||||
<h4 style="color: var(--primary); margin-bottom: 0.75rem;">Must Know</h4>
|
||||
@@ -397,7 +378,6 @@
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="footer-grid">
|
||||
@@ -441,7 +421,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user