Skip to content

Repository files navigation

My Minimal Wayland Dotfiles

📌 About This Repository

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.


🧰 Tools & Software

1. Core Stack

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

2. Optional & Taste

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

3. Custom Commands & Aliases

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 .png file in your current directory.

4. Special Keybinds

  • MOD+SHIFT+V: A universal force-paste shortcut for Wine/Proton games running under XWayland. It uses wtype to read your Wayland clipboard and type it out as raw keystrokes, completely bypassing the broken clipboard synchronization between Wayland and Wine!

🛠️ How it Works (GNU Stow)

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.


🚀 Installation & Deployment

If you are setting this up on a fresh system or restoring a backup, follow these steps:

1. Install GNU Stow

Ensure Stow is installed on your Linux system:

# Fedora
sudo dnf install stow

# Arch Linux
sudo pacman -S stow

# Ubuntu/Debian
sudo apt install stow

2. Clone the Repository

Clone the dotfiles into your workspace folder:

mkdir -p ~/Workspace
cd ~/Workspace
git clone https://github.com/Smiffeed/dotfiles.git
cd dotfiles

3. Remove Existing Default Configurations

Stow 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 ~/.vimrc

4. Symlink with Stow

Run 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.

🔄 Managing Configurations

Adding a New Application Package

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 ~ foot

Tip: If the file belongs directly in ~ (like .bashrc), skip the .config folder and put it straight in the package root (e.g. bash/.bashrc).

Restowing / Updating Links

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 ~ waybar

Unstowing / Removing Links

To cleanly remove configurations and delete the symlinks without deleting your repository files, run Delete (-D):

cd ~/Workspace/dotfiles
stow -D -t ~ niri waybar

🤖 AI Agent Integration & Commits

This 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!

Syncing Changes

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"

References

Packages

Contributors

Languages