Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.34 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. trap 'trap - TERM; kill 0' INT TERM QUIT EXIT
  4.  
  5. [ -e "$LEMONBAR_FIFO" ] && rm "$LEMONBAR_FIFO"
  6. mkfifo "$LEMONBAR_FIFO"
  7.  
  8. C1="%{F#10FFFFFF}"
  9. CE="%{F-}"
  10.  
  11. F2="%{T2}%{F#10FFFFFF}"
  12. FE="%{F-}%{T-}"
  13.  
  14. # Clock
  15. dateTime() {   
  16.     while true; do
  17.         DATE=$(date "+%H:%M $C1|$CE %a, %d %b %Y")
  18.         echo "C$C1<$CE $DATE $C1>$CE"
  19.         sleep 10
  20.     done
  21. }
  22.  
  23. # Volume control
  24. volume() {
  25.     while true; do
  26.         VOLUME=$(awk -F"[][]" '/dB/ { sub(/%/,""); print $2 }' <(amixer get Master))
  27.         echo -n "V$C1"
  28.         echo -n "VOLUME:$CE %{A:amixer set Master 4%-:}[%{A}"
  29.        
  30.         if [ $VOLUME -eq 0 ]; then
  31.             echo -n "$C1··········$CE"
  32.         elif [ $VOLUME -lt 10 ]; then
  33.             echo -n "=$C1·········$CE"
  34.         elif [ $VOLUME -lt 20 ]; then
  35.             echo -n "==$C1········$CE"
  36.         elif [ $VOLUME -lt 30 ]; then
  37.             echo -n "===$C1·······$CE"
  38.         elif [ $VOLUME -lt 40 ]; then
  39.             echo -n "====$C1······$CE"
  40.         elif [ $VOLUME -lt 50 ]; then
  41.             echo -n "=====$C1·····$CE"
  42.         elif [ $VOLUME -lt 60 ]; then
  43.             echo -n "======$C1····$CE"
  44.         elif [ $VOLUME -lt 70 ]; then
  45.             echo -n "=======$C1···$CE"
  46.         elif [ $VOLUME -lt 80 ]; then
  47.             echo -n "========$C1··$CE"
  48.         elif [ $VOLUME -lt 90 ]; then
  49.             echo -n "=========$C1·$CE"
  50.         else
  51.             echo -n "=========="
  52.         fi
  53.        
  54.         echo "%{A:amixer set Master 4%+:}]%{A}"
  55.            
  56.         sleep 1
  57.     done
  58. }
  59.  
  60. # System info
  61. system() {
  62.     echo -n "S$F2"
  63.     echo "[ loading... ]$FE"
  64.    
  65.     while true; do
  66.         # Read current CPU load
  67.         read cpu a b c prevIdle rest < /proc/stat
  68.         prevTotal=$((a+b+c+prevIdle))
  69.  
  70.         # Read current NET traffic
  71.         read prevDnSpeed < /sys/class/net/enp0s31f6/statistics/rx_bytes
  72.         read prevUpSpeed < /sys/class/net/enp0s31f6/statistics/tx_bytes
  73.  
  74.         # Wait one second, re-read the values and compute the difference
  75.         sleep 1
  76.         read cpu a b c idle rest < /proc/stat
  77.         total=$((a+b+c+idle))
  78.         read dnSpeed < /sys/class/net/enp0s31f6/statistics/rx_bytes
  79.         read upSpeed < /sys/class/net/enp0s31f6/statistics/tx_bytes
  80.  
  81.         # Find the percentage of CPU utilization
  82.         CPU=$((100*( (total-prevTotal) - (idle-prevIdle) ) / (total-prevTotal) ))
  83.        
  84.         # Network speed in MB/s
  85.         NETDN=$(awk '{printf "%.2f", $1/1000000}' <(echo $((dnSpeed-prevDnSpeed))))
  86.         NETUP=$(awk '{printf "%.2f", $1/1000000}' <(echo $((upSpeed-prevUpSpeed))))
  87.        
  88.         # Check the CPU temperature
  89.         read TEMP < /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp5_input
  90.         TEMP=$((TEMP/1000))
  91.        
  92.         # Free memory in GB
  93.         FREEMEM=$(free -m | awk 'NR==2 {printf "%.1f\n", $4/1000}')
  94.        
  95.         # Output
  96.         echo -n "S$C1"
  97.         echo -n "CPU:$CE $CPU$F2 %$FE$F2 · $FE$TEMP$F2$FE $C1|"
  98.         echo -n " MEM:$CE $FREEMEM$F2 GB$FE $C1|"
  99.         echo -n " NET:$CE $NETDN$F2 · $FE$NETUP $F2"
  100.         echo "MB/s$FE"
  101.        
  102.         sleep 3
  103.     done
  104. }
  105.  
  106. compose() {
  107.     while read -r line; do
  108.         case $line in
  109.             S*)
  110.                 # system info
  111.                 system="${line#?}"
  112.                 ;;
  113.             C*)
  114.                 # date/time
  115.                 clock="${line#?}"
  116.                 ;;
  117.             V*)
  118.                 # volume
  119.                 volume="${line#?}"
  120.                 ;;
  121.         esac
  122.    
  123.         printf "%s\n" "%{l}  ${system}%{c}${clock}%{r}${volume}  "
  124.     done
  125. }
  126.  
  127. system > "$LEMONBAR_FIFO" &
  128. dateTime > "$LEMONBAR_FIFO" &
  129. volume > "$LEMONBAR_FIFO" &
  130.  
  131. cat "$LEMONBAR_FIFO" | compose | lemonbar -p -g "3440x25+0+0" -f "-xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso8859-1" -f "-xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1" -B "#80000000" -F "#F1F1F1" | bash &
  132.  
  133. wait
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement