Advertisement
uriel_zo

al-info

Dec 13th, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. # extremely simple system info script.
  4. # written by Nathaniel Maia, 2017-2018
  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:-$(hostname 2>/dev/null)}"
  60.  
  61. # kernel version
  62. KERN="${KERN:-$(uname -sr)}"
  63. KERN="${KERN/-*/}"
  64. KERN="${KERN,,}"
  65.  
  66. # MEM = used / total
  67. FREE="$(free --mega)"
  68. MB=$(awk 'NR==2 {print $3}' <<< "$FREE")
  69. GB=$(awk 'NR==2 {print $3 / 1000}' <<< "$FREE")
  70. TOT=$(awk 'NR==2 {print $2 / 1000}' <<< "$FREE")
  71. (( MB > 1000 )) && MEM="${GB:0:5}gb used / ${TOT/\.*}gb total" || MEM="${MB}mb used / ${TOT/\.*}gb total"
  72.  
  73. # C = number of cores
  74. THREADS=$(grep -c '^processor' /proc/cpuinfo)
  75. CORES=$(grep '^core' /proc/cpuinfo | sort -r | awk -F':' 'NR == 1 {print $2 + 1}')
  76. CORES=${CORES:-1}
  77.  
  78. # CPU = usage / threads
  79. CPU=$(ps aux | awk 'BEGIN {sum = 0} {sum += $3}; END {print sum}')
  80. CPU=${CPU/\.*}
  81.  
  82. # CPU needs to be divided by number of threads to get an average
  83. if (( (CPU /= THREADS) > 100 )); then
  84. CPU="$CORES cores $THREADS threads @ 100% avg"
  85. else
  86. CPU="$CORES cores $THREADS threads @ $CPU% avg"
  87. fi
  88.  
  89. rep_char() {
  90. local char="${1:-=}"
  91. local num="${2:-$((${#USR} + 3 + ${#HOST}))}"
  92. local str="$(printf "%${num}s")"
  93. echo "${str// /$char}"
  94. }
  95.  
  96. pkg_count() {
  97. pacman -Qq 2>/dev/null | wc -l || echo "$FB"
  98. }
  99.  
  100. cur_wm() {
  101. if [[ -z $WM && $DISPLAY ]] && hash xprop >/dev/null 2>&1; then
  102. ID="$(xprop -root -notype _NET_SUPPORTING_WM_CHECK)"
  103. WM="$(xprop -id "${ID##* }" -notype -len 100 -f _NET_WM_NAME 8t)"
  104. WM="${WM/*WM_NAME = }" WM="${WM/\"}" WM="${WM/\"*}" WM="${WM,,}"
  105. echo "${WM:-$FB}"
  106. else
  107. echo "${WM:-tty$XDG_VTNR}"
  108. fi
  109. }
  110.  
  111. BLOCKS="$BG1 $BG2 $BG3 $BG4 $BG5 $BG6 $BG7 ${RESET}"
  112.  
  113. # clear the screen and print everything out
  114. clear
  115. cat << EOF
  116. ${FG4} 'c'
  117. ${FG4} 'kKk, ${FG5}===>$RESET ${USR}${FG2} @ ${FG6}${HOST:-$FB}
  118. ${FG4} .dKKKx. ${FG5}$(rep_char '=')>
  119. ${FG4} .oKXKXKd. ${FG6}->$RESET wm$FG1: ${FG4}$(cur_wm)
  120. ${FG4} .l0XXXXKKo. ${FG6}->$RESET term$FG1: ${FG4}${TRM:-$FB}
  121. ${FG4} c0KXXXXKX0l. ${FG6}->$RESET shell$FG1: ${FG4}${SHLL:-$FB}
  122. ${FG4} :0XKKOxxOKX0l. ${FG6}->$RESET uptime$FG1: ${FG4}${UPT:-$FB}
  123. ${FG4} :OXKOc.,.c0XX0l.
  124. ${FG4} :OK0o, ${FG1}...${FG4}'dKKX0l. ${FG6}->$RESET packages$FG1: ${FG4}$(pkg_count)
  125. ${FG4} :OX0c, ${FG1};xOx'${FG4}'dKXX0l. ${FG6}->$RESET kernel$FG1: ${FG4}${KERN:-$FB}
  126. ${FG4} :0KKo.${FG1}.o0XXKd'.${FG4}lKXX0l. ${FG6}->$RESET distro$FG1: ${FG4}${DIST:-$FB}
  127. ${FG4} c0XKd.${FG1}.oKXXXXKd..${FG4}oKKX0l. ${FG6}->$RESET installed$FG1: ${FG4}${INST:-$FB}
  128. ${FG4} .c0XKk;${FG1}.l0K0OO0XKd..${FG4}oKXXKo.
  129. ${FG4} .l0XXXk:${FG1},dKx,.'l0XKo.${FG4}.kXXXKo. ${FG6}->$RESET ram$FG1: ${FG4}${MEM:-$FB}
  130. ${FG4} .o0XXXX0d,${FG1}:x; .oKKx'${FG4}.dXKXXKd.
  131. ${FG4} .oKXXXXKK0c.${FG1};. :00c'${FG4}cOXXXXXKd.
  132. ${FG4} .dKXXXXXXXXk,${FG1}. cKx'${FG4}'xKXXXXXXKx' ${FG6}->$RESET theme$FG1: ${FG4}${THEME:-$FB}
  133. ${FG4} 'xKXXXXK0kdl:. ${FG1}.ok; ${FG4}.cdk0KKXXXKx' ${FG6}->$RESET icons$FG1: ${FG4}${ICONS:-$FB}
  134. ${FG4} 'xKK0koc,.. ${FG1}'c, ${FG4} ..,cok0KKk,
  135. ${FG4} ,xko:'. .':okx, $BLOCKS
  136.  
  137. EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement