My personal Linux dotfiles for a modern Wayland-based development environment.
A minimalist, keyboard-driven setup featuring:
- Sway - Tiling Wayland compositor with vim keybindings
- Waybar - Sleek status bar with battery, network, and workspace indicators
- Neovim - LazyVim configuration with AI assistants and modern plugins
- Zsh - Powerlevel10k theme with autosuggestions and syntax highlighting
- Colors: Dark blue-grey theme (
#4A5570focused,#353A4Aunfocused) - Font: JetBrainsMono Nerd Font
- Gaps: 10px inner, 10px outer
- Workspace Indicator: Yellow Pac-Man inspired icons
dotfiles/
โโโ .zshrc # Zsh configuration with Oh My Zsh
โโโ config/
โ โโโ sway/
โ โ โโโ config # Sway window manager settings
โ โ โโโ scripts/
โ โ โโโ autotile.py # Automatic window tiling
โ โโโ waybar/
โ โ โโโ config # Waybar modules configuration
โ โ โโโ style.css # Waybar styling
โ โโโ nvim/ # Neovim configuration (LazyVim)
โ โโโ init.lua
โ โโโ lua/
โ โโโ config/ # Core settings
โ โโโ plugins/ # Plugin configurations
# Arch Linux / Manjaro
sudo pacman -S sway waybar wofi kitty mako
# Fedora
sudo dnf install sway waybar wofi kitty mako
# Ubuntu/Debian (requires additional repos)
sudo apt install sway waybar wofi kitty mako# Install Zsh
sudo pacman -S zsh # Arch
sudo dnf install zsh # Fedora
sudo apt install zsh # Ubuntu/Debian
# Install Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Install Powerlevel10k theme
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# Install Zsh plugins
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions# Install Neovim (>= 0.9 required)
# Arch
sudo pacman -S neovim
# Fedora
sudo dnf install neovim
# Ubuntu/Debian (use PPA for latest version)
sudo add-apt-repository ppa:neovim-ppa/stable
sudo apt update
sudo apt install neovim
# Install Node.js (required for many plugins)
curl -fsSL https://deb.nodesource.com/setup_lts.sh | sudo -E bash -
sudo apt install nodejs # Ubuntu/Debian
sudo pacman -S nodejs npm # Arch
sudo dnf install nodejs npm # Fedora# System utilities
sudo pacman -S brightnessctl grim pulseaudio lsd # Arch
sudo dnf install brightnessctl grim pulseaudio lsd # Fedora
sudo apt install brightnessctl grim pulseaudio lsd # Ubuntu/Debian
# Python (for autotile script)
pip install i3ipc# JetBrainsMono Nerd Font
# Download from: https://www.nerdfonts.com/font-downloads
# Or use package manager:
sudo pacman -S ttf-jetbrains-mono-nerd # Arch (AUR)
# Manual installation:
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
curl -fLO https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/JetBrainsMono.zip
unzip JetBrainsMono.zip
fc-cache -fv# Homebrew (for additional tools)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Additional tools mentioned in configs
npm install -g npm # Global npm packages# Clone the repository
git clone https://github.com/anddrs/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Backup existing configs
mv ~/.config/sway ~/.config/sway.backup 2>/dev/null
mv ~/.config/waybar ~/.config/waybar.backup 2>/dev/null
mv ~/.config/nvim ~/.config/nvim.backup 2>/dev/null
mv ~/.zshrc ~/.zshrc.backup 2>/dev/null
# Create symlinks
ln -sf ~/dotfiles/config/sway ~/.config/sway
ln -sf ~/dotfiles/config/waybar ~/.config/waybar
ln -sf ~/dotfiles/config/nvim ~/.config/nvim
ln -sf ~/dotfiles/.zshrc ~/.zshrc
# Create local config for secrets (gitignored)
touch ~/.zshrc.local# Install GNU Stow
sudo pacman -S stow # Arch
sudo dnf install stow # Fedora
sudo apt install stow # Ubuntu/Debian
# Clone and stow
git clone https://github.com/anddrs/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Stow configs
stow -t ~ .# Clone the repository
git clone https://github.com/anddrs/dotfiles.git ~/dotfiles
# Copy configs
mkdir -p ~/.config
cp -r ~/dotfiles/config/sway ~/.config/
cp -r ~/dotfiles/config/waybar ~/.config/
cp -r ~/dotfiles/config/nvim ~/.config/
cp ~/dotfiles/.zshrc ~/.zshrcEdit ~/.config/sway/config and update:
# Line 228: Update wallpaper path
output * bg /path/to/your/wallpaper.png fill
# Line 268: Update autotile script path if needed
exec_always python3 ~/.config/sway/scripts/autotile.py# Run Powerlevel10k configuration wizard
p10k configure
# Create local config for machine-specific settings
echo '# Local settings' > ~/.zshrc.local
echo 'export MY_LOCAL_VAR="value"' >> ~/.zshrc.local# Launch Neovim (plugins will auto-install)
nvim
# Inside Neovim, sync plugins
:Lazy sync
# Check health
:checkhealthchsh -s $(which zsh)
# Log out and log back in| Keybinding | Action |
|---|---|
Super + Enter |
Open terminal (kitty) |
Super + d |
Application launcher (wofi) |
Super + q |
Kill focused window |
Super + h/j/k/l |
Move focus (vim-style) |
Super + Shift + h/j/k/l |
Move window |
Super + 1-9 |
Switch workspace |
Super + Shift + 1-9 |
Move window to workspace |
Super + f |
Fullscreen |
Super + Shift + Space |
Toggle floating |
Super + r |
Resize mode |
Super + Shift + c |
Reload config |
Super + Shift + e |
Exit Sway |
Print |
Screenshot (grim) |
| Key | Action |
|---|---|
XF86AudioMute |
Toggle mute |
XF86AudioLowerVolume |
Volume down |
XF86AudioRaiseVolume |
Volume up |
XF86MonBrightnessDown |
Brightness down |
XF86MonBrightnessUp |
Brightness up |
- Secrets: Use
.zshrc.localfor sensitive data (API keys, tokens) - Git: The repository ignores
.zshrc.local,.ssh/,.gnupg/, etc. - SSH: Never commit SSH keys or credentials
Edit ~/.config/sway/config:
# Lines 270-271
client.focused '#YOUR_COLOR' '#YOUR_COLOR' '#YOUR_COLOR' '#YOUR_COLOR'
client.unfocused '#YOUR_COLOR' '#YOUR_COLOR' '#YOUR_COLOR' '#YOUR_COLOR'Edit ~/.config/waybar/style.css:
window#waybar {
background-color: rgba(YOUR_R, YOUR_G, YOUR_B, YOUR_ALPHA);
}Edit ~/.config/sway/config:
# Line 17
set $term your-terminalEdit ~/.config/sway/config:
# Line 19
set $menu your-launcherEdit ~/.config/sway/config:
# Lines 263-266
gaps inner 10 # Change to your preference
gaps outer 10 # Change to your preference
default_border pixel 2 # Border width# Check logs
journalctl -xe | grep sway
# Run from another TTY to see errors
sway# Kill and restart
killall waybar
waybar
# Check for errors in terminal output# Inside Neovim
:Lazy sync
:Lazy restore
# Check health
:checkhealth# Rebuild font cache
fc-cache -fv
# Verify font installation
fc-list | grep JetBrains# Install i3ipc
pip install --user i3ipc
# Test script manually
python3 ~/.config/sway/scripts/autotile.py- LazyVim: Neovim config is based on LazyVim. See their docs for more info.
- Wayland Only: This setup uses Sway (Wayland). Not compatible with X11.
- Paths: Some paths are hardcoded for user
anddrs. Update them for your username.
Feel free to fork and customize! If you find bugs or have suggestions, open an issue.
This is free and unencumbered software released into the public domain.
Enjoy your new setup! ๐
For questions or issues, check the AGENTS.md file for detailed technical information.

