first commit
This commit is contained in:
commit
c79e9e77d0
4 files changed
+364
No files matched your search
@@ -0,0 +1,3 @@
|
|||||||
|
*.tar.*
|
||||||
|
*.tar
|
||||||
|
*.sum
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 chillcog
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||||
|
associated documentation files (the "Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
|
||||||
|
following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||||
|
portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||||
|
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
|
||||||
|
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||||
|
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# Maintainer: Chillcog <chillcog@chillcog.com>
|
||||||
|
pkgname=sharkfetch
|
||||||
|
pkgver=1.71.0
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="A custom system fetch script with a sharky!"
|
||||||
|
arch=('any')
|
||||||
|
url="https://git.chillcog.com/chillcog/sharkfetch"
|
||||||
|
license=('MIT')
|
||||||
|
depends=('bash')
|
||||||
|
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
|
||||||
|
|
||||||
|
sha256sums=('SKIP')
|
||||||
|
|
||||||
|
package() {
|
||||||
|
install -Dm755 "${srcdir}/${pkgname}-${pkgver}/sharkfetch" "${pkgdir}/usr/bin/sharkfetch"
|
||||||
|
}
|
||||||
+327
@@ -0,0 +1,327 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# https://chillcog.com
|
||||||
|
# Haiiiii - @chillcog
|
||||||
|
# Licensed Under The MIT License
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
PRIVATE_MODE=0
|
||||||
|
|
||||||
|
show_help() {
|
||||||
|
cat << EOF
|
||||||
|
Usage: $(basename "$0") [OPTIONS]
|
||||||
|
|
||||||
|
A custom system information fetch script featuring ASCII art.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message and exit.
|
||||||
|
-p, -private, Private mode: hides uniquely identifying information
|
||||||
|
--private (hostname, public/local IP, hardware model).
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
case "$arg" in
|
||||||
|
-h|--help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
-p|-private|--private)
|
||||||
|
PRIVATE_MODE=1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $arg"
|
||||||
|
echo "Use -h or --help for usage."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
c0=$'\e[0m'
|
||||||
|
blue=$'\e[34m'
|
||||||
|
c1=$'\e[36m'
|
||||||
|
c2=$'\e[35m'
|
||||||
|
|
||||||
|
OS_TYPE="$(uname -s)"
|
||||||
|
ARCH="$(uname -m)"
|
||||||
|
|
||||||
|
USER_NAME="$(whoami)"
|
||||||
|
if [ "$PRIVATE_MODE" -eq 1 ]; then
|
||||||
|
HOST_NAME="[REDACTED]"
|
||||||
|
else
|
||||||
|
HOST_NAME="$(hostname 2>/dev/null || uname -n)"
|
||||||
|
fi
|
||||||
|
user_host="${USER_NAME}@${HOST_NAME}"
|
||||||
|
|
||||||
|
get_os() {
|
||||||
|
if [ "$OS_TYPE" = "Linux" ]; then
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
source /etc/os-release && echo "$NAME ($ARCH)"
|
||||||
|
else
|
||||||
|
echo "Linux ($ARCH)"
|
||||||
|
fi
|
||||||
|
elif [ "$OS_TYPE" = "Darwin" ]; then
|
||||||
|
echo "macOS $(sw_vers -productVersion 2>/dev/null) ($ARCH)"
|
||||||
|
else
|
||||||
|
echo "$OS_TYPE ($ARCH)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
os=$(get_os)
|
||||||
|
|
||||||
|
kernel="$(uname -r)"
|
||||||
|
|
||||||
|
get_motherboard() {
|
||||||
|
if [ "$PRIVATE_MODE" -eq 1 ]; then
|
||||||
|
echo "[REDACTED]"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /sys/devices/virtual/dmi/id/product_name ]; then
|
||||||
|
local vendor name ver
|
||||||
|
vendor=$(cat /sys/devices/virtual/dmi/id/sys_vendor 2>/dev/null)
|
||||||
|
name=$(cat /sys/devices/virtual/dmi/id/product_name 2>/dev/null)
|
||||||
|
ver=$(cat /sys/devices/virtual/dmi/id/product_version 2>/dev/null)
|
||||||
|
echo "${vendor} ${name} ${ver}" | xargs
|
||||||
|
elif command -v sysctl >/dev/null 2>&1 && [ "$OS_TYPE" = "Darwin" ]; then
|
||||||
|
sysctl -n hw.model 2>/dev/null
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
host_model=$(get_motherboard)
|
||||||
|
|
||||||
|
uptime_str=$(uptime 2>/dev/null | sed -E 's/.*up[[:space:]]+([^,]+).*/\1/' | xargs)
|
||||||
|
[ -z "$uptime_str" ] && uptime_str="N/A"
|
||||||
|
|
||||||
|
get_packages() {
|
||||||
|
local pkgs=""
|
||||||
|
if command -v pacman >/dev/null 2>&1; then
|
||||||
|
pkgs="$(pacman -Qq 2>/dev/null | wc -l | xargs) (pacman)"
|
||||||
|
elif command -v dpkg >/dev/null 2>&1; then
|
||||||
|
pkgs="$(dpkg -l 2>/dev/null | grep -c '^ii') (dpkg)"
|
||||||
|
elif command -v rpm >/dev/null 2>&1; then
|
||||||
|
pkgs="$(rpm -qa 2>/dev/null | wc -l | xargs) (rpm)"
|
||||||
|
elif command -v brew >/dev/null 2>&1; then
|
||||||
|
pkgs="$(brew list --formula 2>/dev/null | wc -l | xargs) (brew)"
|
||||||
|
elif command -v nix-store >/dev/null 2>&1; then
|
||||||
|
pkgs="$(nix-store -q --requisites /run/current-system 2>/dev/null | wc -l | xargs) (nix)"
|
||||||
|
else
|
||||||
|
pkgs="N/A"
|
||||||
|
fi
|
||||||
|
echo "$pkgs"
|
||||||
|
}
|
||||||
|
packages=$(get_packages)
|
||||||
|
|
||||||
|
get_shell() {
|
||||||
|
local sh_bin
|
||||||
|
sh_bin="$(basename "${SHELL:-bash}")"
|
||||||
|
case "$sh_bin" in
|
||||||
|
bash) echo "bash $($SHELL --version 2>/dev/null | head -n1 | awk '{print $4}')" ;;
|
||||||
|
zsh) echo "zsh $($SHELL --version 2>/dev/null | awk '{print $2}')" ;;
|
||||||
|
fish) echo "fish $($SHELL --version 2>/dev/null | awk '{print $3}')" ;;
|
||||||
|
*) echo "$sh_bin" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
shell_info=$(get_shell)
|
||||||
|
|
||||||
|
de="${XDG_CURRENT_DESKTOP:-${DESKTOP_SESSION:-N/A}}"
|
||||||
|
wm="${XDG_SESSION_DESKTOP:-N/A}"
|
||||||
|
[ "$OS_TYPE" = "Darwin" ] && de="Aqua" && wm="Quartz Compositor"
|
||||||
|
|
||||||
|
terminal="${TERM_PROGRAM:-${TERM:-N/A}}"
|
||||||
|
|
||||||
|
get_display() {
|
||||||
|
if command -v xrandr >/dev/null 2>&1; then
|
||||||
|
xrandr 2>/dev/null | awk '/\*/ {print $1 " @" $2 "Hz"; exit}' | tr -d '*' | xargs
|
||||||
|
elif [ "$OS_TYPE" = "Darwin" ]; then
|
||||||
|
system_profiler SPDisplaysDataType 2>/dev/null | awk -F: '/Resolution/ {print $2}' | head -n1 | xargs
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
display_info=$(get_display)
|
||||||
|
[ -z "$display_info" ] && display_info="N/A"
|
||||||
|
|
||||||
|
get_cpu() {
|
||||||
|
if command -v lscpu >/dev/null 2>&1; then
|
||||||
|
local model cores
|
||||||
|
model=$(lscpu | awk -F: '/Model name/ {print $2}' | xargs)
|
||||||
|
cores=$(lscpu | awk -F: '/CPU\(s\):/ {print $2}' | head -n1 | xargs)
|
||||||
|
echo "${model} (${cores} threads)"
|
||||||
|
elif [ "$OS_TYPE" = "Darwin" ]; then
|
||||||
|
local model cores
|
||||||
|
model=$(sysctl -n machdep.cpu.brand_string 2>/dev/null)
|
||||||
|
cores=$(sysctl -n hw.ncpu 2>/dev/null)
|
||||||
|
echo "${model} (${cores} cores)"
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
cpu=$(get_cpu)
|
||||||
|
[ -z "$cpu" ] && cpu="N/A"
|
||||||
|
|
||||||
|
get_gpu() {
|
||||||
|
if command -v lspci >/dev/null 2>&1; then
|
||||||
|
lspci 2>/dev/null | grep -E 'VGA|3D' | awk -F: '{print $3}' | sed 's/ (rev .*//' | head -n1 | xargs
|
||||||
|
elif [ "$OS_TYPE" = "Darwin" ]; then
|
||||||
|
system_profiler SPDisplaysDataType 2>/dev/null | awk -F: '/Chipset Model/ {print $2}' | head -n1 | xargs
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
gpu=$(get_gpu)
|
||||||
|
[ -z "$gpu" ] && gpu="N/A"
|
||||||
|
|
||||||
|
get_memory() {
|
||||||
|
if command -v free >/dev/null 2>&1; then
|
||||||
|
free -m | awk '/Mem:/ {printf "%sMB / %sMB (%.0f%%)", $3, $2, ($3/$2)*100}'
|
||||||
|
elif [ "$OS_TYPE" = "Darwin" ]; then
|
||||||
|
local total_mem
|
||||||
|
total_mem=$(sysctl -n hw.memsize 2>/dev/null)
|
||||||
|
total_mem=$((total_mem / 1024 / 1024))
|
||||||
|
echo "${total_mem}MB Total"
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
memory=$(get_memory)
|
||||||
|
|
||||||
|
get_swap() {
|
||||||
|
if command -v free >/dev/null 2>&1; then
|
||||||
|
free -m | awk '/Swap:/ {if ($2>0) printf "%sMB / %sMB (%.0f%%)", $3, $2, ($3/$2)*100; else print "Disabled"}'
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
swap=$(get_swap)
|
||||||
|
|
||||||
|
disk=$(df -h / 2>/dev/null | awk 'NR==2 {print $3 " / " $2 " (" $5 ")"}')
|
||||||
|
|
||||||
|
get_temp() {
|
||||||
|
if command -v sensors >/dev/null 2>&1; then
|
||||||
|
sensors 2>/dev/null | awk '/Package id 0:|Core 0:|cpu_thermal/ {print $2; exit}' | tr -d '+'
|
||||||
|
elif [ -f /sys/class/thermal/thermal_zone0/temp ]; then
|
||||||
|
local raw
|
||||||
|
raw=$(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null)
|
||||||
|
echo "$((raw / 1000))°C"
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
cpu_temp=$(get_temp)
|
||||||
|
[ -z "$cpu_temp" ] && cpu_temp="N/A"
|
||||||
|
|
||||||
|
load_avg=$(uptime 2>/dev/null | awk -F'load average:' '{print $2}' | xargs)
|
||||||
|
[ -z "$load_avg" ] && load_avg="N/A"
|
||||||
|
|
||||||
|
if [ "$PRIVATE_MODE" -eq 1 ]; then
|
||||||
|
local_ip="[HIDDEN]"
|
||||||
|
public_ip="[HIDDEN]"
|
||||||
|
else
|
||||||
|
get_ip() {
|
||||||
|
if command -v ip >/dev/null 2>&1; then
|
||||||
|
ip route get 1.1.1.1 2>/dev/null | awk '{print $7}'
|
||||||
|
elif command -v ifconfig >/dev/null 2>&1; then
|
||||||
|
ifconfig 2>/dev/null | awk '/inet / && !/127.0.0.1/ {print $2}' | head -n1
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
local_ip=$(get_ip)
|
||||||
|
[ -z "$local_ip" ] && local_ip="N/A"
|
||||||
|
public_ip=$(curl -s --max-time 1 https://icanhazip.com 2>/dev/null || echo "Offline/N/A")
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_battery() {
|
||||||
|
if [ -d /sys/class/power_supply ]; then
|
||||||
|
local cap status
|
||||||
|
cap=$(cat /sys/class/power_supply/BAT*/capacity 2>/dev/null | head -n1)
|
||||||
|
status=$(cat /sys/class/power_supply/BAT*/status 2>/dev/null | head -n1)
|
||||||
|
if [ -n "$cap" ]; then
|
||||||
|
echo "${cap}% [${status:-Unknown}]"
|
||||||
|
else
|
||||||
|
echo "AC Powered"
|
||||||
|
fi
|
||||||
|
elif command -v pmset >/dev/null 2>&1; then
|
||||||
|
pmset -g batt 2>/dev/null | grep -o '[0-9]*%' | head -n1
|
||||||
|
else
|
||||||
|
echo "N/A"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
battery=$(get_battery)
|
||||||
|
|
||||||
|
locale_val="${LANG:-N/A}"
|
||||||
|
|
||||||
|
raw_logo=$(cat << 'EOF'
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡴⠲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣷⡄⠈⢢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⢀⣾⡀⠀⠀⠀⠀⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡓⠦⢄⣀⠀⠀⡼⠻⠿⢶⡄⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⢀⡤⠤⠤⣤⣤⣴⣶⣶⠶⠶⠶⠒⠒⠂⠙⠀⠀⠀⠉⠉⠓⠲⢤⣀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠈⢿⠈⠳⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠢⣄⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠈⡇⠀⠀⠀⠀⠀⢀⣿⡋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣟⠁⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⢈⡽⠁⠀⠀⠠⡄⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠀⠀⠘⡆⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⡀⠀⠀⣠⠞⠀⠀⠀⠀⣠⢧⠀⠀⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⢹⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢆⡴⠃⠀⠀⠀⢠⠞⠁⠈⢣⡀⣄⠀⠀⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⢸⣠⡇⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⢞⣓⣸⠀⢠⠰⣋⣀⣀⣳⢤⡙⢾⣟⠲⢤⣀⣠⠄⢯⠳⡀⠀⠀⠀⠸⠋⡇⠀⠀⠀⠀⠀⠀⢠⠏⠹⡄⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⣿⠀⢸⢰⠋⠀⣸⣿⣿⡆⠀⠈⠃⢤⣯⣿⡶⠾⣄⠘⡦⠀⠀⢀⣦⣿⠀⠀⠀⠀⠀⢠⠃⠀⠀⢳⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡄⢸⣼⣀⡀⠣⠽⠿⢃⠀⠀⠀⢾⣻⣿⡿⠀⣸⡸⠁⠀⢀⡼⡼⠉⠳⣄⠀⠀⣰⠃⠀⠀⠀⢸⠇
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠟⣷⡘⣿⣛⡁⠀⠀⠀⠀⠁⠀⠀⠀⠉⠍⠡⣶⡿⠁⠀⣠⠟⣇⡇⠀⠀⠈⢦⣰⠁⠀⠀⠀⠀⢸⠂
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠖⢻⣣⣈⣿⣤⠤⢒⠒⠦⠖⠢⠴⢄⣀⢬⣷⠞⢁⣠⠞⣡⠞⢹⡟⠀⠀⠀⠀⠃⠀⠀⠀⠀⢀⡞⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢏⣻⡶⠞⠉⠛⢉⣆⣴⡞⠻⠦⣾⢿⣊⣉⡴⣶⠁⠀⠀⠑⢄⡀⢀⢰⠋⢦⠀⠀⣠⠞⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢨⣿⣤⣶⣦⠀⠀⡇⠀⠀⣤⣄⠹⡟⠛⢷⠀⠁⠀⠀⠀⠀⠀⠙⠺⣏⣀⠈⢷⠚⠁⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⢿⣿⣿⣝⢿⡇⠀⣧⢠⣾⣿⣿⣿⡿⡄⢸⡄⠀⠀⠀⠀⠀⠀⠀⢸⠏⠉⠁⠈⡆⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⠙⠃⠀⢸⣿⠈⠱⠟⠛⠛⠃⢹⢸⣿⡄⠀⠀⠀⣤⡀⢀⡿⠛⠓⠂⢀⢱⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣸⡀⠀⠀⠀⠀⠀⣠⢟⣸⠦⣄⣀⠀⠀⠀⠘⣸⠹⣟⡆⠀⡼⠁⠙⣾⣷⣦⣄⠀⠀⢸⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠞⠉⠀⠘⡇⠀⣀⣀⡠⠞⣱⠋⠀⠀⠀⠈⠙⢦⡀⠀⢹⡚⠉⠀⢰⠃⠀⠀⠀⠘⣆⠀⠉⠀⢸⡇⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣜⠁⠀⠀⠀⠀⠙⠉⢹⣿⠁⢰⠃⠀⠀⠀⠀⠀⠀⠀⠑⣦⣬⠇⠀⢀⡏⠀⠀⠀⠀⠉⠀⠀⠀⢀⢸⡇⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⡠⠟⠛⠛⠷⠂⠀⠀⠀⠀⠈⣿⢠⡇⣠⣤⣤⣤⣀⠀⠀⠀⠀⠘⣿⣶⣶⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⡞⢸⠃⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⢀⣾⣷⣤⣤⠀⠀⠀⠀⠀⠀⠀⠀⠛⡼⢉⢉⣉⣉⠛⠻⢷⣄⠀⠀⠀⣸⣯⠙⢿⣧⠀⠀⠀⠀⠀⠀⢀⡼⠁⡼⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⡰⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡤⠀⡗⠛⠛⠻⠿⣷⣦⣀⠀⠀⠀⠀⠘⢻⠀⠀⠙⠃⠀⠀⠀⠀⡠⠊⠀⢠⠃⠀⠀⠀⠀
|
||||||
|
⠀⣠⣖⣟⣳⣒⣆⠀⠀⠀⠀⠀⠀⠀⠀⣠⣎⠀⢸⠁⠀⠀⠀⠀⠀⠉⠉⠀⢸⠀⠀⠀⣏⠀⠀⠀⠀⠀⠠⠒⠋⠀⠀⢠⠏⠀⠀⠀⠀⠀
|
||||||
|
⠰⣿⣿⣶⠿⠷⣾⠃⠀⠀⠀⠀⢀⡠⠚⠁⠈⠦⡞⠀⠀⠀⠀⠀⠀⠀⠀⢠⠏⠀⠀⡼⠉⠁⠀⠀⠀⠀⠀⠀⠀⣠⠔⠋⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠹⣦⣓⡒⠋⠉⠀⠀⠀⣀⡴⠋⠀⠀⠀⠀⡼⠁⡀⠀⠀⠀⠀⠀⠀⣠⠏⢀⣠⢾⣁⣀⣀⣀⣀⣠⠤⠒⠚⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠹⣦⣿⣯⣿⣦⢀⡴⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
transparent_logo=$(echo "$raw_logo" | sed 's/⠀/ /g' | sed 's/[[:space:]]*$//')
|
||||||
|
readarray -t logo <<< "$transparent_logo"
|
||||||
|
|
||||||
|
labels=(
|
||||||
|
"OS:" "Host Model:" "Kernel:" "Uptime:" "Packages:" "Shell:"
|
||||||
|
"DE/WM:" "Terminal:" "Resolution:" "CPU:" "CPU Temp:" "GPU:"
|
||||||
|
"Memory:" "Swap:" "Disk (/):" "Load Avg:" "Local IP:" "Public IP:"
|
||||||
|
"Battery:" "Locale:"
|
||||||
|
)
|
||||||
|
values=(
|
||||||
|
"$os" "$host_model" "$kernel" "$uptime_str" "$packages" "$shell_info"
|
||||||
|
"${de} / ${wm}" "$terminal" "$display_info" "$cpu" "$cpu_temp" "$gpu"
|
||||||
|
"$memory" "$swap" "$disk" "$load_avg" "$local_ip" "$public_ip"
|
||||||
|
"$battery" "$locale_val"
|
||||||
|
)
|
||||||
|
|
||||||
|
info=()
|
||||||
|
info+=("${c1}${user_host}${c0}")
|
||||||
|
info+=("---------------------------------------")
|
||||||
|
|
||||||
|
for i in "${!labels[@]}"; do
|
||||||
|
lbl=$(printf "%-13s" "${labels[$i]}")
|
||||||
|
info+=("${c1}${lbl}${c0} ${c2}${values[$i]}${c0}")
|
||||||
|
done
|
||||||
|
|
||||||
|
target_width=72
|
||||||
|
max_lines=$((${#logo[@]} > ${#info[@]} ? ${#logo[@]} : ${#info[@]}))
|
||||||
|
|
||||||
|
for ((i=0; i<max_lines; i++)); do
|
||||||
|
line="${logo[i]}"
|
||||||
|
char_count=${#line}
|
||||||
|
pad_needed=$((target_width - char_count))
|
||||||
|
(( pad_needed < 0 )) && pad_needed=0
|
||||||
|
|
||||||
|
padding=$(printf '%*s' "$pad_needed" '')
|
||||||
|
printf "%s%s%s %s\n" "${blue}${line}${c0}" "$padding" "" "${info[i]}"
|
||||||
|
done
|
||||||
Reference in new issue
Block a user