build: add -ldl linker flag, recursive source discovery, and API test targets to Makefile
This commit is contained in:
+113
-3
@@ -13,7 +13,7 @@
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-header">
|
||||
<h1>DWN</h1>
|
||||
<span class="version">v1.0.0</span>
|
||||
<span class="version">v2.0.0</span>
|
||||
</div>
|
||||
|
||||
<div class="search-box">
|
||||
@@ -47,6 +47,8 @@
|
||||
<div class="nav-section">
|
||||
<div class="nav-section-title">Advanced</div>
|
||||
<a href="architecture.html" class="nav-link">Architecture</a>
|
||||
<a href="abstraction-layer.html" class="nav-link">Abstraction Layer</a>
|
||||
<a href="plugin-development.html" class="nav-link">Plugin Development</a>
|
||||
<a href="building.html" class="nav-link">Building from Source</a>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -63,6 +65,8 @@
|
||||
<div class="toc-title">On this page</div>
|
||||
<ul class="toc-list">
|
||||
<li><a href="#window-management">Window Management</a></li>
|
||||
<li><a href="#window-rules">Window Rules</a></li>
|
||||
<li><a href="#window-marks">Window Marks</a></li>
|
||||
<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>
|
||||
@@ -120,6 +124,85 @@
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<h2 id="workspaces">Virtual Workspaces</h2>
|
||||
<p>DWN provides 9 virtual workspaces for organizing your windows.</p>
|
||||
|
||||
@@ -143,7 +226,7 @@
|
||||
</div>
|
||||
|
||||
<h2 id="layouts">Layout System</h2>
|
||||
<p>Three layout modes available per workspace:</p>
|
||||
<p>Six layout modes available per workspace:</p>
|
||||
|
||||
<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>
|
||||
@@ -159,7 +242,22 @@
|
||||
<h3>Monocle Layout</h3>
|
||||
<p>All windows fullscreen and stacked. Use Alt-Tab to switch between them. Ideal for focused work.</p>
|
||||
|
||||
<p>See <a href="layouts.html">Layouts</a> for detailed documentation.</p>
|
||||
<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>
|
||||
|
||||
<h2 id="panels">Panels & System Tray</h2>
|
||||
|
||||
@@ -277,6 +375,18 @@
|
||||
|
||||
<p>See <a href="api-overview.html">API Overview</a> for getting started.</p>
|
||||
|
||||
<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>
|
||||
|
||||
<h2>Protocol Compliance</h2>
|
||||
<p>DWN implements standard X11 protocols for compatibility:</p>
|
||||
<ul>
|
||||
|
||||
Reference in New Issue
Block a user