docs: add comprehensive readme with installation, features, and usage guide
This commit is contained in:
parent
9182d9931e
commit
a6b9fa3469
392
README.md
Normal file
392
README.md
Normal file
@ -0,0 +1,392 @@
|
||||
# DWN - Desktop Window Manager
|
||||
|
||||
Author: retoor <retoor@molodetz.nl>
|
||||
|
||||
A lightweight, AI-enhanced window manager for Linux with tiling, floating, and fullscreen layouts.
|
||||
|
||||
## Quick Start (Copy & Paste These Commands)
|
||||
|
||||
```bash
|
||||
# 1. Install dependencies (enter your password when asked)
|
||||
make deps
|
||||
|
||||
# 2. Build DWN
|
||||
make
|
||||
|
||||
# 3. Test it (opens in a safe window - won't affect your desktop)
|
||||
make run
|
||||
```
|
||||
|
||||
That's it! Press `Super+Backspace` to exit the test window.
|
||||
|
||||
---
|
||||
|
||||
## What is DWN?
|
||||
|
||||
DWN is a **window manager** - the program that controls how windows look and behave on your screen. It replaces your current desktop environment (like GNOME, KDE, or XFCE) with a faster, keyboard-driven alternative.
|
||||
|
||||
**Features:**
|
||||
- 3 window layouts: Tiling (windows don't overlap), Floating (like normal), Monocle (fullscreen)
|
||||
- 9 virtual workspaces to organize your windows
|
||||
- Built-in panels with clock, taskbar, and system tray
|
||||
- WiFi network selector with dropdown menu (like XFCE)
|
||||
- Audio volume indicator with scroll-to-adjust
|
||||
- Desktop notifications
|
||||
- Optional AI assistant (can launch apps by command!)
|
||||
- Very fast and lightweight
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
### Step 1: Install Dependencies
|
||||
|
||||
Run this command (works on Ubuntu, Debian, Fedora, and Arch):
|
||||
|
||||
```bash
|
||||
make deps
|
||||
```
|
||||
|
||||
This installs everything DWN needs. You'll need to enter your password.
|
||||
|
||||
**If `make deps` doesn't work**, install manually:
|
||||
- Ubuntu/Debian: `sudo apt install build-essential pkg-config libx11-dev libxext-dev libxinerama-dev libxrandr-dev libdbus-1-dev libcurl4-openssl-dev xserver-xephyr dmenu network-manager alsa-utils`
|
||||
- Fedora: `sudo dnf install gcc make pkg-config libX11-devel libXext-devel libXinerama-devel libXrandr-devel dbus-devel libcurl-devel xorg-x11-server-Xephyr dmenu NetworkManager alsa-utils`
|
||||
- Arch: `sudo pacman -S base-devel pkg-config libx11 libxext libxinerama libxrandr dbus curl xorg-server-xephyr dmenu networkmanager alsa-utils`
|
||||
|
||||
### Step 2: Build
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
You should see "Build successful!" at the end.
|
||||
|
||||
### Step 3: Test (Recommended!)
|
||||
|
||||
Before installing, test DWN in a safe window:
|
||||
|
||||
```bash
|
||||
make run
|
||||
```
|
||||
|
||||
This opens DWN inside a window on your current desktop. You can try it out without changing anything. Press `Super+Backspace` to close it.
|
||||
|
||||
### Step 4: Install
|
||||
|
||||
```bash
|
||||
sudo make install
|
||||
```
|
||||
|
||||
### Step 5: Use DWN
|
||||
|
||||
1. Log out of your current session
|
||||
2. At the login screen, click the **gear icon** (or session selector) near your username
|
||||
3. Select **"DWN"** from the list
|
||||
4. Log in!
|
||||
|
||||
---
|
||||
|
||||
## Basic Controls
|
||||
|
||||
### Essential Shortcuts (Memorize These!)
|
||||
|
||||
| Keys | What it does |
|
||||
|------|--------------|
|
||||
| `Ctrl + Alt + T` | Open a terminal |
|
||||
| `Super` or `Alt + F2` | Open app launcher |
|
||||
| `Super + E` | Open file manager |
|
||||
| `Super + B` | Open web browser |
|
||||
| `Alt + Tab` | Switch between windows |
|
||||
| `Alt + F4` | Close current window |
|
||||
| `Super + Backspace` | **Exit DWN** (important!) |
|
||||
| `Super + S` | **Show all shortcuts** |
|
||||
| `Super + T` | **Start interactive tutorial** |
|
||||
|
||||
### Workspaces
|
||||
|
||||
| Keys | What it does |
|
||||
|------|--------------|
|
||||
| `Ctrl + Alt + Right` | Next workspace |
|
||||
| `Ctrl + Alt + Left` | Previous workspace |
|
||||
| `F1` to `F9` | Switch to workspace 1-9 |
|
||||
| `Shift + F1` to `Shift + F9` | Move window to workspace 1-9 |
|
||||
|
||||
### Window Management
|
||||
|
||||
| Keys | What it does |
|
||||
|------|--------------|
|
||||
| `Super + F9` | Toggle floating mode |
|
||||
| `Alt + F10` | Toggle maximize |
|
||||
| `Alt + F11` | Toggle fullscreen |
|
||||
| `Alt + Tab` | Cycle windows forward |
|
||||
| `Alt + Shift + Tab` | Cycle windows backward |
|
||||
|
||||
### Layout Control (Super key shortcuts)
|
||||
|
||||
| Keys | What it does |
|
||||
|------|--------------|
|
||||
| `Super + Space` | Change layout mode (tiling → floating → monocle) |
|
||||
| `Super + H` | Shrink main area |
|
||||
| `Super + L` | Expand main area |
|
||||
| `Super + I` | Add window to main area |
|
||||
| `Super + D` | Remove window from main area |
|
||||
|
||||
### AI Features (Optional)
|
||||
|
||||
| Keys | What it does |
|
||||
|------|--------------|
|
||||
| `Super + A` | Show AI context info |
|
||||
| `Super + Shift + A` | Ask AI to do something (e.g., "open firefox") |
|
||||
| `Super + Shift + E` | Exa semantic web search |
|
||||
|
||||
### News Ticker
|
||||
|
||||
The bottom panel displays a scrolling news ticker. Navigate articles with these shortcuts:
|
||||
|
||||
| Keys | What it does |
|
||||
|------|--------------|
|
||||
| `Super + Down` | Next news article |
|
||||
| `Super + Up` | Previous news article |
|
||||
| `Super + Return` | Open current article in browser |
|
||||
|
||||
### Other Shortcuts
|
||||
|
||||
| Keys | What it does |
|
||||
|------|--------------|
|
||||
| `Print` | Take screenshot (xfce4-screenshooter) |
|
||||
|
||||
---
|
||||
|
||||
## System Tray
|
||||
|
||||
The top panel includes a system tray on the right side with battery, audio, and WiFi indicators.
|
||||
|
||||
### Battery Indicator
|
||||
|
||||
Shows battery percentage on laptops with color coding:
|
||||
- **Green**: > 50%
|
||||
- **Yellow**: 20-50%
|
||||
- **Red**: < 20%
|
||||
- **Blue**: Charging
|
||||
|
||||
### WiFi Indicator
|
||||
|
||||
Located in the top-right corner of the panel, showing your current connection status.
|
||||
|
||||
| Action | What it does |
|
||||
|--------|--------------|
|
||||
| **Click** on WiFi icon | Open dropdown with available networks |
|
||||
| **Click** on a network | Connect to that network |
|
||||
| **Click** on connected network | Disconnect |
|
||||
|
||||
The dropdown shows:
|
||||
- Available WiFi networks with signal strength
|
||||
- `●` marker next to the currently connected network
|
||||
- Networks are sorted and updated automatically
|
||||
|
||||
**Note:** Requires NetworkManager (`nmcli`) to be installed.
|
||||
|
||||
### Audio Indicator
|
||||
|
||||
Shows current volume level next to the WiFi indicator.
|
||||
|
||||
| Action | What it does |
|
||||
|--------|--------------|
|
||||
| **Left-click** | Toggle mute/unmute |
|
||||
| **Scroll up** | Increase volume by 5% |
|
||||
| **Scroll down** | Decrease volume by 5% |
|
||||
|
||||
**Note:** Requires ALSA utilities (`amixer`) to be installed.
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
DWN can be customized by editing a config file.
|
||||
|
||||
### Create Your Config
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.config/dwn
|
||||
cp /etc/dwn/config.example ~/.config/dwn/config
|
||||
```
|
||||
|
||||
### Edit Your Config
|
||||
|
||||
Open `~/.config/dwn/config` in any text editor. Here are common changes:
|
||||
|
||||
**Change terminal:**
|
||||
```ini
|
||||
[general]
|
||||
terminal = gnome-terminal
|
||||
```
|
||||
Options: `xfce4-terminal`, `gnome-terminal`, `konsole`, `alacritty`, `xterm`
|
||||
|
||||
**Change app launcher:**
|
||||
```ini
|
||||
[general]
|
||||
launcher = rofi -show run
|
||||
```
|
||||
|
||||
**Change layout:**
|
||||
```ini
|
||||
[layout]
|
||||
default = floating
|
||||
```
|
||||
Options: `tiling`, `floating`, `monocle`
|
||||
|
||||
**Change window gaps:**
|
||||
```ini
|
||||
[appearance]
|
||||
gap = 10
|
||||
border_width = 2
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## AI Features (Optional)
|
||||
|
||||
DWN has an AI assistant that can run commands for you. For example, you can press `Super+Shift+A`, type "open chrome", and it will launch Chrome.
|
||||
|
||||
### AI Command Setup (OpenRouter)
|
||||
|
||||
1. Go to [openrouter.ai](https://openrouter.ai) and create a free account
|
||||
2. Get your API key
|
||||
3. Add it to your shell config:
|
||||
|
||||
```bash
|
||||
echo 'export OPENROUTER_API_KEY="your-key-here"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
4. Make sure dmenu is installed: `sudo apt install dmenu`
|
||||
|
||||
### Exa Semantic Search Setup
|
||||
|
||||
1. Go to [dashboard.exa.ai](https://dashboard.exa.ai/api-keys) and create an account
|
||||
2. Get your API key
|
||||
3. Add it to your shell config:
|
||||
|
||||
```bash
|
||||
echo 'export EXA_API_KEY="your-key-here"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
- Press `Super + A` to see AI context info about your current task
|
||||
- Press `Super + Shift + A` to ask the AI to do something:
|
||||
- "open firefox" - launches Firefox
|
||||
- "run terminal" - opens a terminal
|
||||
- "what time is it" - answers your question
|
||||
- Press `Super + Shift + E` to search the web semantically:
|
||||
- Type a question like "how to configure nginx"
|
||||
- Select a result to open in browser
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "make: command not found"
|
||||
|
||||
Install build tools:
|
||||
```bash
|
||||
sudo apt install build-essential
|
||||
```
|
||||
|
||||
### "X11 libraries not found" or build errors
|
||||
|
||||
Install dependencies:
|
||||
```bash
|
||||
make deps
|
||||
```
|
||||
|
||||
### Can't find DWN at login screen
|
||||
|
||||
Make sure you ran `sudo make install`, then:
|
||||
```bash
|
||||
ls /usr/share/xsessions/dwn.desktop
|
||||
```
|
||||
|
||||
If missing:
|
||||
```bash
|
||||
sudo cp scripts/dwn.desktop /usr/share/xsessions/
|
||||
```
|
||||
|
||||
### Terminal shortcut doesn't work
|
||||
|
||||
Install the default terminal:
|
||||
```bash
|
||||
sudo apt install xfce4-terminal
|
||||
```
|
||||
|
||||
Or change terminal in config (see Configuration section).
|
||||
|
||||
### Screen is blank after login
|
||||
|
||||
DWN started but there's nothing to show. Press `Ctrl+Alt+T` to open a terminal.
|
||||
|
||||
### How do I get back to my normal desktop?
|
||||
|
||||
1. Press `Super+Backspace` to exit DWN
|
||||
2. At login screen, select your previous desktop (GNOME, KDE, etc.)
|
||||
|
||||
### AI says "dmenu not found"
|
||||
|
||||
```bash
|
||||
sudo apt install dmenu
|
||||
```
|
||||
|
||||
### WiFi indicator not working
|
||||
|
||||
Make sure NetworkManager is installed and running:
|
||||
```bash
|
||||
sudo apt install network-manager
|
||||
sudo systemctl enable --now NetworkManager
|
||||
```
|
||||
|
||||
### Audio indicator not working
|
||||
|
||||
Make sure ALSA utilities are installed:
|
||||
```bash
|
||||
sudo apt install alsa-utils
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Uninstall
|
||||
|
||||
```bash
|
||||
sudo make uninstall
|
||||
```
|
||||
|
||||
Then select a different desktop at the login screen.
|
||||
|
||||
---
|
||||
|
||||
## All Make Commands
|
||||
|
||||
| Command | What it does |
|
||||
|---------|--------------|
|
||||
| `make help` | Show all commands |
|
||||
| `make deps` | Install dependencies |
|
||||
| `make` | Build DWN |
|
||||
| `make debug` | Build with debug symbols |
|
||||
| `make run` | Test in a window |
|
||||
| `make install` | Install system-wide |
|
||||
| `make uninstall` | Remove from system |
|
||||
| `make clean` | Delete build files |
|
||||
| `make format` | Format source code |
|
||||
| `make check` | Run static analysis |
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
MIT License - do whatever you want with it.
|
||||
|
||||
## Credits
|
||||
|
||||
- Inspired by [dwm](https://dwm.suckless.org/) and [XFCE](https://xfce.org/)
|
||||
- AI powered by [OpenRouter](https://openrouter.ai/)
|
||||
Loading…
Reference in New Issue
Block a user