Advertisement
Dobbie03

Frakenfetch

May 30th, 2024
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.68 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. # extremely simple system info script.
  4. # originally written by Nathaniel Maia, 2017-2018. Destroyed by Matthew Dobson, March 2020.
  5.  
  6. # fallback
  7. FB="unknown"
  8.  
  9. # colours
  10. RESET=$'\e[0m'
  11. for n in {0..7}; do
  12. printf -v FG${n} "%b" "\e[3${n}m"
  13. printf -v BG${n} "%b" "\e[4${n}m"
  14. done
  15.  
  16. # source whichever distro release file is available
  17. if [[ -e /etc/os-release ]] && . /etc/os-release 2>/dev/null; then
  18. DIST="${ID,,}"
  19. elif [[ -e /etc/lsb-release ]] && . /etc/lsb-release 2>/dev/null; then
  20. DIST="${DISTRIB_ID,,}"
  21. fi
  22.  
  23. # system uptime
  24. UPT="$(uptime -p)"
  25. UPT="${UPT/up /}"
  26. UPT="${UPT/ day?/d}"
  27. UPT="${UPT/ hour?/h}"
  28. UPT="${UPT/ minute?/m}"
  29.  
  30. # check if root user
  31. (( UID == 0 )) && USR="${FG1}root" || USR="${FG4}${USER}"
  32.  
  33. # install date
  34. if [[ -e /var/log/pacman.log ]]; then
  35. INST="$(head -n1 /var/log/pacman.log)"
  36. INST="${INST/ */}"
  37. INST="${INST/\[/}"
  38. INST="${INST//\-/ }"
  39. fi
  40.  
  41. # gtk settings
  42. if [[ -e ~/.config/gtk-3.0/settings.ini ]]; then
  43. THEME="$(awk -F'=' '/gtk-theme-name/ {print $2}' ~/.config/gtk-3.0/settings.ini)"
  44. ICONS="$(awk -F'=' '/gtk-icon-theme-name/ {print $2}' ~/.config/gtk-3.0/settings.ini)"
  45. elif [[ -e ~/.gtkrc-2.0 ]]; then
  46. THEME="$(awk -F'"' '/gtk-theme-name/ {print $2}' ~/.gtkrc-2.0)"
  47. ICONS="$(awk -F'"' '/gtk-icon-theme-name/ {print $2}' ~/.gtkrc-2.0)"
  48. fi
  49.  
  50. # login shell
  51. SHLL="${SHELL##*/}"
  52.  
  53. # terminal name
  54. TRM="${TERM/-256color/}" # many terminals use a -256color suffix, remove it
  55. TRM="${TRM/-unicode/}" # rxvt can be rxvt-unicode, remove the -unicode suffix
  56. TRM="${TRM/*-termite*/termite}" # termite is xterm-termite, truncate to just termite
  57.  
  58. # hostname
  59. HOST="${HOST:-$(cat /etc/hostname 2>/dev/null)}"
  60. HOST="${HOST:-$FB}"
  61.  
  62. # fortune
  63. #fortune -a /home/dobbie/.oh-my-zsh/plugins/chucknorris/fortunes/chucknorris
  64.  
  65. # kernel version
  66. KERN="${KERN:-$(uname -sr)}"
  67. KERN="${KERN/-*/}"
  68. KERN="${KERN,,}"
  69.  
  70. # MEM = used / total
  71. FREE="$(free --mega)"
  72. MB=$(awk 'NR==2 {print $3}' <<< "$FREE")
  73. GB=$(awk 'NR==2 {printf "%.2f", $3 / 1000}' <<< "$FREE")
  74. TOT=$(awk 'NR==2 {printf "%.2f", $2 / 1000}' <<< "$FREE")
  75. if (( MB > 1000 )); then # show in GB
  76. MEM="${GB:0:5}gb / ${TOT/\.*}gb"
  77. else # show in MB
  78. MEM="${MB}mb / ${TOT/\.*}gb"
  79. fi
  80.  
  81. # CPU threads and cores
  82. THREADS=$(grep -c '^processor' /proc/cpuinfo)
  83. THREADS=${THREADS:-1}
  84. CORES=$(grep '^core' /proc/cpuinfo | sort | uniq | wc -l)
  85. CORES=${CORES:-1}
  86. # CPU usage needs to be divided by number of threads to get an average percentage
  87. USAGE=$(ps aux | awk -v i="$THREADS" 'BEGIN{sum = 0} {sum += $3} END{printf "%.2f", sum / i}')
  88. CPU="${CORES}c/${THREADS}t @ $USAGE% avg"
  89.  
  90. rep_char() {
  91. local char="${1:-=}"
  92. local num="${2:-$((${#USR} + 3 + ${#HOST}))}"
  93. local str="$(printf "%${num}s")"
  94. echo "${str// /$char}"
  95. }
  96.  
  97. pkg_count() {
  98. pacman -Qq 2>/dev/null | wc -l || echo "$FB"
  99. }
  100.  
  101. cur_wm() {
  102. if [[ -z $WM && $DISPLAY ]] && hash xprop >/dev/null 2>&1; then
  103. ID="$(xprop -root -notype _NET_SUPPORTING_WM_CHECK)"
  104. WM="$(xprop -id "${ID##* }" -notype -len 100 -f _NET_WM_NAME 8t)"
  105. WM="${WM/*WM_NAME = }" WM="${WM/\"}" WM="${WM/\"*}" WM="${WM,,}"
  106. echo "${WM:-$FB}"
  107. else
  108. echo "${WM:-tty$XDG_VTNR}"
  109. fi
  110. }
  111.  
  112. # Get the init
  113. get_init() {
  114. os=$(uname -o)
  115. if [ "$os" = "Android" ]; then
  116. echo 'init.rc'
  117. elif pidof -q systemd; then
  118. echo 'systemd'
  119. elif [ -f '/sbin/openrc' ]; then
  120. echo 'openrc'
  121. else
  122. cut -d ' ' -f 1 /proc/1/comm
  123. fi
  124. }
  125.  
  126. updates=$(checkupdates | wc -l)
  127.  
  128. BLOCKS="$BG1 $BG2 $BG3 $BG4 $BG5 $BG6 $BG7 ${RESET}"
  129.  
  130. red="\e[31m"
  131. grn="\e[32m"
  132. ylw="\e[33m"
  133. cyn="\e[36m"
  134. blu="\e[34m"
  135. prp="\e[35m"
  136. bprp="\e[35;1m"
  137. reset="\033[0m"
  138. c0=${reset}
  139. c1=${magenta}
  140. c2=${green}
  141. c3=${white}
  142. c4=${blue}
  143. c5=${red}
  144. c6=${yellow}
  145. c7=${cyan}
  146. c8=${black}
  147. c9=${bgyellow}
  148. c10=${bgwhite}
  149.  
  150.  
  151. echo
  152. echo
  153. echo -e " \e[H\e[2J "
  154. echo -e " \e[0;31m."
  155. echo -e " \e[0;31m/ \ "
  156. echo -e " \e[0;31m/ \ \e[0;34m # \e[0;32m| * "
  157. echo -e " \e[0;31m/^. \ \e[0;34maa##e #%@ a#@e 6##% \e[0;32m| | |-^-. | | \ / "
  158. echo -e " \e[0;31m/ .-. \ \e[0;34m.oOo# # # # # \e[0;32m| | | | | | X "
  159. echo -e " \e[0;31m/ ( ) _\ \e[0;34m%OoO# # %#ee # # \e[0;32m| | | | ^._.| / \ "
  160. echo -e " \e[1;31m/ _.~ ~._^\ "
  161. echo -e "\e[1;31m/.^ ^.\ "
  162. echo
  163. #echo " $BLOCKS"
  164. #echo -e "${cyn}   user ${reset}" " ${USR}${red}  ${grn}${HOST}"
  165. #echo -e "${grn}   distro ${reset}" " ${DIST:-$FB}"
  166. #echo -e "${red}   shell ${reset}" " ${SHLL:-$FB}"
  167. #echo -e "${prp}   wm ${reset}" " $(cur_wm)"
  168. #echo -e "${blu}   term ${reset}" " ${TRM:-$FB}"
  169. #echo -e "${ylw}   uptime ${reset}" " ${UPT:-$FB}"
  170. #echo -e "${cyn}   kernel ${reset}" " ${KERN:-$FB}"
  171. #echo -e "${grn}   pkgs ${reset}" " $(pkg_count)"
  172. #echo -e "${red}   init ${reset}" " $(get_init)"
  173. #echo -e "${prp}   cpu ${reset}" " $(grep "model name" /proc/cpuinfo | head -n 1 | awk -F ': ' '{print $2}')"
  174. #echo -e "${blu}   gpu ${reset}" " $(lspci | grep -i vga | sed 's/.*\[\([^]]*\)\].*/\1/')"
  175. #echo -e "${ylw}   birth ${reset}" "$(sed -n '1s/^\[\([0-9-]*\).*$/\1/p' /var/log/pacman.log | tr - .)"
  176. #echo -e "${cyn}   update ${reset}" "\e[0m$updates"
  177. #echo -e "${grn}   music ${reset}" "$(mpc current)"
  178. #echo
  179. #echo "$BLOCKS"
  180. #echo
  181. #echo
  182. echo " $BLOCKS"
  183. echo
  184. echo -e "${cyn}  user ${reset}" " ${USR}${red}  ${grn}${HOST}"
  185. echo -e "${grn}  distro ${reset}" " ${DIST:-$FB}"
  186. echo -e "${red}  shell ${reset}" " ${SHLL:-$FB}"
  187. echo -e "${prp}  wm ${reset}" " $(cur_wm)"
  188. echo -e "${blu}  term ${reset}" " ${TRM:-$FB}"
  189. echo -e "${ylw}  uptime ${reset}" " ${UPT:-$FB}"
  190. echo -e "${cyn}  kernel ${reset}" " ${KERN:-$FB}"
  191. echo -e "${grn}  pkgs ${reset}" " $(pkg_count)"
  192. echo -e "${red}  init ${reset}" " $(get_init)"
  193. echo -e "${prp}  cpu ${reset}" " $(grep "model name" /proc/cpuinfo | head -n 1 | awk -F ': ' '{print $2}')"
  194. echo -e "${blu}  gpu ${reset}" " $(lspci | grep -i vga | sed 's/.*\[\([^]]*\)\].*/\1/')"
  195. echo -e "${ylw}  birth ${reset}" "$(sed -n '1s/^\[\([0-9-]*\).*$/\1/p' /var/log/pacman.log | tr - .)"
  196. echo -e "${cyn}  update ${reset}" "\e[0m$updates"
  197. echo -e "${grn}  music ${reset}" "$(mpc current)"
  198. echo
  199. echo " $BLOCKS"
  200. echo
  201. #echo
  202. #echo -e " ${cyn}ram ${rst}" " ${MEM:-$FB}"
  203. #echo -e " ${grn}cpu ${rst}" " ${CPU:-$FB}"
  204. #echo
  205. #echo " $BLOCKS"
  206. #echo
  207. ##echo -e " $(fortune -a /home/dobbie/.oh-my-zsh/plugins/chucknorris/fortunes/chucknorris)"
  208. #echo
  209.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement