Welcome to my dotfiles repository! This repo contains my personal configuration files for various applications and tools I use daily. By using GNU Stow, I keep these configurations organized and easily manageable across different machines.
GNU Stow is a symlink manager that allows you to manage your dotfiles (configuration files) across multiple applications from a single directory. It creates symbolic links (symlinks) from the directory where you store your dotfiles (e.g., ~/dotfiles) to their respective locations in your home directory.
This approach keeps your home directory clean, organized, and version-controlled, allowing for easy backups and synchronization between different machines.
- Directory Structure: You place your dotfiles in appropriately named subdirectories (e.g.,
i3,zsh) within your main dotfiles directory. - Create Symlinks: Stow creates symlinks from these subdirectories to your home directory or any other target directory.
- Manage Configurations: You can easily add, remove, or update configurations by simply running Stow commands.
- ZSH Shell Configuration:
- Custom
.zshrcwith Oh My Zsh, Powerlevel10k theme, and essential plugins - Aliases, functions, and personalized prompt settings
- NVM and FZF integration
- Custom
- i3 Window Manager:
- Complete i3 configuration with custom keybindings and layouts
- Multi-monitor support and workspace management
- Integration with polybar, rofi, and other tools
- Polybar Status Bar:
- Custom status bar with system monitoring
- Workspace indicators, audio controls, and system info
- Kitty Terminal:
- Terminal emulator with Catppuccin theme
- Custom font and transparency settings
- Neovim:
- Modern Neovim configuration with Lazy.nvim plugin manager
- Custom plugins and settings
- Tmux:
- Terminal multiplexer with Catppuccin theme
- Session management and navigation plugins
- VSCode Profiles:
- Multiple code profiles for different development environments
- Custom settings and extensions
- Picom Compositor:
- Window effects and transparency configuration
- Rofi Application Launcher:
- Custom menus for applications, windows, and power management
- Xresources & Xsettingsd:
- X11 resource configuration for consistent theming
- Font Configuration:
- Nerd Fonts and custom font setup
- Gogeta Wallpapers:
- Custom wallpaper collection
To set up these dotfiles on your system, follow these steps:
First, clone this repository to your home directory:
git clone https://github.com/subomega1/dotfiles.git
cd dotfilesFor a complete setup with all dependencies, run the automated setup script:
./setup.shThis script will:
- Install all required system packages
- Set up ZSH with Oh My Zsh and Powerlevel10k
- Install Nerd Fonts
- Configure Neovim plugins
- Set up Tmux plugins
- Install additional tools (Spicetify, FZF, etc.)
If you prefer manual installation, follow these steps:
Ensure that GNU Stow is installed on your system:
-
Debian/Ubuntu:
sudo apt install stow
-
Arch Linux:
sudo pacman -S stow
-
macOS (Homebrew):
brew install stow
Install the required system packages:
# Debian/Ubuntu
sudo apt install git curl wget stow xrandr feh i3lock kitty thunar rofi maim xdotool xclip pulseaudio-utils brightnessctl picom polybar tmux neovim zsh lxappearance arandr xautolock betterlockscreen network-manager network-manager-gnome policykit-1-gnome python3 python3-pip nodejs npm java cmake build-essential
# Arch Linux
sudo pacman -S git curl wget stow xorg-xrandr feh i3lock kitty thunar rofi maim xdotool xclip pulseaudio brightnessctl picom polybar tmux neovim zsh lxappearance arandr xautolock betterlockscreen networkmanager network-manager-applet polkit-gnome python nodejs npm jdk-openjdk cmake base-develInstall the required Nerd Fonts:
# Create fonts directory
mkdir -p ~/.local/share/fonts
# Download MesloLGS NF fonts
wget -O ~/.local/share/fonts/MesloLGS\ NF\ Regular.ttf "https://github.com/romkatv/powerlevel10k/raw/master/font/MesloLGS%20NF%20Regular.ttf"
wget -O ~/.local/share/fonts/MesloLGS\ NF\ Bold.ttf "https://github.com/romkatv/powerlevel10k/raw/master/font/MesloLGS%20NF%20Bold.ttf"
wget -O ~/.local/share/fonts/MesloLGS\ NF\ Italic.ttf "https://github.com/romkatv/powerlevel10k/raw/master/font/MesloLGS%20NF%20Italic.ttf"
wget -O ~/.local/share/fonts/MesloLGS\ NF\ Bold\ Italic.ttf "https://github.com/romkatv/powerlevel10k/raw/master/font/MesloLGS%20NF%20Bold%20Italic.ttf"
# Update font cache
fc-cache -fvRun the following commands to create symlinks for your desired configurations:
# Install all configurations
stow zsh i3 polybar kitty nvim tmux vscode picom rofi xresources xsettingsd font
# Or install individually
stow zsh
stow i3
stow polybar
# ... etcAfter stowing the configurations, complete the setup:
# Configure Powerlevel10k theme
p10k configure
# Install Tmux plugins
tmux source ~/.tmux.conf
# Install Neovim plugins
nvim --headless -c "Lazy! sync" -c "qa"
After setting up, use the following commands to manage your dotfiles:
-
To apply a new configuration:
stow <directory-name>
-
To remove a configuration:
stow -D <directory-name>
For example, to remove the i3 configuration:
stow -D i3This repository includes configurations for:
zsh/- ZSH shell with Oh My Zsh and Powerlevel10ki3/- i3 window manager with custom keybindingspolybar/- Status bar with system monitoringkitty/- Terminal emulator with Catppuccin themenvim/- Neovim editor with Lazy.nvim plugin managertmux/- Terminal multiplexer with Catppuccin themevscode/- VSCode profiles for different environmentspicom/- Compositor for window effectsrofi/- Application launcher and menusxresources/- X11 resource configurationxsettingsd/- X11 settings daemonfont/- Nerd Fonts configurationgogeta/- Custom wallpaper collection
- Linux Distribution: Ubuntu/Debian, Arch Linux, or similar
- Display Server: X11 (Xorg)
- Window Manager: i3-gaps or i3-wm
- Shell: ZSH
git,curl,wget- Basic utilitiesstow- Symlink manager for dotfilesxrandr,arandr- Display managementfeh- Image viewer and wallpaper setteri3lock,betterlockscreen- Screen lockingkitty- Terminal emulatorthunar- File managerrofi- Application launchermaim,xdotool,xclip- Screenshot and clipboard toolspulseaudio-utils,playerctl- Audio controlsbrightnessctl- Brightness controlpicom- Compositorpolybar- Status bartmux- Terminal multiplexerneovim- Text editorzsh- Shelllxappearance- GTK theme managerxautolock- Auto-lock screennetwork-manager,network-manager-gnome- Network managementpolicykit-1-gnome- Authentication agentpython3,nodejs,npm- Development toolsjava,cmake,build-essential- Build tools
- MesloLGS NF - Nerd Font for Powerlevel10k and icons
- Oh My Zsh - ZSH framework
- Powerlevel10k - ZSH theme
- zsh-autosuggestions - Command suggestions
- zsh-syntax-highlighting - Syntax highlighting
- fast-syntax-highlighting - Fast syntax highlighting
- zsh-autocomplete - Command completion
- NVM - Node Version Manager
- FZF - Fuzzy finder
- Lazy.nvim - Plugin manager
- Various plugins - See
nvim/.config/nvim/lua/plugins/for full list
- TPM - Tmux Plugin Manager
- vim-tmux-navigator - Seamless navigation
- tmux-sessionx - Session management
- catppuccin/tmux - Theme
- tmux-online-status - Online status indicator
- tmux-battery - Battery indicator
- autotiling - Automatic tiling
- Custom scripts - Lock/unlock, power management, media controls
- Custom modules - Workspace indicators, audio controls, system monitoring
- Custom scripts - WiFi menu, power menu, window switching
-
Fonts not displaying correctly:
fc-cache -fv
-
Polybar not starting:
# Check if polybar is installed which polybar # Check configuration polybar --config=~/.config/polybar/config.ini --log=trace toph
-
i3 not loading:
# Check i3 config syntax i3-config-wizard -
ZSH plugins not working:
# Reinstall Oh My Zsh sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
-
Neovim plugins not loading:
# Sync plugins nvim --headless -c "Lazy! sync" -c "qa"
- Check the configuration files for comments and documentation
- Review the setup scripts for installation steps
- Ensure all dependencies are properly installed
- Check system logs for error messages
If you have suggestions or improvements, feel free to open an issue or create a pull request. Contributions are welcome!
I hope you find these dotfiles helpful! Feel free to explore, use, and customize them to fit your needs.