Only display interfaces with IP addresses
[khatus.git] / bin / khatus_show
index 4545a1f..7b4439d 100755 (executable)
@@ -7,7 +7,7 @@ STATUS_DIR=$HOME/var/run/status
 STATUS_FILE__WIFI=$STATUS_DIR/wifi
 STATUS_FILE__ENERGY_NOTIFIED_BELLOW_HALF=$STATUS_DIR/notified_energy_bellow_half
 
-#load=$(cat /proc/loadavg | awk '{printf "%4.2f %4.2f %4.2f", $1, $2, $3}')
+load=$(awk '{printf("%4.2f", $1)}' /proc/loadavg)
 
 fan=$(awk '/^speed:/ {printf "%4d", $2}' /proc/acpi/ibm/fan)
 
@@ -98,7 +98,7 @@ network=$(
             bytes_per_unit = 1024 * 1024
         }
 
-        NR > 2 {
+        FILENAME == "/proc/net/dev" && NR > 2 {
             device     = $1; sub(":$", "", device);
             curr_read  = $2;
             curr_write = $10;
@@ -116,16 +116,50 @@ network=$(
             print curr_read  > prev_read_file;
             print curr_write > prev_write_file;
 
-            devices[device] = sprintf("%0.3f▲ %0.3f▼", diff_write, diff_read);
+            io_rates[device] = sprintf("%0.3f▲ %0.3f▼", diff_write, diff_read);
+
+            next;
+        }
+
+        /^[a-zA-Z0-9]/ {
+            interface = $1
+            interfaces[interface_count++] = interface
+        }
+
+        /^ +inet addr:/ {
+            split($2, addr, ":")
+            ipaddr = addr[2]
+            ipaddrs[interface] = ipaddr
         }
 
         END {
-            lo   = devices["lo"]
-            #eth = devices["enp0s25"]
-            wifi = devices["wlp3s0"]
-            printf("[%s | %s %s]", lo, wifi_conn, wifi)
+            canvas = ""
+            i_last = length(ipaddrs)
+            for (interface in ipaddrs) {
+                #ipaddr = ipaddrs[interface]
+
+                if (++i_curr == i_last) {
+                    sep = ""
+                } else {
+                    sep = " |"
+                }
+
+                if (interface == "wlp3s0") {
+                    curr = wifi_conn " " io_rates[interface]
+                } else if (interface == "lo") {
+                    curr = interface " " io_rates[interface]
+                } else {
+                    curr = "e" ++eth_count " " io_rates[interface]
+                }
+
+                canvas = canvas " " curr sep
+            }
+            canvas = "[" canvas "]"
+            printf("%s", canvas)
         }
-    ' /proc/net/dev
+    ' \
+    /proc/net/dev \
+    <(ifconfig)
 )
 
 energy=$(
@@ -342,17 +376,66 @@ mpd_state=$(
         '
 )
 
+mpd_current=$(
+    echo 'currentsong' \
+    | nc 127.0.0.1 6600 \
+    | awk -v max_chars=10 '
+        /^OK/ {
+            next
+        }
+
+        {
+            key = $1
+            val = $2
+            for (i=3; i<=NF; i++) {val = val " " $i}
+            data[key] = val
+        }
+
+        END {
+            if (data["Name:"]) {
+                out = data["Name:"]
+            } else {
+                file = data["file:"]
+                last = split(file, parts, "/")
+                out = parts[last]
+            }
+            printf("%s", substr(out, 1, max_chars))
+        }
+        '
+)
+
+graphics_card=$(
+    nvidia-smi \
+        --format=csv,noheader,nounits \
+        --query-gpu=memory.total,memory.used,temperature.gpu \
+    | awk -F ',' '
+        {
+            mem_total = $1;
+            mem_used  = $2;
+            temp      = $3;
+            mem_used_percent = (100 * mem_used) / mem_total;
+            printf("[%d%% %dC]", mem_used_percent, temp);
+        }
+        '
+)
+
 echo \
 "\
  E$energy\
  \
  \
+ G=$graphics_card\
+ \
+ \
  M$memory\
  \
  \
  C=[$cpu  ${temp}°C ${fan}rpm]\
  \
  \
+ L=$load\
+ \
+ \
  D$disk\
  \
  \
@@ -367,7 +450,7 @@ echo \
  \
  V=$volume\
  \
$mpd_state\
[$mpd_state $mpd_current]\
  \
  $signal_last_msg_age\
  \
This page took 0.030038 seconds and 4 git commands to generate.