A collection of shell configuration files for a modern, productive terminal experience. This repository contains Zsh configuration with Zinit plugin manager and Fastfetch system information display. Created by og GeneCodeSavvy & enhanced by Buildwithmanav
Before installing, ensure you have:
- Git - For cloning repositories and plugin management
- Zsh - Shell (usually pre-installed on macOS and most Linux distributions)
- curl or wget - For downloading installation scripts
The configuration integrates with these tools (they'll work without them, but features will be limited):
- Starship - Cross-shell prompt
- FZF - Fuzzy finder
- Zoxide - Smart directory jumper
- eza - Modern
lsreplacement - fd - Fast
findreplacement - Bun - JavaScript runtime
Zsh comes pre-installed on macOS. Verify with:
zsh --versionIf not installed, install via Homebrew:
brew install zshNote: This configuration uses Zinit instead of Oh My Zsh, but if you want Oh My Zsh as a base, you can install it:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"However, this config will automatically install Zinit, so Oh My Zsh is optional.
Using Homebrew:
brew install fastfetchOr using MacPorts:
sudo port install fastfetchOr build from source:
git clone https://github.com/fastfetch-cli/fastfetch.git
cd fastfetch
mkdir build && cd build
cmake ..
cmake --build . -j
sudo cmake --install .# Clone or navigate to this repository
cd /path/to/config
# Backup existing config (if any)
[ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.backup
# Copy zsh config
cp "zsh config/.zshrc" ~/.zshrc
# Create fastfetch config directory
mkdir -p ~/.config/fastfetch
# Copy fastfetch config
cp "fast fetch config/config.jsonc" ~/.config/fastfetch/config.jsonc# Add zsh to allowed shells
echo /opt/homebrew/bin/zsh | sudo tee -a /etc/shells
# Change default shell
chsh -s /opt/homebrew/bin/zshClose and reopen your terminal, or run:
exec zshUbuntu/Debian:
sudo apt update
sudo apt install zsh git curlFedora/RHEL/CentOS:
sudo dnf install zsh git curlArch Linux:
sudo pacman -S zsh git curlopenSUSE:
sudo zypper install zsh git curlsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"Note: This config uses Zinit, which will auto-install on first run.
Ubuntu/Debian (using apt):
sudo apt install fastfetchFedora/RHEL/CentOS:
sudo dnf install fastfetchArch Linux (AUR):
yay -S fastfetch
# or
paru -S fastfetchBuild from source:
git clone https://github.com/fastfetch-cli/fastfetch.git
cd fastfetch
mkdir build && cd build
cmake ..
cmake --build . -j
sudo cmake --install .# Clone or navigate to this repository
cd /path/to/config
# Backup existing config (if any)
[ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.backup
# Copy zsh config
cp "zsh config/.zshrc" ~/.zshrc
# Create fastfetch config directory
mkdir -p ~/.config/fastfetch
# Copy fastfetch config
cp "fast fetch config/config.jsonc" ~/.config/fastfetch/config.jsonc# Verify zsh is in /etc/shells
grep -q /usr/bin/zsh /etc/shells || echo /usr/bin/zsh | sudo tee -a /etc/shells
# Change default shell
chsh -s $(which zsh)exec zsh-
Install WSL:
Open PowerShell as Administrator and run:
wsl --installOr for a specific distribution:
wsl --install -d Ubuntu
-
Follow Linux installation steps above within your WSL distribution.
-
Install Windows Terminal (optional but recommended):
winget install Microsoft.WindowsTerminal
-
Install Git for Windows (includes Git Bash):
- Download from: https://git-scm.com/download/win
- During installation, ensure "Git Bash Here" is enabled
-
Install Zsh for Git Bash:
# In Git Bash pacman -S zsh -
Install Fastfetch:
# Build from source (requires CMake and a C compiler) git clone https://github.com/fastfetch-cli/fastfetch.git cd fastfetch mkdir build && cd build cmake .. cmake --build . -j
-
Install Configuration Files:
# Navigate to config directory cd /path/to/config # Backup existing config [ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.backup # Copy configs cp "zsh config/.zshrc" ~/.zshrc mkdir -p ~/.config/fastfetch cp "fast fetch config/config.jsonc" ~/.config/fastfetch/config.jsonc
-
Install MSYS2:
- Download from: https://www.msys2.org/
-
Install Zsh and Fastfetch:
pacman -S zsh fastfetch git curl
-
Follow the configuration steps from Option 2.
The Zsh configuration includes:
- Zinit Plugin Manager - Automatically installed on first run
- Syntax Highlighting - Real-time command syntax highlighting
- Autosuggestions - Suggests commands based on history
- FZF Tab Completion - Fuzzy tab completion
- History Substring Search - Search history with arrow keys
- Auto-notify - Notifications for long-running commands
- You Should Use - Reminds you about available aliases
- Oh My Zsh Snippets - Useful plugins (git, sudo, extract, etc.)
Edit ~/.zshrc to customize:
- Target Date Countdown: Change the date in the
remaining_daysfunction call (line 431) - Aliases: Modify the aliases section (lines 367-417)
- Plugins: Add or remove Zinit plugins (lines 69-102)
- Local Config: Create
~/.zshrc.localfor machine-specific settings
After making any changes, reload your configuration:
source ~/.zshrcOr use the built-in alias:
reloadNote: Always run source ~/.zshrc after:
- Adding or removing plugins
- Modifying aliases or functions
- Changing environment variables
- Removing configuration lines
- When configuration changes don't seem to take effect
The Fastfetch config displays system information on terminal startup.
Edit ~/.config/fastfetch/config.jsonc:
-
Replace
{YOUR USERNAME}with your actual username in:- Line 5: Logo source path
- Line 20: Title format
-
Custom Logo (Optional):
- Place your logo at
~/.config/fastfetch/yourlogo.png - Adjust width, height, and padding as needed
- Place your logo at
-
Modules: Add or remove modules from the
modulesarray to customize what information is displayed -
Colors: Change the
display.colorvalue to match your theme
Note: Fastfetch config changes take effect on the next terminal session. No need to reload zsh config for fastfetch changes.
- zsh-syntax-highlighting - Command syntax highlighting
- zsh-autosuggestions - Command autosuggestions
- zsh-completions - Additional completions
- fzf-tab - Fuzzy tab completion
- zsh-history-substring-search - History search
- zsh-auto-notify - Long command notifications
- zsh-you-should-use - Alias reminders
- LS_COLORS - Enhanced directory colors
remaining_days <YYYY-MM-DD>- Calculate days until a target datemkcd <directory>- Create directory and cd into itextract <file>- Extract various archive formats
- Starship - Modern prompt (if installed)
- FZF - Fuzzy finder (if installed)
- Zoxide - Smart
cd(if installed) - eza - Enhanced
ls(if installed) - Bun - JavaScript runtime (if installed)
c/cls- Clear screenzshrc- Edit zsh configreload- Reload zsh configll- Long list with iconslt- Tree viewbro- Bun run devgst,gco,gp,gl- Git shortcuts- And many more...
If you've made changes to ~/.zshrc but they're not taking effect:
-
Reload the configuration:
source ~/.zshrc
-
If that doesn't work, restart your shell:
exec zsh -
Check for errors:
zsh -n ~/.zshrc -
Verify the changes were saved:
cat ~/.zshrc | grep -A 5 "your_change_here"
Common scenarios requiring source ~/.zshrc:
- After adding/removing plugins
- After modifying aliases
- After changing environment variables
- After removing configuration lines
- When new commands aren't recognized
- When aliases don't work
macOS:
brew install zshLinux:
# Ubuntu/Debian
sudo apt install zsh
# Fedora
sudo dnf install zsh
# Arch
sudo pacman -S zshIf Zinit fails to install automatically:
mkdir -p ~/.local/share/zinit
git clone https://github.com/zdharma-continuum/zinit.git ~/.local/share/zinit/zinit.gitThen reload your configuration:
source ~/.zshrcOr restart your terminal.
-
Verify installation:
which fastfetch fastfetch --version
-
If not found, install using your package manager (see installation sections above)
-
On Windows, ensure it's in your PATH
-
Disable startup display: Comment out the
fastfetchandremaining_dayscalls in~/.zshrc(lines 425-431) -
Reduce plugins: Comment out unused plugins in the plugins section
-
Use lazy loading: Some tools (like NVM) are already lazy-loaded in this config
After making changes, reload:
source ~/.zshrc# Make scripts executable
chmod +x ~/.zshrc
# Fix directory permissions
chmod 755 ~/.config
chmod 755 ~/.local/share-
Reload the configuration:
source ~/.zshrc
If this doesn't work, try:
exec zsh -
Verify zsh is your shell:
echo $SHELL
-
Check config file location:
ls -la ~/.zshrc -
Test config manually:
zsh -c "source ~/.zshrc" -
Check for syntax errors:
zsh -n ~/.zshrcThis will show any syntax errors without executing the file.
- WSL: Ensure you're running commands inside WSL, not PowerShell
- Git Bash: Some features may be limited; WSL is recommended
- Path issues: Use forward slashes
/instead of backslashes\
brew install \
starship \
eza \
fzf \
zoxide \
fd \
fastfetch \
tree \
oven-sh/bun/bun \
node@22 \
nvm \
unzip \
unrar \
p7zip \
gzip \
bzip2 \
git \
net-tools
If you have improvements or find issues, please open an issue or submit a pull request.
Happy coding! 🚀