My personal dotfiles for a consistent and productive Linux environment.
These dotfiles are curated to provide a sleek, modern, and efficient workflow. The setup is based on Hyprland, a dynamic tiling Wayland compositor, and a set of carefully selected tools that enhance productivity and user experience. The color scheme is based on the popular TokyoNight theme.
- Distro: Arch Linux (or an Arch derivative).
.depsusespacman+paruexclusively — other distros are unsupported out of the box. - Display server: Wayland (Hyprland). X11 will not work.
- GPU: Any modern GPU with a working Wayland driver. Tested on AMD; NVIDIA may need additional Hyprland config tweaks.
- CPU: x86_64. ARM is untested.
- Required CLI:
git,bash,curl,stow. Everything else.depsinstalls. - Recommended: Familiarity with Vim keybindings (Neovim, Vieb, tmux).
.deps installs these on Arch. On other distros, install equivalents manually
or glyphs / cursors / icons will render as boxes:
- Font: Hack Nerd Font — used by Alacritty,
Waybar, Rofi. Arch package:
ttf-hack-nerd. - Cursor theme:
Breeze_Light— set viaHYPRCURSOR_THEME/XCURSOR_THEMEinhyprland.conf. Arch package:breeze. - GTK theme:
adw-gtk-theme. - Icon theme: whatever your distro ships; Nautilus + Waybar both rely on the default GTK icon theme.
- Window Manager: Hyprland — dynamic tiling Wayland compositor.
- Shell: Fish — friendly interactive shell.
- Terminal: Alacritty — GPU-accelerated terminal.
- Editor: Neovim with LazyVim.
- Bar: Waybar.
- Launcher: Rofi.
- Notifications: swaync.
- File Manager: Nautilus.
- Browser: Vieb — vim-like browser.
- Screenshot: Grimblast.
- System monitor: btop.
- Prompt: Starship.
⚠ The install scripts assume Arch Linux and will install many packages via
paru. Read.local/bin/.depsbefore running.
curl -SsL https://ba.sh/yar3 | shRaw URL:
curl -SsL https://raw.github.com/mxaddict/dotfiles/main/.local/bin/.update | shgit clone https://github.com/mxaddict/dotfiles.git ~/.files
~/.files/.local/bin/.update --dry-run # pull only, no changes applied
~/.files/.local/bin/.update # full installAfter cloning, run the interactive setup. It collects your identity + key
defaults up front, then runs .update and patches the seeded templates with
your answers — single hands-on pass for a fresh install.
~/.files/.local/bin/.setup # interactive
~/.files/.local/bin/.setup -y # accept all defaults, no prompts
~/.files/.local/bin/.setup --no-update # only prompt + patch, skip .updateRe-running is safe: every prompt shows the current value as its default; press Enter to keep it.
Replace the repo URL via env var so .update clones your fork:
DOTFILES_REPO="https://github.com/you/dotfiles.git" ~/.files/.local/bin/.updatecurl -SsL https://ba.sh/zNcw | sh
# or
curl -SsL https://raw.github.com/mxaddict/dotfiles/main/.local/bin/.deps | shUser-specific files live as *.template.* in the repo and are copied to
$HOME on first run by .update. The destinations are gitignored and ignored
by stow, so your local edits never get clobbered by a git pull.
| Template (repo) | Destination | Purpose |
|---|---|---|
.gitconfig.local.template |
~/.gitconfig.local |
Name, email, GPG signing |
.config/hypr/apps.template.conf |
~/.config/hypr/apps.conf |
$terminal, $browser, $lock, etc. |
.config/hypr/input.template.conf |
~/.config/hypr/input.conf |
Keyboard layout, touchpad |
.config/hypr/monitors.template.conf |
~/.config/hypr/monitors.conf |
Monitor positions |
.config/hypr/hyprpaper.template.conf |
~/.config/hypr/hyprpaper.conf |
Wallpaper |
Re-running .update is safe — it only seeds files that don't exist yet.
~/.gitconfig.local— name, email, optional GPG key, optional signing.~/.config/hypr/monitors.conf— runhyprctl monitorsfor display names.~/.config/hypr/apps.conf— swap terminal, browser, file manager defaults.~/.config/hypr/input.conf— changekb_layoutif you're not on US.
~/.config/hypr/workspaces.conf— pin workspaces to monitors.~/.config/hypr/hyprpaper.conf— change wallpaper path..codex/config.tomland.config/opencode/opencode.json— point Ollama at your host (default:localhost:11434).
$mod = Super (Windows key).
| Bind | Action |
|---|---|
$mod + return / c |
Terminal (Alacritty) |
$mod + b |
Browser |
$mod + e |
File manager (Nautilus) |
$mod + space |
App launcher |
$mod + r |
Calculator |
$mod + . |
Emoji picker |
$mod + w |
WiFi menu |
$mod + a |
Audio menu |
$mod + u |
Bluetooth menu |
$mod + t |
Time menu |
$mod + escape |
Top processes menu |
$mod + shift + m |
Power menu |
$mod + n / +S+n |
Toggle / dismiss notifications |
| Bind | Action |
|---|---|
$mod + p / Print |
Screenshot region |
$mod + shift + p |
Screen record (kooha) |
$mod + ctrl + p |
Color picker |
$mod + m |
Lock screen |
| Bind | Action |
|---|---|
$mod + q |
Close active window |
$mod + f |
Maximize (fullscreen-1) |
$mod + shift + f |
True fullscreen |
$mod + v |
Toggle floating |
$mod + s |
Toggle split direction |
$mod + h/j/k/l |
Focus left/down/up/right |
$mod + shift + h/j/k/l |
Move window |
ctrl + arrows |
Resize active window |
$mod + tab |
Cycle windows |
| Bind | Action |
|---|---|
$mod + 1..9,0 |
Switch to workspace 1..10 |
$mod + shift + 1..0 |
Move window to workspace |
$mod + LMB drag |
Move window |
$mod + RMB drag |
Resize window |
| Bind | Action |
|---|---|
$mod + ctrl + j |
Auth |
$mod + ctrl + k |
Username |
$mod + ctrl + l |
Password |
$mod + ctrl + ; |
OTP |
XF86Audio* and XF86MonBrightness* keys are wired via swayosd-client.
$mod + up/down/left/right doubles as volume +/-/mute. Add shift for mic.
Scripts in .local/bin/ are intentionally named with a leading . (e.g.
.menu-apps, .update). They are hidden from a plain ls but show up with
ls -A. This keeps the user's "real" PATH visually clean. Use
ls -A ~/.local/bin/ to discover them.
~/.local/bin/.update # update repo + deps + plugins
~/.local/bin/.update --dry-run # pull only
~/.local/bin/.update --no-stash # fail instead of auto-stashingEnv vars: DOTFILES_REPO, DOTFILES_DIR.
See CONTRIBUTING.md for commit style, naming conventions, and lint expectations.
MIT — see LICENSE.
