You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cross-platform dotfiles managed by chezmoi: a full Arch Linux + Hyprland Wayland desktop and macOS, unified by a wallpaper-driven theming system across 34 applications — everything from the login screen to your terminal follows one palette.
Features
Wallpaper-Driven Theming — 34 apps recolored from one wallpaper, login screen included
Full Hyprland Desktop — greetd login, Quickshell bar, Walker launcher, notifications, idle/lock, all themed
Voice Dictation — local push-to-talk transcription (on-device) with a cloud smart layer + Arabic/English → English
AI Coding Environment — a bundled opencode agent/skill framework (ticket → implement → PR review → merge)
Cross-Platform — the same repo drives a Linux desktop, macOS, and headless servers
Fresh-Install Ready — one command installs packages, configs, and system settings
Secrets live in Bitwarden and sync on-demand with the secrets command (all custom fields are auto-exported as environment variables):
secrets # Sync from Bitwarden (handles login/unlock)
secrets -v # Sync with masked value preview
secrets --help # Setup instructions
First time? Create a Bitwarden item named dotfiles-secrets with custom fields for your keys (e.g. OPENAI_API_KEY, GEMINI_API_KEY, GITHUB_TOKEN). Override the item name/id with BW_ITEM_NAME / BW_ITEM_ID if you keep duplicates.
Linux: switch on the login manager
The Arch installer sets up greetd + regreet but does not flip the display manager automatically (so you keep a TTY rollback path). When you're ready:
A complete, themed Wayland desktop on Arch — written as native-Lua Hyprland config and managed by uwsm. Everything below follows your wallpaper's palette via the theme system.
Piece
What it is
Compositor
Hyprland (native Lua config) under a uwsm-managed session
Login
greetd + regreet in a cage kiosk — the login screen follows your wallpaper
Status bar
Quickshell bar: workspaces, window title, clock/calendar, CPU/mem/disk/volume/Wi-Fi, system tray, update count, media (MPRIS), theme controls, power menu
Launcher
Walker (+ Elephant backend): apps, calculator, emoji, files, websearch, and clipboard history
Notifications
swaync center with quick-toggles (Wi-Fi/BT/mute/lock) and do-not-disturb
awww daemon with animated transitions; a Quickshell wallpaper picker
Voice HUD
a click-through Quickshell overlay for voice dictation (see below)
These start automatically with the graphical session via user services (walker, elephant, voice-typerd, flameshot, swaync).
Extras: system-wide mac-style editing chords (ALT+C/V/X/A/Z), a bilingual US + Arabic keyboard (toggle by pressing both Ctrl keys), touchpad workspace gestures, and per-app window rules. See Key Bindings for the essentials, or press SUPER+K in the desktop for the full searchable cheatsheet.
Voice Dictation (voice-typer)
Local, push-to-talk voice dictation — a self-hosted "Vibe Typer" replacement. Hold a hotkey, speak, and your words are transcribed on-device with NVIDIA Parakeet and typed into the focused app, with an optional cloud (Gemini) smart layer and a live HUD.
Hotkey (Linux)
Mode
What it does
F7
local
Raw transcript typed verbatim — instant, fully offline
Ctrl+F7
dictate
Transcript + AI cleanup (punctuation, fixes, self-corrections)
Shift+F7
command
Speak an instruction; the model acts on it and types the result
Alt+F7
multilingual
Speak Iraqi Arabic and/or English → fluent English
Ctrl+Alt+V
paste-last
Re-type the last dictation from disk (survives a clipboard miss)
Hold to talk, release to commit; double-tap to lock hands-free listening.
Screen-aware context: the AI modes also feed the model your focused app + window title, current text selection, and a local OCR of the active window (tesseract) — or, optionally, a downscaled screenshot to a vision model (screen_context = "ocr" | "screenshot" | "none"). It's reference-only — used to spell on-screen names, code symbols, and filenames correctly — and the prompts forbid echoing it.
Every result is saved to ~/.cache/voice-typer/last-response.txt, so paste-last recovers it even if the clipboard moved on.
Never a silent failure: on a cloud error, dictate falls back to the raw transcript; command/multilingual notify instead of typing nothing.
macOS is supported (launchd + AeroSpace, toggle-style); needs parakeet-cli + model, pi, a GEMINI_API_KEY, and the usual capture/OCR tools — all wired into the installers.
Theme System
The crown jewel. Change your wallpaper and 34 apps — including the Hyprland desktop, the GTK/Qt app stack, and the login screen — recolor automatically.
Commands
theme status # Show current theme state
theme set static # Catppuccin (follows system light/dark)
theme set static --variant mocha # Force a variant
theme set dynamic # Generate colors from the current wallpaper
theme mode dark | light # Switch light/dark
theme opacity 85 # Transparency for UI surfaces (0-100)
theme refresh-backgrounds # Re-render wallpaper-derived art (lock, login, logout)
wallpaper random # Random wallpaper + auto-theme (+ animated transition)
wallpaper set~/path/img.jpg # Set a specific wallpaper
wallpaper transition wave # Choose the animated transition style
How It Works
Wallpaper ──► matugen ──► Material Design 3 palette ──► 34 apps
├── Hyprland / hyprlock / regreet (login)
├── Quickshell bar + voice HUD
├── Walker / swaync / wlogout
├── GTK 3/4 + Qt (live light/dark)
├── Ghostty / WezTerm / NeoVim / Starship
└── ... and the rest of the catalog