QuickZSH
is a script designed to quickly install and configure zsh
and oh-my-zsh
with a powerful and aesthetically pleasing shell environment. It includes themes, fonts, and plugins to enhance your terminal experience.
- Theme: Powerlevel10k
- Fonts: Nerd-Fonts
- Plugins:
Your command prompt will look like this (easily customizable):
- User : Directory : Git stats : Last command exit code : Free memory : Load : Time
git
to clone the repository.python3
orpython
is required to run the option '-c' which copies history from .bash_history.
git clone https://github.com/dioni-dev/QuickZSH
cd QuickZSH
./install.sh -c # only run with '-c' the first time, running multiple times will duplicate history entries
This will install the setup under ~/.config/qzsh/
. Change your terminal's fonts to either "RobotoMono Nerd Font", "Hack Nerd Font", or "DejaVu Sans Mono Nerd Fonts". You can also manually install Nerd Fonts of your choice.
The setup includes the following useful aliases and Oh My Zsh plugins. You can add more or overwrite these in your personal zsh config files under ~/.config/qzsh/zshrc/
.
l="ls --hyperlink=auto -lAhrtF"
: Show all except . .. , sort by recent, / at the end of folders, clickable.e="exit"
: Exit terminal.myip="wget -qO- https://wtfismyip.com/text"
: Quickly show external IP address.ip="ip --color=auto"
: Use colored output for ip command.update='sudo apt update && sudo apt upgrade -y'
: Update system.clean='sudo apt autoremove && sudo apt autoclean'
: Clean system.c='clear'
: Clear terminal.
zsh-completions
zsh-autosuggestions
zsh-syntax-highlighting
history-substring-search
screen
systemd
web-search
extract
z
sudo
fzf-tab
marker
- cheat: Fetch cheat sheets.
cheat() { if [ "$2" ]; then curl "https://cheat.sh/$1/$2+$3+$4+$5+$6+$7+$8+$9+$10" else curl "https://cheat.sh/$1" fi }
- speedtest: Perform speed tests.
speedtest() { curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 - }
- dict: Find dictionary definitions.
dict() { if [ "$3" ]; then curl "dict://dict.org/d:$1 $2 $3" elif [ "$2" ]; then curl "dict://dict.org/d:$1 $2" else curl "dict://dict.org/d:$1" fi }
- ipgeo: Find geo information from IP.
ipgeo() { # Specify IP or your own IP will be used if [ "$1" ]; then curl "http://api.db-ip.com/v2/free/$1" else curl "http://api.db-ip.com/v2/free/$(myip)" fi }
- extract: Extract various compressed file formats.
extract() { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; # Extract .tar.bz2 files *.tar.gz) tar xzf $1 ;; # Extract .tar.gz files *.bz2) bunzip2 $1 ;; # Extract .bz2 files *.rar) unrar e $1 ;; # Extract .rar files *.gz) gunzip $1 ;; # Extract .gz files *.tar) tar xf $1 ;; # Extract .tar files *.tbz2) tar xjf $1 ;; # Extract .tbz2 files *.tgz) tar xzf $1 ;; # Extract .tgz files *.zip) unzip $1 ;; # Extract .zip files *.Z) uncompress $1 ;; # Extract .Z files *.7z) 7z x $1 ;; # Extract .7z files *) echo "'$1' cannot be extracted via extract()" ;; # Handle unknown file types esac else echo "'$1' is not a valid file" # Error message for invalid file fi }
- mkcd: Create a directory and change to it.
mkcd() { mkdir -p "$1" # Create directory if it doesn't exist cd "$1" # Change to the created directory }
- path: Display PATH variable in a readable format.
path() { echo -e ${PATH//:/\\n} # Replace colons with newlines for readability }
- iplocal: Get local IP addresses.
iplocal() { ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -f1 -d'/' # Extract local IPs excluding localhost }
- Place your configurations in
~/.config/qzsh/zshrc/
to override the default settings. - Customize the Powerlevel10k settings by editing your personal config file under
~/.config/qzsh/zshrc/
.
- Use any terminal besides QTerminal (default in Kali-Xfce). Recommended:
xfce4-terminal
for Kali. - If already using zsh, your config will be backed up to
.zshrc-backup-date
. - If text/icons look broken, ensure your terminal uses Nerd fonts. Recommended: "RobotoMono Nerd Font".
marker
shortcut "Ctrl+t" clashes with fzf, rebound to "Ctrl+b".- All Oh My Zsh plugins are installed under
~/.config/qzsh/oh-my-zsh/plugin
. - Other tools (fzf, marker, todo) are installed in
~/.config/qzsh/
. zsh-autosuggestions
is not enabled due to conflict with Marker. Enable it by addingplugins+=(zsh-autosuggestions)
to your personal config file if not using Marker.
To uninstall, simply delete ~/.zshrc
and ~/.config/qzsh/
. Restore your original .zshrc
from the backup created in your home folder.
Suggestions for cool tools are always welcome! Feel free to open an issue or submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
For support or inquiries, please open an issue on the GitHub repository.