This is a personal configuration space tailored specifically to my workflow, taste, and hardware setup. While it is built for my own daily use, I've made it public—if you are curious, you are more than welcome to look around and borrow anything you find useful!
This setup is a curated blend of various community configurations that I have combined, heavily tweaked, and customized. I have adjusted color themes, optimized application layouts, and hooked up my favorite minimalist tools to build my perfect desktop environment.
Note for myself and others: This is an ongoing work in progress. These instructions serve as both an installation guideline and a personal reference for the future.
These are the foundational tools that make up this desktop environment:
| Category | Tool / Software | Notes |
|---|---|---|
| Compositor | Niri | Scrollable-tiling Wayland compositor |
| Terminal | Foot | Fast, lightweight, Wayland-native terminal emulator |
| App Launcher | Fuzzel | Application launcher for Wayland |
| File Manager | Yazi | Blazing fast terminal file manager |
| Lock / Power | wlogout | Wayland logout menu |
These tools are heavily customized to my personal preferences, but are completely optional:
| Category | Tool / Software | Notes |
|---|---|---|
| Emoji Picker | Bemoji | Configured with auto-paste bypass for Wayland |
| Keyboard Mod | Kanata | Advanced software keyboard remapping |
I have added a few custom quality-of-life commands to .zshrc to speed up common workflows:
ghclone <search-term>: Instantly searches your GitHub repositories and clones the first match.paste-img: Pulls raw image data directly from your Wayland system clipboard and saves it as a.pngfile in your current directory.
MOD+SHIFT+V: A universal force-paste shortcut for Wine/Proton games running under XWayland. It useswtypeto read your Wayland clipboard and type it out as raw keystrokes, completely bypassing the broken clipboard synchronization between Wayland and Wine!
This repository manages configuration files using GNU Stow.
Instead of copying files directly into your system, Stow creates symbolic links (shortcuts) from this repository folder straight into your home (~) directory. Any edits you make within this repository automatically apply to your system instantly.
The folder structure is organized into modular app "packages". Notice how .config files and root home files (like .zshrc) are handled differently:
~/Workspace/dotfiles/
├── niri/ <-- Package Wrapper Name
│ └── .config/
│ └── niri/ <-- Links to ~/.config/niri/
├── waybar/
│ └── .config/
│ └── waybar/ <-- Links to ~/.config/waybar/
├── zsh/
│ └── .zshrc <-- Links directly to ~/.zshrc
└── vim/
└── .vimrc <-- Links directly to ~/.vimrc
I prefer GNU Stow because it makes tracking and versioning configurations with Git incredibly easy.
If you are setting this up on a fresh system or restoring a backup, follow these steps:
Ensure Stow is installed on your Linux system:
# Fedora
sudo dnf install stow
# Arch Linux
sudo pacman -S stow
# Ubuntu/Debian
sudo apt install stowClone the dotfiles into your workspace folder:
mkdir -p ~/Workspace
cd ~/Workspace
git clone https://github.com/Smiffeed/dotfiles.git
cd dotfilesStow cannot overwrite existing physical folders or files. You must back up or delete your current default configurations before linking:
rm -rf ~/.config/niri
rm -rf ~/.config/waybar
rm -f ~/.zshrc ~/.vimrcRun the following command from inside the ~/Workspace/dotfiles directory to safely generate symlinks:
stow -v -t ~ niri waybar zsh vim tmux mako foot fuzzel yazi-v(Verbose): Prints a confirmation checklist of every link created.-t ~(Target): Explicitly targets your User Home folder.
To track a new configuration folder (e.g., foot), mimic the home directory layout inside the repo:
# 1. Create the mirrored directory path inside dotfiles
mkdir -p ~/Workspace/dotfiles/foot/.config/
# 2. Move your real local configuration inside it
mv ~/.config/foot ~/Workspace/dotfiles/foot/.config/
# 3. Use Stow to link it back to your system
cd ~/Workspace/dotfiles
stow -v -t ~ footTip: If the file belongs directly in ~ (like .bashrc), skip the .config folder and put it straight in the package root (e.g. bash/.bashrc).
If you add new loose script files inside an existing configuration folder, force Stow to refresh and recalculate the symlinks using Restow (-R):
cd ~/Workspace/dotfiles
stow -R -v -t ~ waybarTo cleanly remove configurations and delete the symlinks without deleting your repository files, run Delete (-D):
cd ~/Workspace/dotfiles
stow -D -t ~ niri waybarThis repository includes custom AI Agent Skills (in .agents/skills/) designed specifically for my own AI assistant to help me manage this repository. These are just for my personal workflow—other people do not need to use them to install or run these dotfiles. However, you are welcome to look at them to see how I automate things!
When pushing updates, we strictly use Conventional Commits (e.g., feat(niri): update keybinds). A script is provided to enforce this workflow:
cd ~/Workspace/dotfiles
./push.sh "feat(scope): your commit message here"