aboutsummaryrefslogtreecommitdiff
path: root/i3/blocks/bandwidth
blob: f0b18cff791faab7e8f6f9e830798ab132e8a54f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash
# Source: http://www.onlamp.com/pub/a/linux/2000/11/16/LinuxAdmin.html

INSTANCE="${BLOCK_INSTANCE}"

if [[ "${INSTANCE}" = "" ]]; then
  INSTANCE="wlp3s0;both"
fi

DISPLAY=$(echo "${INSTANCE}" | awk -F ';' '{print $2}')
INSTANCE=$(echo "${INSTANCE}" | awk -F ';' '{print $1}')

if [[ "${DISPLAY}" = "" ]]; then
  DISPLAY="both"
fi

ONE_KB=1024
ONE_MB=$(echo "${ONE_KB}*1024" | bc -l)
TEN_MB=$(echo "${ONE_MB}*10" | bc -l)
OHD_MB=$(echo "${TEN_MB}*10" | bc -l)

URGENT_VALUE="${ONE_MB}"

PREV_IN=0
PREV_OUT=0

PREV_FILE="/tmp/.bandwidth"

if [[ -f "${PREV_FILE}" ]]; then
  PREV_CONT=$(cat "${PREV_FILE}")
  PREV_IN=$(echo "${PREV_CONT}" | head -n 1)
  PREV_OUT=$(echo "${PREV_CONT}" | tail -n 1)
fi

BANDWIDTH=$(grep "${INSTANCE}" /proc/net/dev | awk -F: '{print  $2}' | awk '{print $1" "$9}')

if [[ "${BANDWIDTH}" = "" ]]; then
  exit
fi

BYTES_IN=$(echo "${BANDWIDTH}" | awk -F ' ' '{print $1}')
BYTES_OUT=$(echo "${BANDWIDTH}" | awk -F ' ' '{print $2}')

function FormatNumber() {
  if [[ "${1}" -ge "${OHD_MB}" ]]; then
    echo $(echo "scale=0;${1}/${ONE_MB}" | bc -l)"mb"
  elif [[ "${1}" -ge "${TEN_MB}" ]]; then
    echo $(echo "scale=1;${1}/${ONE_MB}" | bc -l)"mb"
  elif [[ "${1}" -ge "${ONE_MB}" ]]; then
    echo $(echo "scale=2;${1}/${ONE_MB}" | bc -l)"mb"
  elif [[ "${1}" -ge "${ONE_KB}" ]]; then
    echo $(echo "scale=0;${1}/${ONE_KB}" | bc -l)"kb"
  else
    echo "${1}""b"
  fi
}

if [[ "${PREV_IN}" != "" ]] && [[ "${PREV_OUT}" != "" ]]; then
  # Calculate the CPU usage since we last checked.
  DIFF_IN=$(echo "scale=0;${BYTES_IN} - ${PREV_IN}" | bc -l)
  DIFF_OUT=$(echo "scale=0;${BYTES_OUT} - ${PREV_OUT}" | bc -l)
  DIFF_TOTAL=0

  USAGE_IN=$(FormatNumber "${DIFF_IN}")
  USAGE_OUT=$(FormatNumber "${DIFF_OUT}")

  if [[ "${DISPLAY}" = "both" ]]; then
    echo "${USAGE_IN} : ${USAGE_OUT}"
    echo "${USAGE_IN} : ${USAGE_OUT}"
    echo ""
    DIFF_TOTAL=$((DIFF_TOTAL+DIFF_IN))
    DIFF_TOTAL=$((DIFF_TOTAL+DIFF_OUT))
  elif [[ "${DISPLAY}" = "in" ]]; then
    echo "${USAGE_IN}"
    echo "${USAGE_IN}"
    echo ""
    DIFF_TOTAL=$((DIFF_TOTAL+DIFF_IN))
  elif [[ "${DISPLAY}" = "out" ]]; then
    echo "${USAGE_OUT}"
    echo "${USAGE_OUT}"
    echo ""
    DIFF_TOTAL=$((DIFF_TOTAL+DIFF_OUT))
  fi
else
  echo "?"
  echo "?"
  echo ""
fi

# Remember the total and idle CPU times for the next check.
echo "${BYTES_IN}" > "${PREV_FILE}"
echo "${BYTES_OUT}" >> "${PREV_FILE}"

if [[ "${DIFF_TOTAL}" -ge "${URGENT_VALUE}" ]]; then
  exit 33
fi