#!/bin/sh ## OS/ENVIRONMENT INFO DETECTION ostype="$(uname)" version=8.3.1 font=nerd distrotype=none osi="" ki="" ri="󰍛" pi="󰏔" ui="󰅶" ci="" case $1 in "-p") font=phosphor osi="" ki="" ri="" pi="" ui="" ci="" ;; "-c") font=cozette ki="♥" ri="" pi="" ui="" ci="" ;; "-e") font=emoji osi="🐧" ki="💓" ri="🐐" pi="📦" ui="☕" ci="🎨" ;; "-v") echo "NerdFetch $version" exit ;; "-h") echo "Flags: -c: Cozette font -p: Phosphor font -e: Emoji font -v: Version" exit ;; esac if command -v getprop 1>/dev/null; then distrotype=android fi kernel="$(echo $(uname -r) | cut -d'-' -f1-1)" case $ostype in *"Linux"*) if [ $distrotype = android ]; then host="$(hostname)" USER="$(whoami)" os="Android $(getprop ro.build.version.release)" case $font in phosphor) osi="" ;; emoji) osi="🤖" ;; *) osi="󰀲" ;; esac else host="$(cat /proc/sys/kernel/hostname)" . /etc/os-release if [ -f /bedrock/etc/bedrock-release ]; then os="$(brl version)" else os="${PRETTY_NAME}" if [ $font = nerd ]; then case $(echo $ID | sed 's/ .*//') in debian) osi="" ;; arch) osi="󰣇" ;; endeavouros) osi="" ;; fedora) osi="" ;; gentoo) osi="" ;; rhel) osi="" ;; slackware) osi="" ;; void) osi="" ;; alpine) osi="" ;; nixos) osi="󱄅" ;; artix) osi="" ;; exherbo) osi="󰆚" ;; mageia) osi="" ;; manjaro) osi="" ;; opensuse) osi="" ;; solus) osi="" ;; ubuntu) osi="" ;; linuxmint) osi="󰣭" ;; trisquel) osi="" ;; puppy) osi="" ;; coreos) osi="" ;; mx) osi="" ;; vanilla) osi="" ;; pop_os) osi="" ;; raspbian) osi="" ;; deepin) osi="" ;; almalinux) osi="" ;; garuda) osi="" ;; centos) osi="" ;; rocky) osi="" ;; esac elif [ $font = cozette ]; then case $(echo $ID | sed 's/ .*//') in debian) osi="" ;; arch) osi="" ;; fedora) osi="" ;; gentoo) osi="" ;; slackware) osi="" ;; void) osi="" ;; alpine) osi="" ;; nixos) osi="" ;; mageia) osi="" ;; manjaro) osi="" ;; opensuse) osi="" ;; ubuntu) osi="" ;; linuxmint) osi="" ;; coreos) osi="" ;; centos) osi="" ;; esac fi fi fi shell=$(basename "$SHELL") ;; *"Darwin"*) host="$(hostname -f | sed -e 's/^[^.]*\.//')" mac_product="$(/usr/libexec/PlistBuddy -c "Print:ProductName" /System/Library/CoreServices/SystemVersion.plist)" mac_version="$(/usr/libexec/PlistBuddy -c "Print:ProductVersion" /System/Library/CoreServices/SystemVersion.plist)" os="${mac_product} ${mac_version}" case $font in nerd) osi="" ;; phosphor) osi="" ;; cozette) osi="" ;; emoji) osi="🍎" ;; esac ;; *"FreeBSD"*) host="$(hostname)" distrotype=bsd os="FreeBSD $(freebsd-version | sed 's/-.*//')" case $font in nerd) osi="" ;; phosphor) osi="" ;; cozette) osi="" ;; emoji) osi="😈" ;; esac ;; *"OpenBSD"*) host="$(hostname)" distrotype=bsd os="OpenBSD $(uname -r)" case $font in nerd) osi="" ;; phosphor) osi="" ;; cozette) osi="⌘" ;; emoji) osi="🐡" ;; esac ;; *"NetBSD"*) host="$(hostname)" distrotype=netbsd os="NetBSD $(uname -r)" case $font in nerd) osi="󰉀" ;; phosphor) osi="" ;; cozette) osi="" ;; emoji) osi="🚩" ;; esac ;; *) os="Unix-like" host="host" ;; esac ## PACKAGE MANAGER AND PACKAGES DETECTION MANAGER=$(command -v nix-env pkg flatpak yum zypper dnf rpm dpkg-query brew port pacman xbps-query emerge cave apk kiss pmm /usr/sbin/slackpkg bulge birb yay paru pacstall cpm pmm opkg eopkg getprop 2>/dev/null) manager=$(basename "$MANAGER") if [ $distrotype = netbsd ]; then manager="pkg_info-netbsd" fi case $manager in cpm) packages="$(cpm C)" ;; flatpak) packages="$(flatpak list --app | wc -l)" ;; brew) packages="$(printf '%s\n' "$(brew --cellar)/"* | wc -l)" ;; port) packages="$(($(port installed | wc -l) - 1))" ;; dpkg-query) packages="$(dpkg-query -f '${binary:Package}\n' -W | wc -l)" ;; rpm) packages="$(rpm -qa --last | wc -l)" ;; yum) packages="$(yum list installed | wc -l)" ;; dnf) packages="$(dnf list installed | wc -l)" ;; zypper) packages="$(zypper se | wc -l)" ;; pacman) packages="$(pacman -Q | wc -l)" ;; yay) packages="$(yay -Q | wc -l)" ;; paru) packages="$(paru -Q | wc -l)" ;; pacstall) packages="$(pacstall -L | wc -l)" ;; kiss) packages="$(kiss list | wc -l)" ;; emerge) packages="$(qlist -I | wc -l)" ;; pkg) packages="$(pkg info | wc -l | tr -d ' ')" ;; cave) packages="$(cave show installed-slots | wc -l)" ;; xbps-query) packages="$(xbps-query -l | wc -l)" ;; nix-env) packages="$(nix-store -q --requisites /run/current-system/sw | wc -l)" ;; apk) packages="$(apk list --installed | wc -l)" ;; pmm) packages="$(/bedrock/libexec/pmm pacman pmm -Q 2>/dev/null | wc -l)" ;; opkg) packages="$(opkg list-installed | wc -l)" ;; eopkg) packages="$(eopkg li | wc -l)" ;; /usr/sbin/slackpkg) packages="$(ls /var/log/packages | wc -l)" ;; bulge) packages="$(bulge list | wc -l)" ;; birb) packages="$(birb --list-installed | wc -l)" ;; pkg_info) packages="$(pkg_info -A | wc -l)" manager="pkg" ;; pkg_info-netbsd) packages="$(pkg_info -a | wc -l)" manager="pkg" ;; *) if [ $distrotype = android ]; then packages="$(pkg list-installed 2>/dev/null | wc -l)" manager="pkg" else packages="$(ls /usr/bin | wc -l)" manager="bin" fi ;; esac packages="${packages#"${packages%%[![:space:]]*}"}" manager=$(echo $manager | sed "s/-query//; s/\/usr\/.*\///") ## UPTIME DETECTION if [ $distrotype = android ]; then uptime="$(echo $(uptime -p) | cut -c 4-)" elif [ $distrotype = bsd ] || [ $distrotype = netbsd ]; then uptime="$(uptime | sed -e 's/.* up //; s/, [0-9]* user.*//')" else case $ostype in *"Linux"*) IFS=. read -r s _ /dev/null; then mempercent="($(expr $(expr ${mem_used} \* 100 / ${mem_full}))%)" fi ## DEFINE COLORS bold='' black='' red='' green='' yellow='' blue='' magenta='' cyan='' white='' grey='' reset='' ## USER VARIABLES -- YOU CAN CHANGE THESE lc="${reset}${bold}${magenta}" # labels nc="${reset}${bold}${yellow}" # user hn="${reset}${bold}${blue}" # hostname ic="${reset}${green}" # info c0="${reset}${grey}" # first color c1="${reset}${white}" # second color c2="${reset}${yellow}" # third color ## OUTPUT cat < ${c0}| ${lc}${ki} ${ic}${kernel}${reset} ${c0} /${c1}/ \\ ${c0}\\ ${lc}${ri} ${ic}${RAM}${memstat} ${mempercent} ${c0} ( ${c1}| | ${c0}/| ${lc}${pi} ${ic}${packages} (${manager})${reset} ${c2} _${c0}/\\ ${c1}__)${c0}/${c2}_${c0}) ${lc}${ui} ${ic}${uptime}${reset} ${c2} \/${c0}-____${c2}\/${reset} ${lc}${ci} ${red}███${green}███${yellow}███${blue}███${magenta}███${cyan}███${reset} EOF