Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- trap 'trap - TERM; kill 0' INT TERM QUIT EXIT
- [ -e "$LEMONBAR_FIFO" ] && rm "$LEMONBAR_FIFO"
- mkfifo "$LEMONBAR_FIFO"
- C1="%{F#10FFFFFF}"
- CE="%{F-}"
- F2="%{T2}%{F#10FFFFFF}"
- FE="%{F-}%{T-}"
- # Clock
- dateTime() {
- while true; do
- DATE=$(date "+%H:%M $C1|$CE %a, %d %b %Y")
- echo "C$C1<$CE $DATE $C1>$CE"
- sleep 10
- done
- }
- # Volume control
- volume() {
- while true; do
- VOLUME=$(awk -F"[][]" '/dB/ { sub(/%/,""); print $2 }' <(amixer get Master))
- echo -n "V$C1"
- echo -n "VOLUME:$CE %{A:amixer set Master 4%-:}[%{A}"
- if [ $VOLUME -eq 0 ]; then
- echo -n "$C1··········$CE"
- elif [ $VOLUME -lt 10 ]; then
- echo -n "=$C1·········$CE"
- elif [ $VOLUME -lt 20 ]; then
- echo -n "==$C1········$CE"
- elif [ $VOLUME -lt 30 ]; then
- echo -n "===$C1·······$CE"
- elif [ $VOLUME -lt 40 ]; then
- echo -n "====$C1······$CE"
- elif [ $VOLUME -lt 50 ]; then
- echo -n "=====$C1·····$CE"
- elif [ $VOLUME -lt 60 ]; then
- echo -n "======$C1····$CE"
- elif [ $VOLUME -lt 70 ]; then
- echo -n "=======$C1···$CE"
- elif [ $VOLUME -lt 80 ]; then
- echo -n "========$C1··$CE"
- elif [ $VOLUME -lt 90 ]; then
- echo -n "=========$C1·$CE"
- else
- echo -n "=========="
- fi
- echo "%{A:amixer set Master 4%+:}]%{A}"
- sleep 1
- done
- }
- # System info
- system() {
- echo -n "S$F2"
- echo "[ loading... ]$FE"
- while true; do
- # Read current CPU load
- read cpu a b c prevIdle rest < /proc/stat
- prevTotal=$((a+b+c+prevIdle))
- # Read current NET traffic
- read prevDnSpeed < /sys/class/net/enp0s31f6/statistics/rx_bytes
- read prevUpSpeed < /sys/class/net/enp0s31f6/statistics/tx_bytes
- # Wait one second, re-read the values and compute the difference
- sleep 1
- read cpu a b c idle rest < /proc/stat
- total=$((a+b+c+idle))
- read dnSpeed < /sys/class/net/enp0s31f6/statistics/rx_bytes
- read upSpeed < /sys/class/net/enp0s31f6/statistics/tx_bytes
- # Find the percentage of CPU utilization
- CPU=$((100*( (total-prevTotal) - (idle-prevIdle) ) / (total-prevTotal) ))
- # Network speed in MB/s
- NETDN=$(awk '{printf "%.2f", $1/1000000}' <(echo $((dnSpeed-prevDnSpeed))))
- NETUP=$(awk '{printf "%.2f", $1/1000000}' <(echo $((upSpeed-prevUpSpeed))))
- # Check the CPU temperature
- read TEMP < /sys/devices/platform/coretemp.0/hwmon/hwmon1/temp5_input
- TEMP=$((TEMP/1000))
- # Free memory in GB
- FREEMEM=$(free -m | awk 'NR==2 {printf "%.1f\n", $4/1000}')
- # Output
- echo -n "S$C1"
- echo -n "CPU:$CE $CPU$F2 %$FE$F2 · $FE$TEMP$F2 C°$FE $C1|"
- echo -n " MEM:$CE $FREEMEM$F2 GB$FE $C1|"
- echo -n " NET:$CE $NETDN$F2 · $FE$NETUP $F2"
- echo "MB/s$FE"
- sleep 3
- done
- }
- compose() {
- while read -r line; do
- case $line in
- S*)
- # system info
- system="${line#?}"
- ;;
- C*)
- # date/time
- clock="${line#?}"
- ;;
- V*)
- # volume
- volume="${line#?}"
- ;;
- esac
- printf "%s\n" "%{l} ${system}%{c}${clock}%{r}${volume} "
- done
- }
- system > "$LEMONBAR_FIFO" &
- dateTime > "$LEMONBAR_FIFO" &
- volume > "$LEMONBAR_FIFO" &
- 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 &
- wait
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement