ZSH-Manager is a powerful, lightweight, and flexible framework that enables you to maintain a single, unified ZSH configuration across Linux, macOS, and Windows. Designed for developers, system administrators, and power users, ZSH-Manager ensures a consistent shell experience across all operating systems.
- ✅ Seamless Cross-Platform Support: Works flawlessly on Linux, macOS, and Windows.
- ✅ Support Environment variables: Easy and extensive way to use Environment variables.
- ✅ Path Handling: Easy and extensive way to handle Path variables.
- ✅ Portable & Unified ZSH Configuration: Manage all your shell settings from one place.
- ✅ Customizable & Modular: Use preloaded configurations and extend functionality with custom modules.
- ✅ Compatible with All ZSH Frameworks: Supports Oh-My-Zsh, Prezto, Antigen, and Zim.
- ✅ Lightweight & Fast: Minimal dependencies, designed for performance.
- ✅ Effortless Synchronization: Easily sync your settings via Git, Dropbox, or cloud services.
- ✅ Automated Setup: Quickly set up using the provided symlink script.
zsh-manager/
├── README.md # Documentation
├── run-to-symlink.sh # Setup script to symlink .zshrc
├── .zshrc # Main ZSH configuration file
├── preload_configs/ # OS-specific preloaded configurations
│ ├── common/ # Shared configurations
│ ├── linux/ # Linux-specific configs
│ │ └── path.sh # Linux-specific path configurations
│ ├── macos/ # macOS-specific modules
│ │ └── path.sh # macOS-specific path configurations
│ ├── windows/ # Windows-specific configs
│ │ └── path.sh # Windows-specific path configurations
├── modules/ # Custom modules (aliases, functions, etc.)
│ ├── common/ # Cross-platform modules
│ ├── linux/ # Linux-specific modules
│ ├── macos/ # macOS-specific modules
│ ├── windows/ # Windows-specific modules
git clone git@github.com:MRZ07/zsh-manager.gitMove your existing .zshrc file to the framework’s root folder
./run-to-symlink.shThis script will create a symlink to the recently moved configuration in the framework’s root folder.
- Add OS-specific preloaded configs in
preload_configs/ - Add OS-specific Environment/Path configs in
preload_configs/*os*/path.sh" - Extend functionality with custom modules in
modules/
ZSH-Manager automatically detects your operating system and loads the appropriate configurations.
- Common settings (
preload_configs/common/) are loaded first. - OS-specific settings (
preload_configs/linux/,macos/,windows/) are applied afterward.
- Store custom functions, aliases, and scripts in
modules/. - Modules are categorized into common and OS-specific folders.
- Ignore specific modules or configurations by prefixing folder names with
#(e.g.,#ignored_module/).
- The setup script (
run-to-symlink.sh) automatically links.zshrcto the framework. - This allows easy switching between configurations without modifying system files.
- Works seamlessly on Linux, macOS, and Windows (WSL, Git Bash, Cygwin, MSYS2).
- Automatically loads common and OS-specific aliases, functions, and environment variables.
- Organize your scripts with a modular structure.
- Supports any additional ZSH plugins or external tools.
- Lightweight with minimal overhead.
- Fast execution with optimized loading logic.
- Easily sync configurations across devices using Git, Dropbox, or cloud services.
- Compatible with Oh-My-Zsh, Prezto, Antigen, Zim, and more.
- Add, remove, or modify configurations as needed.
- Ignore specific scripts or modules by naming them with
#.
Place your custom ZSH scripts inside the corresponding modules/ folder:
modules/
├── common/
│ ├── aliases.sh # Shared aliases
│ ├── functions.sh # Shared functions
│ ├── style/
│ │ └── starship.toml # Custom Starship prompt config
├── linux/
│ ├── linux_aliases.sh # Linux-specific aliases
├── macos/
│ ├── macos_shortcuts.sh # macOS-specific functions
├── windows/
│ ├── win_helpers.sh # Windows-specific helpersTo prevent specific scripts from being loaded, prefix the filename or folder with #:
modules/
├── common/
│ ├── aliases.sh
│ ├── #deprecated_aliases.sh # This file will be ignored
│ ├── #old_scripts/ # This folder will be ignoredPlace your env variables inside your home directory ~/.env.sh folder:
export ENV_VAR1="Value1"We welcome contributions! Feel free to submit issues, feature requests, or pull requests.
ZSH-Manager is open-source and available under the MIT License.
🔥 Start using ZSH-Manager today and streamline your ZSH configuration across all platforms! 🚀