master
yutent 2024-01-05 19:00:07 +08:00
commit 0b62ca178d
2 changed files with 190 additions and 0 deletions

15
debian/control vendored Normal file
View File

@ -0,0 +1,15 @@
Package: afetch
Version: 1.0.0
Section: utils
Architecture: all
Maintainer: Yutent <yutent.io@gmail.com>
Author: Yutent
Installed-Size: ${size}
Priority: optional
Breaks: neofetch
Replaces: neofetch
Provides: neofetch
Homepage: https://git.wkit.fun/appcat/afetch
Description: Another neofetch, only for debian.
Another neofetch, only for debian.

175
src/fetch Executable file
View File

@ -0,0 +1,175 @@
#!/usr/bin/env bash
# 颜色定义
_cbk=$(tput setaf 0) # 黑色
_cre=$(tput setaf 1) # 红色
_cgr=$(tput setaf 2) # 绿色
_cye=$(tput setaf 3) # 黄色
_cbl=$(tput setaf 4) # 蓝色
_cma=$(tput setaf 5) # 紫色
_ccy=$(tput setaf 6) # 青色
_cwh=$(tput setaf 7) # 白色
_cbd=$(tput bold) # 加粗
_cnc=$(tput sgr0) # 重置(结束)
# vars
FULL=▓
EMPTY=░
name=$USER
host=$(uname -n)
distro=$(uname -o | awk -F '"' '/PRETTY_NAME/ { print $2 }' /etc/os-release)
packages=$(apt list --installed | wc -l)
wm=$(xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t | grep "WM_NAME" | cut -f2 -d \")
storage=$(df -h --output=used,size / | awk 'NR == 2 { print $1,"/",$2 }')
term=$(ps -o sid= -p "$$" | xargs ps -o ppid= -p | xargs ps -o comm= -p)
uptm=$(uptime -p | sed -e 's/up //')
# 获取设备信息
get_model() {
if [[ -d /system/app/ && -d /system/priv-app ]]; then
model="$(getprop ro.product.brand) $(getprop ro.product.model)"
elif [[ -f /sys/devices/virtual/dmi/id/product_name || -f /sys/devices/virtual/dmi/id/product_version ]]; then
model=$(< /sys/devices/virtual/dmi/id/product_name)
model+=" $(< /sys/devices/virtual/dmi/id/product_version)"
elif [[ -f /sys/firmware/devicetree/base/model ]]; then
model=$(< /sys/firmware/devicetree/base/model)
elif [[ -f /tmp/sysinfo/model ]]; then
model=$(< /tmp/sysinfo/model)
fi
}
# 获取debian的内核版本
get_kernel() {
IFS=" " read -ra kver <<< "$(uname -v)"
kernel_version="${kver[4]}-amd64"
}
get_shell(){
shell_name=${SHELL##*/}
shell_version=" "
case $shell_name in
bash)
shell_version=${BASH_VERSION/-*}
;;
sh|ash|dash|es)
;;
*)
shell_version=$("$shell_name" --version 2>&1)
;;
esac
}
# progress bar
draw() {
perc=$1
size=$2
inc=$((perc * size / 100))
out=
color="$3"
for v in $(seq 0 $((size - 1))); do
test "$v" -le "$inc" &&
out="${out}\e[1;${color}m${FULL}" ||
out="${out}\e[0;37m${CWH}${EMPTY}"
done
printf "$out"
}
# 清屏
clear
# find the center of the screen
COL=$(tput cols)
ROW=$(tput lines)
((PADY = ROW / 2 - 10 - 22 / 2))
((PADX = COL / 2 - 34 / 2))
for ((i = 0; i < PADX; ++i)); do
PADC="$PADC "
done
for ((i = 0; i < PADY; ++i)); do
PADR="$PADR\n"
done
get_model
get_kernel
get_shell
ram=$(free | awk '/Mem:/ {print int($3/$2 * 100.0)}')
# vertical padding
printf "%b" "$PADR"
printf "\n"
PADXX=$((PADX - 3))
for ((i = 0; i < PADXX; ++i)); do
PADCC="$PADCC "
done
# Ascii art arms
cat <<EOF
${_cwh} _,met\$\$\$\$\$gg.
,g\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$P.
,g\$\$P" """Y\$\$.".
,\$\$P' \`\$\$\$.
',\$\$P ,ggs. \`\$\$b:
\`d\$\$' ,\$P"' ${_cre}.${_cwh} \$\$\$
\$\$P d\$' ${_cre},${_cwh} \$\$P
\$\$: \$\$. ${_cre}-${_cwh} ,d\$\$'
\$\$; Y\$b._ _,d\$P'
Y\$\$. ${_cre}\`.${_cwh}\`"Y\$\$\$\$P"'
${_cwh} \`\$\$b ${_cre}"-.__
${_cwh} \`Y\$\$
\`Y\$\$.
\`\$\$b.
\`Y\$\$b.
\`"Y\$b._
\`"""
EOF
BAR1=" ▓▓▓▒▒▒"
BAR2=" ▓▓▓░░░"
OUTT1="$_cbk$BAR1${_cre}$BAR1${_cgr}$BAR1${_cye}$BAR1${_cbl}$BAR1${_cma}$BAR1${_ccy}$BAR1${_cwh}$BAR1${_cnc}"
OUTT2="$_cbk$BAR2${_cre}$BAR2${_cgr}$BAR2${_cye}$BAR2${_cbl}$BAR2${_cma}$BAR2${_ccy}$BAR2${_cwh}$BAR2${_cnc}"
printf "%b\n" "$OUTT1"
printf "%b\n\n" "$OUTT2"
# greetings
printf "%b" " Hi ${_cre}${_cbd}${name}@${host}${_cnc}\n"
printf "%b" " Uptime ${_ccy}${_cbd}$uptm${_cnc}\n\n"
# environment
printf "%b" "${_cre} OS ${_cwh} ⏹ ${_cnc}$distro\n"
printf "%b" "${_cre} Host ${_cwh} ⏹ ${_cnc}${model}\n"
printf "%b" "${_cbl} Kernel ${_cwh} ⏹ ${_cnc}${kernel_version}\n"
printf "%b" "${_cma} Packages ${_cwh} ⏹ ${_cnc}${packages} (apt)\n"
printf "%b" "${_cgr} Shell ${_cwh} ⏹ ${_cnc}${shell_name} ${shell_version}\n"
printf "%b" "${_cye} Terminal ${_cwh} ⏹ ${_cnc}${term}\n"
printf "%b" "${_ccy} WM ${_cwh} ⏹ ${_cnc}${wm}\n"
printf "%b" "${_cbl} Disk ${_cwh} ⏹ ${_cnc}${storage}\n"
printf "%b" "${_cbl} Memery ${_cwh} ⏹ ${_cnc}$(draw "$ram" 15 35) ${ram}%\n"
printf "\n" "${_cnc}"
# hide the cursor and wait for user input
tput civis
read -n 1
# give the cursor back
tput cnorm