A comprehensive collection of configuration files for my development environment, featuring Neovim, tmux, Sway, and more. Keep in mind that this is for my personal use and without any guarantees. This repository also uses some of my other scripts https://github.com/benjaminshawki/scripts
git clone https://github.com/benjaminshawki/dotfiles.git
cd dotfiles
./setup.sh # Interactive package installer (Arch Linux)
./install.sh # Symlink configurationsFor Arch Linux users, use the interactive setup script to install required packages:
./setup.shThis allows you to:
- Select which packages to install
- Automatically install from both official repos and AUR
- Set up environment variables
- Run the configuration installer
- Neovim - Highly customized editor with LSP, debugging, and extensive plugin support
- tmux - Terminal multiplexer with custom keybindings
- tmuxp - Session manager with pre-configured project layouts
- zsh - Shell configuration with custom aliases and scripts
- Sway - Tiling window manager configuration
- Waybar - Status bar for Wayland
- Foot - Fast, lightweight Wayland terminal emulator
- dunst - Notification daemon
- ranger - Terminal file manager
- zathura - PDF viewer
- lazygit - Terminal UI for git
- wayvnc - VNC server for Wayland
- Battery monitoring with systemd timers
- Screenshot with OCR
- Session management
- Project creation helpers
Before installation, ensure you have:
- Linux distribution with systemd
$XDG_CONFIG_HOMEand$XDG_DATA_HOMEenvironment variables set$DOTFILESenvironment variable pointing to the cloned repository- Git
dotfiles/
├── nvim/ # Neovim configuration
├── tmux/ # Tmux configuration
├── tmuxp/ # Tmuxp session templates
├── zsh/ # Zsh shell configuration
├── sway/ # Sway window manager
├── waybar/ # Waybar status bar
├── scripts/ # Custom utility scripts
├── fonts/ # Custom fonts
└── install.sh # Installation script
The install.sh script:
- Creates necessary directories
- Symlinks configuration files to appropriate locations
- Installs fonts to
$XDG_DATA_HOME/fonts - Sets up systemd services for battery monitoring
- Clones required plugins (tmux plugin manager)
After installation, launch tmux and press prefix + I to install plugins via TPM.
Launch Neovim and run :Lazy install to install all plugins.
The battery monitor service is automatically enabled. Check its status:
systemctl --user status battery-monitor.timerCreate new session templates in tmuxp/ following the existing YAML format.
- Neovim: Edit
nvim/lua/core/keymaps.lua - Tmux: Edit
tmux/tmux.conf - Sway: Edit
sway/config
Add new scripts to scripts/ and they'll be available in your PATH after symlinking.
- These dotfiles are tailored to my specific workflow and preferences
- Some configurations assume Arch Linux or similar distributions
- Backup your existing dotfiles before installation
- Review the install script before running to understand changes
Feel free to fork and adapt these dotfiles for your own use. If you find improvements that might benefit others, pull requests are welcome!
This repository is available under the MIT License. See individual components for their respective licenses.