<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Installation - DWN Documentation</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<button class="mobile-menu-btn">Menu</button>
<div class="layout">
<aside class="sidebar">
<div class="sidebar-header">
<h1>DWN</h1>
<span class="version">v1.0.0</span>
</div>
<div class="search-box">
<input type="text" class="search-input" placeholder="Search docs...">
</div>
<nav class="sidebar-nav">
<div class="nav-section">
<div class="nav-section-title">Getting Started</div>
<a href="index.html" class="nav-link">Introduction</a>
<a href="installation.html" class="nav-link">Installation</a>
<a href="quickstart.html" class="nav-link">Quick Start</a>
</div>
<div class="nav-section">
<div class="nav-section-title">User Guide</div>
<a href="features.html" class="nav-link">Features</a>
<a href="shortcuts.html" class="nav-link">Keyboard Shortcuts</a>
<a href="configuration.html" class="nav-link">Configuration</a>
<a href="layouts.html" class="nav-link">Layouts</a>
<a href="ai-features.html" class="nav-link">AI Integration</a>
</div>
<div class="nav-section">
<div class="nav-section-title">API Reference</div>
<a href="api-overview.html" class="nav-link">API Overview</a>
<a href="api-reference.html" class="nav-link">API Reference</a>
<a href="api-examples.html" class="nav-link">API Examples</a>
</div>
<div class="nav-section">
<div class="nav-section-title">Advanced</div>
<a href="architecture.html" class="nav-link">Architecture</a>
<a href="building.html" class="nav-link">Building from Source</a>
</div>
</nav>
</aside>
<main class="main-content">
<div class="content">
<div class="page-header">
<h1>Installation</h1>
<p class="lead">Install DWN on your Linux system</p>
</div>
<div class="toc">
<div class="toc-title">On this page</div>
<ul class="toc-list">
<li><a href="#requirements">Requirements</a></li>
<li><a href="#dependencies">Dependencies</a></li>
<li><a href="#building">Building</a></li>
<li><a href="#installing">Installing</a></li>
<li><a href="#testing">Testing</a></li>
</ul>
</div>
<h2 id="requirements">Requirements</h2>
<ul>
<li>Linux with X11 (Xorg)</li>
<li>GCC compiler</li>
<li>Make build system</li>
<li>pkg-config</li>
</ul>
<h2 id="dependencies">Dependencies</h2>
<h3>Ubuntu / Debian</h3>
<div class="code-block">
<pre><code>sudo apt update && sudo apt install -y \
build-essential \
pkg-config \
libx11-dev \
libxext-dev \
libxinerama-dev \
libxrandr-dev \
libxft-dev \
libxtst-dev \
libfontconfig1-dev \
libdbus-1-dev \
libcurl4-openssl-dev \
libpng-dev \
libtesseract-dev \
libleptonica-dev \
tesseract-ocr \
tesseract-ocr-eng \
xserver-xephyr \
dmenu</code></pre>
</div>
<h3>Fedora / RHEL</h3>
<div class="code-block">
<pre><code>sudo dnf install -y \
gcc make \
pkg-config \
libX11-devel \
libXext-devel \
libXinerama-devel \
libXrandr-devel \
libXtst-devel \
dbus-devel \
libcurl-devel \
libpng-devel \
tesseract-devel \
leptonica-devel \
tesseract-langpack-eng \
xorg-x11-server-Xephyr \
dmenu</code></pre>
</div>
<h3>Arch Linux</h3>
<div class="code-block">
<pre><code>sudo pacman -S --needed \
base-devel \
pkg-config \
libx11 \
libxext \
libxinerama \
libxrandr \
libxtst \
dbus \
curl \
libpng \
tesseract \
tesseract-data-eng \
leptonica \
xorg-server-xephyr \
dmenu</code></pre>
</div>
<h3>Automatic Installation</h3>
<p>The Makefile can automatically detect your package manager and install dependencies:</p>
<div class="code-block">
<pre><code>make deps</code></pre>
</div>
<h2 id="building">Building</h2>
<h3>Clone the Repository</h3>
<div class="code-block">
<pre><code>git clone https://github.com/retoor/dwn.git
cd dwn</code></pre>
</div>
<h3>Build Release Version</h3>
<div class="code-block">
<pre><code>make</code></pre>
</div>
<h3>Build Debug Version</h3>
<div class="code-block">
<pre><code>make debug</code></pre>
</div>
<h3>Build with Sanitizers</h3>
<div class="code-block">
<pre><code>make sanitize</code></pre>
</div>
<h2 id="installing">Installing</h2>
<h3>System-wide Installation</h3>
<div class="code-block">
<pre><code>sudo make install</code></pre>
</div>
<p>This installs:</p>
<ul>
<li><code>/usr/local/bin/dwn</code> - The window manager binary</li>
<li><code>/usr/local/share/xsessions/dwn.desktop</code> - Session file for display managers</li>
<li><code>/etc/dwn/config.example</code> - Example configuration file</li>
</ul>
<h3>User Configuration</h3>
<p>Copy the example configuration to your home directory:</p>
<div class="code-block">
<pre><code>mkdir -p ~/.config/dwn
cp /etc/dwn/config.example ~/.config/dwn/config</code></pre>
</div>
<h3>Uninstalling</h3>
<div class="code-block">
<pre><code>sudo make uninstall</code></pre>
</div>
<h2 id="testing">Testing</h2>
<h3>Test in Xephyr (Recommended)</h3>
<p>Test DWN in a nested X server without affecting your current session:</p>
<div class="code-block">
<pre><code>make run</code></pre>
</div>
<p>This starts DWN in a 1280x720 Xephyr window on display :1.</p>
<h3>Manual Testing</h3>
<div class="code-block">
<pre><code># Start Xephyr
Xephyr :1 -screen 1920x1080 &
# Run DWN on the new display
DISPLAY=:1 ./bin/dwn</code></pre>
</div>
<h3>Using DWN as Your Window Manager</h3>
<ol>
<li>Log out of your current session</li>
<li>At the login screen, select "DWN" from the session menu</li>
<li>Log in</li>
</ol>
<div class="alert alert-info">
<strong>Tip:</strong> Keep a terminal open or know the shortcut <code>Ctrl+Alt+T</code> to open one, in case you need to recover from any issues.
</div>
<footer>
<p>DWN Window Manager - retoor &lt;retoor@molodetz.nl&gt;</p>
</footer>
</div>
</main>
</div>
<script src="js/main.js"></script>
</body>
</html>