Reduce separating whitespace
[khatus.git] / bin / khatus_show
index a872b6c..8642153 100755 (executable)
@@ -7,9 +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
 
-SYMBOL_WIFI='📶'
-
-#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)
 
@@ -94,33 +92,73 @@ disk=$(
             printf("%s[%d%% %s]", direction, curr_perc, disk_io);
         }')
 
-io_net=$(
-    awk '
+network=$(
+    ip -s addr \
+    | awk -v wifi_conn=$(cat $STATUS_FILE__WIFI) '
         BEGIN {
             bytes_per_unit = 1024 * 1024
         }
 
-        NR > 2 {
-            device     = $1; sub(":$", "", device);
-            curr_read  = $2;
-            curr_write = $10;
+        /^[0-9]+:/ {
+            sub(":$", "", $1)
+            sub(":$", "", $2)
+            sequence = $1
+            interface = $2
+            interfaces[sequence] = interface
+        }
+
+        /^ +inet [0-9]/ {
+            sub("/[0-9]+", "", $2)
+            addr = $2
+            addrs[interface] = addr
+        }
+
+        /^ +RX: / {transfer_direction = "r"}
+        /^ +TX: / {transfer_direction = "w"}
 
-            prev_file_prefix  = "/home/siraaj/var/run/status/io_net_" device;
-            prev_read_file  = prev_file_prefix "_read";
-            prev_write_file = prev_file_prefix "_write";
+        /^ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+ *$/ {
+            io[interface, transfer_direction] = $1;
+        }
 
-            getline prev_read < prev_read_file;
-            getline prev_write < prev_write_file;
+        END {
+            for (i=1; i<=sequence; i++) {
+                interface = interfaces[i]
+                if (addrs[interface]) {
+                    curr_read  = io[interface, "r"]
+                    curr_write = io[interface, "w"]
 
-            diff_read  = (curr_read  - prev_read ) / bytes_per_unit;
-            diff_write = (curr_write - prev_write) / bytes_per_unit;
+                    prefix = "/home/siraaj/var/run/status/io_net_" interface
+                    prev_read_file  = prefix "_read"
+                    prev_write_file = prefix "_write"
 
-            print curr_read  > prev_read_file;
-            print curr_write > prev_write_file;
+                    getline prev_read < prev_read_file
+                    getline prev_write < prev_write_file
 
-            printf("%s %0.3fâ–² %0.3fâ–¼\n", device, diff_write, diff_read);
-        }
-    ' /proc/net/dev
+                    diff_read    = (curr_read  - prev_read ) / bytes_per_unit
+                    diff_written = (curr_write - prev_write) / bytes_per_unit
+
+                    print curr_read  > prev_read_file
+                    print curr_write > prev_write_file
+
+                    io_stat = sprintf("%0.3fâ–² %0.3fâ–¼", diff_written, diff_read)
+                } else {
+                    io_stat = "--"
+                }
+
+                label = substr(interface, 1, 1)
+                if (interface == "wlp3s0") {
+                    label = label ":" wifi_conn
+                }
+
+                if (i == sequence) {
+                    sep = ""
+                } else {
+                    sep = " | "
+                }
+
+                printf("%s:%s%s", label, io_stat, sep)
+            }
+        }'
 )
 
 energy=$(
@@ -187,8 +225,6 @@ volume_pactl=$(
 
 volume="[$volume_pactl]"
 
-wifi=$(cat $STATUS_FILE__WIFI)
-
 screen_brightness=$(
     max=$(cat /sys/class/backlight/acpi_video0/max_brightness)
     cur=$(cat /sys/class/backlight/acpi_video0/brightness)
@@ -303,7 +339,7 @@ signal_last_msg_age=$(
         months  = days / 30;
         #fmt = "%.1f";
         fmt = "%d";
-        #printf(fmt " s\n", seconds);
+        printf(fmt " s\n", seconds);
         printf(fmt " m\n", minutes);
         printf(fmt " h\n", hours);
         printf(fmt " d\n", days);
@@ -339,32 +375,72 @@ 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\
  \
- \
- $SYMBOL_WIFI [$wifi $(echo "$io_net" | awk '/^wlp3s0/ {print $2, $3}')]\
- \
+ N:[$network]\
  \
  B:$bluetooth_power\
  \
- \
  S=$screen_brightness\
  \
- \
  V=$volume\
  \
$mpd_state\
[$mpd_state $mpd_current]\
  \
  $signal_last_msg_age\
  \
This page took 0.039831 seconds and 4 git commands to generate.