I've moved to using GNU Stow for my personal dotfiles maintenance instead of a bare repository.
Caution
Backup your files!
Always cd ~/dotfiles dir before any stow command
- i3wm (Currently using)
- Polybar
- Qtile (WARNING: Not maintained, broken config...)
- Hyprland
- Waybar
- Rofi : for application launcher
- Dunst : for notification
- Flameshot : for screenshot
- Picom : for compositor
- Pcmanfm : for file management
- gammastep : for blue light filter
- Ghostty : Currently using because support images and tabs well.
- Alacritty : Previously used for better performance but lack of tabs support.
- Kitty : Previously used for good features but performance is not as good as Alacritty.
- Zsh (Currently using)
- oh-my-zsh
- Bash
-
Tmux : Currently using for terminal multiplexer.
-
Starship : Powerlevel10k alternative written in Rust for prompt for any shell.
-
MangoHud : For monitoring system performance in games.
-
containers : Podman config for setting custom directory for containers and images.
-
mimeapps.list : For setting default applications for file types and protocols.
-
- For automatic CPU frequency scaling.
-
- My Script config to automatically compress tar files after creation.
-
- My script config to automate setup for linux distros.
-
- My script config to automate appimage management.
- lazygit nodejs npm laurocks tree-sitter-cli
- uv oh-my-zsh stow zsh
Note
The setup script setup.sh helps automate the process of organizing your dotfiles into a
structured format and deploying them using GNU Stow. It provides options for setting up,
deploying, and cleaning up backup files, making it easier to manage your dotfiles.
./setup.sh --help
Usage: setup.sh [OPTION]
Options:
--move Run move: preview and move files to dotfiles structure
--stow Run stow: preview and apply stow symlinks
--clean Clean up backup files
--git (Experimental) Initialize the dotfiles Git repository
--help Show this help messageNote
This would move your dotfiles to ~/dotfiles
It would show preview of changes before applying them
It creates backups of original files before moving them to prevent data loss
- For .config files:
~/.config/nvimto~/dotfiles/dot-config/nvim - For dot files:
~/.vimto~/dotfiles/dot-vim - For dot files:
~/.zshrcto~/dotfiles/dot-zshrc
# Make the setup script executable
chmod +x setup.sh
# Run the setup script
./setup.sh --moveNote
This would stow your dotfiles to your home directory It would show preview of changes before applying them
- This using stow to deploy your files.
- Command used for preview:
stow -n -v --dotfiles --target="$HOME" . - Command used for deploy:
stow -v --dotfiles --target="$HOME" .
# This would deploy your dotfiles to your home directory
./setup.sh --stowNote
This would remove backup files created during setup It would show preview of backups to be removed before applying them
./setup.sh --clean- Create folder ~/dotfiles
- initialize git repo
echo "# dotfiles" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/Cyber-Syntax/dotfiles.git
git push -u origin main- Make folder for ~/.config
mkdir -p ~/dotfiles/dot-config/- Copy your configs
cp -r ~/.config/nvim ~/dotfiles/dot-config/- test stow dry without change anything to make sure about changes correct
cd ~/dotfiles &
stow -n -v --dotfiles --target="$HOME" .- If everythings work perfect, stow your files
cd ~/dotfiles &
stow --dotfiles --target="$HOME" .- Alias for stow
~/dotfiles/.stowrc:
--dotfiles
--target=/home/developer
--ignore=.stowrc
--ignore=setup.sh
--ignore=.stfolder
--ignore=stversions
--ignore=docs- stow files to symlink
cd ~/dotfiles &
stow .