├── screenshot.png ├── README.md ├── sysinfo.2s.sh └── sysinfo.1s.sh /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fadeouter/sysinfo/HEAD/screenshot.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

System monitor extension for Argos with real CPU graph

2 | 3 | This extension created specially for [Argos](https://github.com/p-e-w/argos) and linux-powered computers w/ GNOME shell. 4 | This script uses power of SVG to draw charts. 5 | 6 | As you see at screenshot, CPU chart has 3 colors: green for iowait consumption, dark grey for user comsumption, and light gray for overall CPU consumption. 7 | 8 | Please note that the CPU consumption is approximate. It calculates by **/proc/stat** output, also as memory by **free**, temperature by **/sys/class/thermal/thermal_zone0/temp** and disks by **df** outputs. 9 | 10 |

Known bugs

11 | 12 | Different configurations of **top** utility doesn't allow to show processes list (see opened issue here). 13 | To fix this, open script in text editor and replace `$9 / 2` to `$7 / 2`. Also you may need to change `head -n 10` to `head -n 13`. Also, you may need to change number of CPU cores (2, 4). 14 | In further releases I will fix this by more elegant way. 15 | 16 |

Screenshot

17 | 18 | 19 | 20 |

License

21 | GNU GPL v3.0 - https://www.gnu.org/licenses/gpl-3.0.en.html 22 | 23 | 24 | -------------------------------------------------------------------------------- /sysinfo.2s.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script designed for Argos extension (https://extensions.gnome.org/extension/1176/argos/) 4 | # and allows informing on current CPU and memory consumption, 5 | # IP address, ping to up to two servers, temperature, uptime, disks and processes. 6 | 7 | # In order to properly work you need to set the number of CPU cores (see below) and adjust the size of the graphs 8 | # depending on your screen size. 9 | 10 | # Go to line 257 and set your number. 11 | # XXX must be equal to the number of CPU cores: '...{ printf("%-4s %-s\n", $9 / XXX, $NF); }...' 12 | 13 | # Based on Ganesh V BitBar script (https://github.com/ganeshv/mtop) 14 | # and Leo-G script (https://github.com/Leo-G/DevopsWiki/wiki/How-Linux-CPU-Usage-Time-and-Percentage-is-calculated) 15 | # Author: fadeouter (https://github.com/fadeouter/) 16 | 17 | 18 | vpn_ip="1.2.3.4" # IP address to be hidden from menu bar if it equals to $vpn_ip 19 | ping_1_name="GOOG" 20 | ping_2_name="CLFL" 21 | ping_1_addr="8.8.8.8" 22 | ping_2_addr="1.1.1.1" 23 | 24 | 25 | graphWidth="32" # CPU chart width in pixels, also a number of chart points 26 | scale="2" # if you have HIDPI screen, set appropriate coeff. for scaling 27 | svg_font_family="Ubuntu" # set as GNOME Shell theme font 28 | symbolic="-symbolic" # if "-symbolic" set, then monocolor icons used 29 | 30 | 31 | ### THEME COLORS 32 | 33 | chart_system_color="silver" # CPU chart main color 34 | chart_user_color="#324f5c" # user processes color on chart 35 | chart_io_color="#3bef3b" # I/O processes color on chart 36 | 37 | pie_fg_color="grey" # memory pie foreground color 38 | pie_bg_color="transparent" # memory pie background color 39 | text_muted="#333" # font color of partition mountpoint 40 | 41 | 42 | ### SIZES AND POSITION OF SVG OBJECTS (not need to change this) 43 | 44 | icon_h=$(expr 17 \* $scale) 45 | graph_h=$(expr 15 \* $scale) 46 | graph_svg_w=$(expr $graphWidth + 14) 47 | mem_bar_pos=$(expr $graphWidth + 5) 48 | px='px' 49 | 50 | 51 | 52 | 53 | 54 | 55 | ################################################################ 56 | # 57 | # 01. Memory graph calculation 58 | # 59 | ################################################################ 60 | 61 | raw_mem=$(free -m | grep Mem) 62 | mem_used=$(echo $raw_mem | awk '{print $2 - $7}') 63 | mem_full=$(echo $raw_mem | awk '{print $2}') 64 | memPercent=$(echo $raw_mem | awk '{print ($3 / $2) * 100 }') 65 | memPercentPie=$(echo $raw_mem | awk '{print 174 + (($3 / $2) * 174) }' | sed s/\,/\./) 66 | 67 | raw_swap=$(free -m | grep Swap) 68 | swap_used=$(echo $raw_swap | awk '{print $3}') 69 | swap_full=$(echo $raw_swap | awk '{print $2}') 70 | swapPercent=$(echo $raw_swap | awk '{print ($3 / $2) * 100 }') 71 | swapPercentPie=$(echo $raw_swap | awk '{print 174 + (($3 / $2) * 174) }' | sed s/\,/\./) 72 | 73 | mempie=$(echo "" | base64 -w 0) 74 | 75 | swappie=$(echo "" | base64 -w 0) 76 | 77 | 78 | 79 | ################################################################ 80 | # 81 | # 02. CPU graph calculation 82 | # 83 | ################################################################ 84 | 85 | 86 | 87 | HISTORY_FILE="${HOME}/.argos-sysinfo.cpu" 88 | touch "${HISTORY_FILE}" 89 | PREVIOUS=$(tail -$graphWidth "${HISTORY_FILE}") 90 | PREV=$(tail -n 1 "${HISTORY_FILE}") 91 | echo "$PREVIOUS" > "${HISTORY_FILE}" 92 | 93 | if [$PREV == '']; then 94 | PREV="0 0 0 0" 95 | fi 96 | 97 | PREV_TOTAL=$(echo $PREV | awk '{print $1}' ) 98 | PREV_IDLE=$(echo $PREV | awk '{print $2}' ) 99 | PREV_USER=$(echo $PREV | awk '{print $3}' ) 100 | PREV_IO=$(echo $PREV | awk '{print $4}' ) 101 | 102 | STAT=(`sed -n 's/^cpu\s//p' /proc/stat`) 103 | IDLE=${STAT[3]} 104 | 105 | TOTAL=0 106 | for VALUE in "${STAT[@]}"; do 107 | let "TOTAL=$TOTAL+$VALUE" 108 | done 109 | 110 | let "USER=$TOTAL-${STAT[0]}" 111 | let "IO=$TOTAL-${STAT[4]}" 112 | let "DIFF_IDLE=$IDLE-$PREV_IDLE" 113 | let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL" 114 | let "DIFF_USER=$USER-$PREV_USER" 115 | let "DIFF_IO=$IO-$PREV_IO" 116 | let "CPU=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10" 117 | let "CPU_USER=CPU-((1000*($DIFF_USER-$DIFF_IDLE)/$DIFF_USER+5)/10)" 118 | let "CPU_IO=CPU-((1000*($DIFF_IO-$DIFF_IDLE)/$DIFF_IO+5)/10)" 119 | 120 | 121 | echo "$TOTAL $IDLE $USER $IO $CPU $CPU_USER $CPU_IO" >> "${HISTORY_FILE}" 122 | 123 | 124 | COUNTER=0 125 | while [ $COUNTER -lt $graphWidth ]; do 126 | fullCpuBar=$(sed -n $COUNTER\p ${HISTORY_FILE} | awk '{print $5}') 127 | ioCpuBar=$(sed -n $COUNTER\p ${HISTORY_FILE} | awk '{print ($5-$7)}') 128 | userCpuBar=$(sed -n $COUNTER\p ${HISTORY_FILE} | awk '{print $6}') 129 | old_string=$svg_string 130 | new_string="" 131 | svg_string=$old_string$new_string 132 | let COUNTER=COUNTER+1 133 | done 134 | 135 | cpu_icon=$(echo " 136 | $svg_string 137 | 138 | 139 | " | base64 -w 0) 140 | 141 | 142 | ################################################################ 143 | # 144 | # 03. IP info 145 | # 146 | ################################################################ 147 | 148 | EXTERNAL_IP_DIG=$(dig +short myip.opendns.com @resolver1.opendns.com) 149 | #EXTERNAL_IP_DIG2=$(dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | egrep -o '[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/[0-9]+') 150 | PING_1=$(ping -i 1 -c 1 $ping_1_addr | tail -1 | awk '{print $4}' | cut -d '/' -f 2 | cut -d "." -f1) 151 | PING_2=$(ping -i 1 -c 1 $ping_2_addr | tail -1 | awk '{print $4}' | cut -d '/' -f 2 | cut -d "." -f1) 152 | 153 | 154 | if [ "$EXTERNAL_IP_DIG" = "" ]; then 155 | EXTERNAL_IP_DIG=$(dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | egrep -o '[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+/[0-9]+') 156 | fi 157 | 158 | 159 | if [ "$EXTERNAL_IP_DIG" = $vpn_ip ]; then 160 | echo "| image=$cpu_icon imageHeight=$graph_h imageWidth=$graph_svg_w" 161 | echo "---" 162 | echo "IP \t\t$EXTERNAL_IP_DIG | iconName=network-transmit-receive imageHeight=$icon_h" 163 | else 164 | EXTERNAL_IP_CUT=$( echo "$EXTERNAL_IP_DIG" | cut -d "." -f1-2) 165 | echo "$EXTERNAL_IP_CUT| image=$cpu_icon imageHeight=$graph_h imageWidth=$graph_svg_w" 166 | echo "---" 167 | echo "IP\t\t$EXTERNAL_IP_DIG | iconName=network-transmit-receive imageHeight=$icon_h" 168 | fi 169 | 170 | echo "$ping_1_name\t$PING_1 ms | iconName=view-more-horizontal-symbolic imageHeight=$icon_h" 171 | echo "$ping_2_name\t$PING_2 ms | iconName=view-more-horizontal-symbolic imageHeight=$icon_h" 172 | wait 173 | 174 | echo "---" 175 | 176 | 177 | ################################################################ 178 | # 179 | # 04. Memory piecharts 180 | # 181 | ################################################################ 182 | 183 | echo "Mem \t${mem_used%%.*} / ${mem_full%%.*} MiB | image=$mempie imageHeight=$icon_h" 184 | 185 | if [ ${swap_used%%.*} != 0 ]; then 186 | echo "Swap\t${swap_used%%.*} / ${swap_full%%.*} MiB | image=$swappie imageHeight=$icon_h" 187 | fi 188 | 189 | 190 | 191 | ################################################################ 192 | # 193 | # 03. Temperature 194 | # 195 | ################################################################ 196 | 197 | temp=$(cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000 }') 198 | 199 | 200 | echo "Temp\t$temp C°| imageHeight=$icon_h image=PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMzUuNDY2NjcgMTM1LjQ2NjY3JyBoZWlnaHQ9JzY0JyB3aWR0aD0nNjQnPjxkZWZzPjxtYXJrZXIgb3JpZW50PSdhdXRvJyBpZD0nYicgb3ZlcmZsb3c9J3Zpc2libGUnPjxwYXRoIGQ9J00uOTggMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6JyBmaWxsPScjZjU1JyBmaWxsLXJ1bGU9J2V2ZW5vZGQnIHN0cm9rZT0nI2Y1NScgc3Ryb2tlLXdpZHRoPScuMjY3Jy8+PC9tYXJrZXI+PG1hcmtlciBvcmllbnQ9J2F1dG8nIGlkPSdhJyBvdmVyZmxvdz0ndmlzaWJsZSc+PHBhdGggZD0nTS45OCAwYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHonIGZpbGw9JyNjY2MnIGZpbGwtcnVsZT0nZXZlbm9kZCcgc3Ryb2tlPScjY2NjJyBzdHJva2Utd2lkdGg9Jy4yNjcnLz48L21hcmtlcj48L2RlZnM+PGcgc3Ryb2tlLXdpZHRoPScxNC43NzknPjxwYXRoIGQ9J002Ni4zNzggMTEyLjU5NmMuMDEzLTMxLjcyNi4wMjctNS42My4wNC05NS4yMzUnIGZpbGw9JyNjY2MnIHN0cm9rZT0nI2NjYycgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBtYXJrZXItc3RhcnQ9J3VybCgjYSknIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC0xLjE4MiAtNC42ODcpIHNjYWxlKDEuMDM4MjQpJy8+PHBhdGggZD0nTTY2LjM3OCAxMTIuNTk2Yy4wMi0xNi4zMzguMDQtMi45LjA2LTQ5LjA0MycgZmlsbD0nI2Y1NScgc3Ryb2tlPScjZjU1JyBtYXJrZXItc3RhcnQ9J3VybCgjYiknIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC0xLjE4MiAtNC42ODcpIHNjYWxlKDEuMDM4MjQpJy8+PC9nPjwvc3ZnPgo=c@t" 201 | 202 | 203 | ################################################################ 204 | # 205 | # 04. Uptime 206 | # 207 | ################################################################ 208 | 209 | up=$(uptime | sed 's/,.*//' | sed 's/.*up//' | xargs) 210 | echo "Time\t$up | iconName=preferences-system-time$symbolic" 211 | echo "---" 212 | 213 | ################################################################ 214 | # 215 | # 05. Disk 216 | # 217 | ################################################################ 218 | 219 | 220 | OLDIFS=$IFS 221 | name=() 222 | used=() 223 | free=() 224 | cap=() 225 | capacity=() 226 | disk_icon="drive-harddisk-system$symbolic" 227 | 228 | get_disk_stats() { 229 | local IFS=$'\n' 230 | local i dfdata 231 | 232 | dfdata=($(df -lH | grep "/dev/mapper*\|/dev/sd*\|/dev/dm*\|/dev/nvme*" | grep -v "/boot\|/shm" )) 233 | 234 | IFS=$OLDIFS 235 | for ((i = 0; i < ${#dfdata[@]}; i++)); do 236 | line=(${dfdata[$i]}) 237 | name+=("${line[5]}") 238 | cap+=("${line[1]}") 239 | usedcap+=("${line[3]/\G}") 240 | free+=("${line[4]}") 241 | capacity+=("${line[4]/\%}") 242 | done 243 | } 244 | 245 | get_disk_stats 246 | 247 | 248 | for ((i = 0; i < ${#capacity[@]}; i++)); do 249 | 250 | if [[ ${name[$i]} = \/media* ]]; then 251 | disk_icon="drive-removable-media$symbolic" 252 | fi 253 | 254 | echo "${usedcap[$i]}Gb ${free[$i]} ${cap[$i]} ${name[$i]}| iconName=$disk_icon imageHeight=$diskbar_h bash=baobab terminal=false font='monospace' size=8" 255 | done 256 | 257 | ################################################################ 258 | # 259 | # 6. Process list 260 | # 261 | ################################################################ 262 | 263 | top=$(top -o "%CPU" -bn 1 | head -n 14 | tail -n 7 | awk '{ printf("%1.0f %s\n", $9 / 8, $NF); }' | awk 1 ORS="\\\n") # set here number of CPU cores 264 | echo "---" 265 | echo "$top| font='monospace' size=8 bash=gnome-system-monitor terminal=false iconName=view-restore-symbolic" 266 | 267 | echo "---" 268 | echo "Update| refresh=true iconName=view-refresh-symbolic" 269 | 270 | 271 | -------------------------------------------------------------------------------- /sysinfo.1s.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # this is simple and usable script from a newbie 4 | # based on some findings on the internet 5 | # based on Ganesh V BitBar script (https://github.com/ganeshv/mtop) 6 | # and Leo-G script (https://github.com/Leo-G/DevopsWiki/wiki/How-Linux-CPU-Usage-Time-and-Percentage-is-calculated) 7 | # author: fadeouter (https://github.com/fadeouter/) 8 | 9 | 10 | 11 | # IMPORTANT! Go to line 114 and set your number of CPU cores 12 | 13 | graphWidth="50" # CPU chart width in pixels, also a number of chart points 14 | scale="1" # if you have HIDPI screen, set appropriate coeff. for scaling 15 | svg_font_size="9" # probably you won't change this 16 | svg_font_family="Ubuntu" # set as GNOME Shell theme font 17 | symbolic="" 18 | #symbolic="-symbolic" # uncomment to use monocolor icons 19 | 20 | 21 | ### LIGHT THEME (swap with DARK THEME to enable) 22 | 23 | chart_system_color="silver" # CPU chart main color 24 | chart_user_color="dimgray" # CPU chart main color 25 | chart_io_color="greenyellow" # CPU chart main color 26 | 27 | pie_fg_color=$chart_user_color # pie foreground color 28 | pie_bg_color=$chart_system_color # pie background color 29 | text_muted=$chart_user_color # font color of partition mountpoint 30 | diskbar_font="#333333" # font color of disk used space 31 | diskbar_font_highlighted="green" # font color of disk free space 32 | diskbar_bg_color=$pie_bg_color # disk bar bg color 33 | 34 | 35 | ### DARK THEME 36 | 37 | chart_system_color="silver" # CPU chart main color 38 | chart_user_color="dimgray" # CPU chart main color 39 | chart_io_color="greenyellow" # CPU chart main color 40 | 41 | pie_fg_color=$chart_user_color # pie foreground color 42 | pie_bg_color=$chart_system_color # pie background color 43 | text_muted=$chart_user_color # font color of partition mountpoint 44 | diskbar_font="#ffffff" # font color of disk used space 45 | diskbar_font_highlighted="#7eff35" # font color of disk free space 46 | diskbar_bg_color=$pie_bg_color # disk bar bg color 47 | 48 | 49 | ### SIZES AND POSITION OF SVG OBJECTS 50 | 51 | icon_h=$(expr 12 \* $scale) 52 | graph_h=$(expr 14 \* $scale) 53 | graph_svg_w=$(expr $graphWidth + 14) 54 | mem_bar_pos=$(expr $graphWidth + 5) 55 | diskbar_h=$(expr 18 \* $scale) 56 | diskbar_w=$(expr 120 \* $scale) 57 | px='px' 58 | 59 | 60 | ################################################################ 61 | # 62 | # 0. Settings 63 | # 64 | ################################################################ 65 | 66 | 67 | SETTINGS="${HOME}/.argos-sysinfo.settings" 68 | 69 | if [ ! -f "${SETTINGS}" ]; then 70 | touch "${SETTINGS}" 71 | echo "%on" > "${SETTINGS}" 72 | echo "memon" >> "${SETTINGS}" 73 | fi 74 | 75 | showPercents=$(grep -E "(%on|%off)" ${SETTINGS}) 76 | showMembar=$(grep -E "(memon|memoff)" ${SETTINGS}) 77 | 78 | 79 | if [ "$showMembar" == "memoff" ]; then 80 | graph_svg_w=$graphWidth 81 | fi 82 | 83 | 84 | ################################################################ 85 | # 86 | # 01. Memory 87 | # 88 | ################################################################ 89 | 90 | raw_mem=$(free -m | grep Mem) 91 | mem_used=$(echo $raw_mem | awk '{print $2 - $7}') 92 | mem_full=$(echo $raw_mem | awk '{print $2}') 93 | memPercent=$(echo $raw_mem | awk '{print ($3 / $2) * 100 }') 94 | memPercentPie=$(echo $raw_mem | awk '{print 174 + (($3 / $2) * 174) }') 95 | 96 | raw_swap=$(free -m | grep Swap) 97 | swap_used=$(echo $raw_swap | awk '{print $3}') 98 | swap_full=$(echo $raw_swap | awk '{print $2}') 99 | swapPercent=$(echo $raw_swap | awk '{print ($3 / $2) * 100 }') 100 | swapPercentPie=$(echo $raw_swap | awk '{print 174 + (($3 / $2) * 174) }') 101 | 102 | mempie=$(echo "" | base64 -w 0) 103 | 104 | swappie=$(echo "" | base64 -w 0) 105 | 106 | 107 | 108 | ################################################################ 109 | # 110 | # 02. CPU graph calculation 111 | # 112 | ################################################################ 113 | 114 | # XXX must be equal to number of CPU cores: '...{ printf("%-4s %-s\n", $9 / XXX, $NF); }...' 115 | top=$(top -o "%CPU" -bn 1 | head -n 14 | tail -n 7 | awk '{ printf("%-4s %-s\n", $9 / 4, $NF); }' | awk 1 ORS="\\\n") 116 | 117 | HISTORY_FILE="${HOME}/.argos-sysinfo.cpu" 118 | touch "${HISTORY_FILE}" 119 | PREVIOUS=$(tail -$graphWidth "${HISTORY_FILE}") 120 | PREV=$(tail -n 1 "${HISTORY_FILE}") 121 | echo "$PREVIOUS" > "${HISTORY_FILE}" 122 | 123 | if [$PREV == '']; then 124 | PREV="0 0 0 0" 125 | fi 126 | 127 | PREV_TOTAL=$(echo $PREV | awk '{print $1}' ) 128 | PREV_IDLE=$(echo $PREV | awk '{print $2}' ) 129 | PREV_USER=$(echo $PREV | awk '{print $3}' ) 130 | PREV_IO=$(echo $PREV | awk '{print $4}' ) 131 | 132 | STAT=(`sed -n 's/^cpu\s//p' /proc/stat`) 133 | IDLE=${STAT[3]} 134 | 135 | TOTAL=0 136 | for VALUE in "${STAT[@]}"; do 137 | let "TOTAL=$TOTAL+$VALUE" 138 | done 139 | 140 | let "USER=$TOTAL-${STAT[0]}" 141 | let "IO=$TOTAL-${STAT[4]}" 142 | let "DIFF_IDLE=$IDLE-$PREV_IDLE" 143 | let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL" 144 | let "DIFF_USER=$USER-$PREV_USER" 145 | let "DIFF_IO=$IO-$PREV_IO" 146 | let "CPU=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10" 147 | let "CPU_USER=CPU-((1000*($DIFF_USER-$DIFF_IDLE)/$DIFF_USER+5)/10)" 148 | let "CPU_IO=CPU-((1000*($DIFF_IO-$DIFF_IDLE)/$DIFF_IO+5)/10)" 149 | 150 | 151 | echo "$TOTAL $IDLE $USER $IO $CPU $CPU_USER $CPU_IO" >> "${HISTORY_FILE}" 152 | 153 | 154 | COUNTER=0 155 | while [ $COUNTER -lt $graphWidth ]; do 156 | fullCpuBar=$(sed -n $COUNTER\p ${HISTORY_FILE} | awk '{print $5}') 157 | ioCpuBar=$(sed -n $COUNTER\p ${HISTORY_FILE} | awk '{print ($5-$7)}') 158 | userCpuBar=$(sed -n $COUNTER\p ${HISTORY_FILE} | awk '{print $6}') 159 | old_string=$svg_string 160 | new_string="" 161 | svg_string=$old_string$new_string 162 | let COUNTER=COUNTER+1 163 | done 164 | 165 | cpu_icon=$(echo " 166 | $svg_string 167 | 168 | 169 | " | base64 -w 0) 170 | 171 | 172 | 173 | ################################################################ 174 | # 175 | # 03. Temperature 176 | # 177 | ################################################################ 178 | 179 | temp=$(cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000 }') 180 | 181 | 182 | 183 | ################################################################ 184 | # 185 | # 04. Output 186 | # 187 | ################################################################ 188 | 189 | IMAGE_CPU="$CPU%" 190 | 191 | if [ "$showPercents" == "%off" ]; then 192 | IMAGE_CPU='' 193 | fi 194 | 195 | 196 | echo "$IMAGE_CPU| image=$cpu_icon imageHeight=$graph_h imageWidth=$graph_svg_w" 197 | 198 | echo "---" 199 | 200 | echo "CPU \t$CPU% | iconName=utilities-system-monitor" 201 | echo "Mem\t${mem_used%%.*} / ${mem_full%%.*} MiB | image=$mempie imageHeight=$icon_h" 202 | echo "Swap\t${swap_used%%.*} / ${swap_full%%.*} MiB | image=$swappie imageHeight=$icon_h" 203 | echo "Temp\t$temp C° | imageHeight=$icon_h image=PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMzUuNDY2NjcgMTM1LjQ2NjY3JyBoZWlnaHQ9JzY0JyB3aWR0aD0nNjQnPjxkZWZzPjxtYXJrZXIgb3JpZW50PSdhdXRvJyBpZD0nYicgb3ZlcmZsb3c9J3Zpc2libGUnPjxwYXRoIGQ9J00uOTggMGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6JyBmaWxsPScjZjU1JyBmaWxsLXJ1bGU9J2V2ZW5vZGQnIHN0cm9rZT0nI2Y1NScgc3Ryb2tlLXdpZHRoPScuMjY3Jy8+PC9tYXJrZXI+PG1hcmtlciBvcmllbnQ9J2F1dG8nIGlkPSdhJyBvdmVyZmxvdz0ndmlzaWJsZSc+PHBhdGggZD0nTS45OCAwYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHonIGZpbGw9JyNjY2MnIGZpbGwtcnVsZT0nZXZlbm9kZCcgc3Ryb2tlPScjY2NjJyBzdHJva2Utd2lkdGg9Jy4yNjcnLz48L21hcmtlcj48L2RlZnM+PGcgc3Ryb2tlLXdpZHRoPScxNC43NzknPjxwYXRoIGQ9J002Ni4zNzggMTEyLjU5NmMuMDEzLTMxLjcyNi4wMjctNS42My4wNC05NS4yMzUnIGZpbGw9JyNjY2MnIHN0cm9rZT0nI2NjYycgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBtYXJrZXItc3RhcnQ9J3VybCgjYSknIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC0xLjE4MiAtNC42ODcpIHNjYWxlKDEuMDM4MjQpJy8+PHBhdGggZD0nTTY2LjM3OCAxMTIuNTk2Yy4wMi0xNi4zMzguMDQtMi45LjA2LTQ5LjA0MycgZmlsbD0nI2Y1NScgc3Ryb2tlPScjZjU1JyBtYXJrZXItc3RhcnQ9J3VybCgjYiknIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC0xLjE4MiAtNC42ODcpIHNjYWxlKDEuMDM4MjQpJy8+PC9nPjwvc3ZnPgo=c@t" 204 | 205 | echo "---" 206 | 207 | echo "$top| font=monospace size=9 iconName=utilities-system-monitor$symbolic bash=gnome-system-monitor terminal=false" 208 | 209 | 210 | 211 | ################################################################ 212 | # 213 | # 05. Disk 214 | # 215 | ################################################################ 216 | 217 | OLDIFS=$IFS 218 | name=() 219 | used=() 220 | free=() 221 | cap=() 222 | capacity=() 223 | 224 | get_disk_stats() { 225 | local IFS=$'\n' 226 | local i dfdata 227 | 228 | dfdata=($(df -lH | grep "/dev/mapper*\|/dev/sd*" | grep -v "/boot\|/shm" )) 229 | 230 | IFS=$OLDIFS 231 | for ((i = 0; i < ${#dfdata[@]}; i++)); do 232 | line=(${dfdata[$i]}) 233 | name+=("${line[5]}") 234 | cap+=("${line[1]}") 235 | used+=("${line[2]}") 236 | free+=("${line[3]}") 237 | capacity+=("${line[4]/\%}") 238 | done 239 | } 240 | 241 | get_disk_stats 242 | 243 | height="10" 244 | disk_icon="drive-harddisk-system$symbolic" 245 | 246 | for ((i = 0; i < ${#capacity[@]}; i++)); do 247 | 248 | if [[ ${name[$i]} = \/media* ]]; then 249 | disk_icon="drive-removable-media$symbolic" 250 | fi 251 | echo "---" 252 | echo "${cap[$i]} ${name[$i]} | iconName=$disk_icon imageHeight=$icon_h length=20 bash='nautilus ${name[$i]}' terminal=false" 253 | #echo "${used[$i]} / ${free[$i]} (${capacity[$i]} %)| refresh=false iconName=image-filter$symbolic" 254 | diskbar_green=$(echo ${capacity[$i]} | awk '{print 255 - $0 * 2.55 }' | awk '{ printf("%.0f\n", $1); }') 255 | diskbar_red=$(echo ${capacity[$i]} | awk '{print $0 * 2.55 }' | awk '{ printf("%.0f\n", $1); }') 256 | diskbar_color="rgba($diskbar_red,$diskbar_green,0,0.7)" 257 | diskbar=$(echo " ${used[$i]} / ${free[$i]} (${capacity[$i]} %) " | base64 -w 0) 258 | echo "|image=$diskbar iconName=baobab$symbolic imageHeight=$diskbar_h" 259 | done 260 | 261 | 262 | ################################################################ 263 | # 264 | # 6. Settings rendering 265 | # 266 | ################################################################ 267 | 268 | 269 | echo "---" 270 | echo "Settings | iconName=gnome-settings$symbolic" 271 | 272 | slon="PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDM3MCAzNzAnPjxwYXRoIGQ9J00yNzMgODhIOTdjLTUzLjUgMC05NyA0My42LTk3IDk3czQzLjUgOTcgOTcgOTdoMTc2YzUzLjUgMCA5Ny00My42IDk3LTk3cy00My41LTk3LTk3LTk3em0tMTE3LjYgOTdjMCAyOC44LTIzLjQgNTIuMi01Mi4yIDUyLjItMjguOCAwLTUyLjItMjMuNC01Mi4yLTUyLjIgMC0yOC44IDIzLjQtNTIuMiA1Mi4yLTUyLjIgMjguOCAwIDUyLjIgMjMuNCA1Mi4yIDUyLjJ6JyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgzNzAsIDApIHNjYWxlKC0xLCAxKScgZmlsbD0nZ3JlZW4nIC8+PC9zdmc+Cg==" 273 | sloff="PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDM3MCAzNzAnPjxwYXRoIGQ9J00yNzMgODhIOTdjLTUzLjUgMC05NyA0My42LTk3IDk3czQzLjUgOTcgOTcgOTdoMTc2YzUzLjUgMCA5Ny00My42IDk3LTk3cy00My41LTk3LTk3LTk3em0tMTE3LjYgOTdjMCAyOC44LTIzLjQgNTIuMi01Mi4yIDUyLjItMjguOCAwLTUyLjItMjMuNC01Mi4yLTUyLjIgMC0yOC44IDIzLjQtNTIuMiA1Mi4yLTUyLjIgMjguOCAwIDUyLjIgMjMuNCA1Mi4yIDUyLjJ6JyBmaWxsPSdyZWQnIC8+PC9zdmc+Cg==" 274 | 275 | 276 | if [ "$showPercents" == "%on" ]; then 277 | echo "--Show CPU usage | refresh=true bash='sed -i -e s/%on/%off/g ${SETTINGS}' terminal=false image=$slon" 278 | elif [ "$showPercents" == "%off" ]; then 279 | echo "--Show CPU usage | refresh=true bash='sed -i -e s/%off/%on/g ${SETTINGS}' terminal=false image=$sloff" 280 | fi 281 | 282 | 283 | if [ "$showMembar" == "memon" ]; then 284 | echo "--Show memory bars | refresh=true bash='sed -i -e s/memon/memoff/g ${SETTINGS}' terminal=false image=$slon" 285 | elif [ "$showMembar" == "memoff" ]; then 286 | echo "--Show memory bars | refresh=true bash='sed -i -e s/memoff/memon/g ${SETTINGS}' terminal=false image=$sloff" 287 | fi 288 | 289 | 290 | 291 | 292 | --------------------------------------------------------------------------------