A Stoic desktop for Arch Linux — Hyprland, i3, and a unified dark theme inspired by the ancient world.
"The happiness of your life depends upon the quality of your thoughts." — Marcus Aurelius
Marble, bronze, parchment, stone — colors from temples, statues, and manuscripts. EB Garamond as the serif. JetBrains Mono in the terminal. A Stoic quote every time you open a shell. A Memento Mori widget on the desktop reminding you that time is finite.
StoaLinux is a complete Arch Linux environment with automated installation, a unified dark theme across every app, a settings panel that replaces the need for any external configuration tool, and a collection of stoa-* scripts that handle everything from wallpapers to OCR to cloud drives.
This isn't minimalism for aesthetics. It's minimalism by principle: only what serves, stays.
- Arch Linux with automated installation (from live ISO or existing Arch)
- Hyprland (Wayland) as the main compositor, i3 as Xorg fallback
- 25-panel settings app via Rofi — display, audio, network, VPN, firewall, Bluetooth, disks, system health, and more
- 10 color presets (Nord, Dracula, Gruvbox, Catppuccin...) + custom color editor applied system-wide
- Unified dark theme across GTK, Qt, Steam, Calibre, YACReader, OnlyOffice, Betterbird, VS Code, Neovim
- Capture toolbar (eww) — screenshot + recording with mode selection, toggle, and delay
- System resilience — pacman pre-transaction snapshots, hyprctl version adapter, health check on boot
- Memento Mori widget (eww), Stoic quotes, and a living marble screensaver
- DFM (Dotfile Manager) — GTK4 GUI to edit dotfiles in-place with smart widgets, backups, and GitHub sync
- stoa-* scripts for wallpapers, clipboard, OCR, paste, resize, firewall, WinApps, and more
The default palette is inspired by the ancient world — marble, bronze, parchment, stone. It can be changed entirely via Super+I → Theme → Color Palette, with 10 built-in presets and a custom color editor.
Available presets: Stoic (default), Nord, Dracula, Gruvbox, Catppuccin Mocha, Tokyo Night, Solarized Dark, Rose Pine, GitHub Dark, Base16 Default
From live ISO:
curl -LO https://raw.githubusercontent.com/VictorGSchneider/StoaLinux/main/setup/arch-install.sh
chmod +x arch-install.sh && ./arch-install.shExisting Arch:
git clone https://github.com/VictorGSchneider/StoaLinux.git
cd StoaLinux && chmod +x setup/post-install.sh && ./setup/post-install.shDotfiles only:
git clone https://github.com/VictorGSchneider/StoaLinux.git
cd StoaLinux && chmod +x install.sh && ./install.shShell (add manually):
echo 'source ~/StoaLinux/shell/.zshrc' >> ~/.zshrc # or .bashrc| Key | Action | Key | Action |
|---|---|---|---|
Super+Return | Terminal (Kitty) | Super+Shift+V | Clipboard pin |
Super+B | Browser (Brave) | Super+Shift+T | OCR (screen text) |
Super+C | Calculator (Qalculate) | Super+Shift+P | Advanced paste |
Super+D | Launcher (Rofi) | Super+/ | Keybinds bar |
Super+E | Files (lf) | Super+Escape | Lock screen |
Super+Shift+E | Files (Thunar) | Super+Q | Close |
Super+N | Monitor (btop) | Super+F | Fullscreen |
Super+O | Notes (Obsidian) | Super+R | Resize (HJKL) |
Super+M | Memento Mori | Super+HJKL | Navigate |
Super+I | Settings panel | Super+Shift+HJKL | Move window |
Super+W | WinApps | Super+G | Dotfile Manager (DFM) |
Super+A | App store | Super+1-0 | Workspaces I–X |
Super+V | Clipboard history | Print | Capture (screenshot/record) |
Everything is configured through stoa-settings (Super+I) — no external settings app needed.
| Panel | Features |
|---|---|
| Display | Brightness, resolution, scale, rotation, multi-monitor (extend/mirror) |
| Audio | Volume, output/input devices (PipeWire) |
| Equalizer | 8 built-in EQ presets + user presets via EasyEffects |
| Night Light | Blue light filter (2500K–6500K), schedule (manual/sunset/custom) |
| Keyboard | Layout (12 presets + custom), repeat rate, Caps Lock remap, NumLock |
| Mouse & Touchpad | Sensitivity, accel, scroll, tap-to-click, 12 configurable gestures |
| Network | Wi-Fi, saved networks, network info (IP/DNS/gateway/signal) |
| VPN | ProtonVPN: connect by country, P2P, Secure Core, kill switch |
| Firewall | nftables: port list, allow/block, service toggle |
| Bluetooth | Scan, connect, saved devices, forget |
| Hardware | CPU, GPU, RAM, disks, battery, USB, PCI, sensors, cameras, input |
| Disks & Storage | Overview, usage analyzer (drill-down), mount/unmount, SMART, benchmark, format, fsck, fstab, cleanup |
| Printers | CUPS: add/remove printers, print queue, scanners (SANE) |
| Cloud Drive | Google Drive, OneDrive, Dropbox, S3 via rclone |
| Power Management | Power profiles, screen off timeout, auto suspend, battery info |
| Date & Time | Timezone, NTP, manual time, 12/24h, language & locale |
| Accessibility | Cursor size, text scale, animations, gaps, opacity, border width |
| Screensaver | Living marble animation (plasma noise in Stoa palette), idle timeout |
| Wallpaper | Browse, generate, set custom |
| Theme | Color palette (10 presets + custom), GTK, icons, cursors, font size |
| Lock Screen | Lock now, face recognition setup |
| System Health | Doctor report, services status, failed units, thermals, journal, updates, package snapshots (diff), security audit, config integrity |
| Maintenance | Backup configs, restore (interactive/bulk), full system cleanup (10-step), dry-run preview, schedule cleanup at boot |
| Script | What it does | Stoatool | What it does |
|---|---|---|---|
stoa-settings | Settings panel (25 panels) | stoa-ocr | Extract text from screen |
stoa-store | Package manager | stoa-paste | Paste as UPPER/lower/etc |
stoa-fetch | System fetch | stoa-resize | Batch resize images |
stoa-walls | Wallpaper generator | stoa-rename | Regex rename + preview |
stoa-memento | Memento Mori widget | stoa-locksmith | See who locks a file |
stoa-doctor | System health check | ||
stoa-capture | Screenshot + recording (eww) | ||
stoa-screensaver | Living marble screensaver | ||
stoa-clipboard | Clipboard + pins | ||
stoa-drive | Cloud drive (rclone) | ||
stoa-firewall | nftables firewall | ||
stoa-winapps | Windows apps (KVM/RDP) | ||
stoa-osd | Volume/brightness OSD | ||
stoa-quotes-sync | Fetch quotes online | ||
stoa-face | Face unlock (howdy) | ||
stoa-gpu-setup | GPU + CPU drivers | ||
stoa-maintain | Backup, restore, cleanup (BRCS) | ||
stoa-pkg-snapshot | Package snapshot (pacman hook) | ||
dfm | Dotfile Manager (GTK4 GUI) |
| App | Purpose | App | Purpose |
|---|---|---|---|
| Brave | Browser | btop | Monitor |
| Obsidian | Notes | Qalculate | Calculator |
| Kitty | Terminal | eww | Widgets |
| VS Code | IDE | Neovim | Editor |
| Zathura | Calibre | eBooks | |
| mpv | Video/audio | YACReader | Comics |
| OnlyOffice | Office suite | Enpass | Passwords |
| Betterbird | howdy | Face unlock | |
| imv | Images | lf / Thunar | Files |
| EasyEffects | Audio equalizer | gammastep | Night light |
| QEMU/KVM | WinApps (VM) | FreeRDP | Remote desktop |
| Steam | Gaming (Proton) | GnuPG | Encryption & signing |
The Stoa theme is applied consistently across:
- GTK 3/4 —
stoa-gtk.csswith dark palette + EB Garamond - Qt 5/6 — Fusion dark via qt5ct/qt6ct
- VS Code — full color theme (syntax + UI + terminal ANSI)
- Neovim —
stoa.vimcolorscheme with treesitter support - Steam — CSS overlay (
libraryroot.custom.css) - OnlyOffice — custom JSON theme (
stoa-onlyoffice.json) - Betterbird — userChrome/userContent CSS (
stoa-betterbird.css) - Calibre — dark reader with EB Garamond 18pt
- YACReader — full Qt stylesheet
- Icons — Colloid-dark
- Cursors — Colloid
- Font — EB Garamond (serif) + JetBrains Mono (mono)
Change the entire color scheme from Super+I → Theme → Color Palette:
- Apply Preset — pick from 10 palettes and apply with one click
- Edit Colors — customize any of the 11 core colors individually via hex input
- View Current Palette — see the active colors at a glance
- Reset to Stoic — restore the default marble/bronze palette
Changes propagate automatically to: Rofi, Waybar, Kitty, Dunst, eww, GTK 3/4, Hyprland, hyprlock, i3, and colors.sh. Hyprland, Kitty, and Dunst reload live — other apps take effect on restart.
- Package snapshots — pacman pre-transaction hook saves
pacman -Qbefore every install/upgrade/remove (~/.config/stoa/pkg-snapshots/, last 20, auto-rotates). Compare snapshots with current state to see exactly what changed. - Hyprland version adapter —
stoa-doctordetectshyprctloutput format on boot and all 25+ settings calls adapt automatically via_hyprctl_get(). - Health check —
stoa-doctorruns on login, verifies all binary dependencies and services, notifies via dunst if anything is missing. Full log at~/.config/stoa/doctor.log.
A GTK4/libadwaita GUI for editing dotfiles in-place — no moving, no centralizing. Launch with Super+G or dfm.
- Smart widgets — auto-generated toggles, sliders, color pickers, and path selectors based on config file content
- Versioned backups — automatic snapshots before every edit, with rollback support
- Syntax validation — JSON, TOML, YAML, INI, shell, Xresources, plus cross-file conflict detection
- GitHub sync — push/pull dotfiles via
gh, create repos, share as Gists - 80+ known configs — shells, window managers, terminals, status bars, editors, and more
- Profile management — switch between configuration sets and built-in templates
GPL-3.0