aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asciihexer.c46
-rwxr-xr-xconfigs/xmobar_gputemp.sh31
-rw-r--r--xidle.c40
3 files changed, 106 insertions, 11 deletions
diff --git a/asciihexer.c b/asciihexer.c
new file mode 100644
index 0000000..afa1cd0
--- /dev/null
+++ b/asciihexer.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASCII_HEXLEN 3
+
+
+static void defaultHexOut(char *text) {
+ int i;
+ size_t len;
+
+ for (i = 0; i < (len = strlen(text)); i++) {
+ printf("0x%X%c", text[i], (i == len-1 ? '\n' : ' '));
+ }
+}
+
+static void dwordHexOut(char *text) {
+ int i;
+ size_t len;
+
+ for (i = 0; i < (len = strlen(text)); i++) {
+ printf("%s%X%s", (i % 4 == 0 ? (i == 0 ? "0x" : " 0x") : ""), text[i], (i == len-1 ? "\n" : ""));
+ }
+}
+
+static void strHexOut(char *text) {
+ int i;
+ size_t len;
+
+ for (i = 0; i < (len = strlen(text)); i++) {
+ printf("%s%X%s", (i == 0 ? "0x" : ""), text[i], (i == len-1 ? "\n" : ""));
+ }
+}
+
+int main(int argc, char **argv)
+{
+ if (argc != 2) {
+ fprintf(stderr, "usage: %s [TEXT]\n", argv[0]);
+ return 1;
+ }
+
+ defaultHexOut(argv[1]);
+ dwordHexOut(argv[1]);
+ strHexOut(argv[1]);
+ return 0;
+}
diff --git a/configs/xmobar_gputemp.sh b/configs/xmobar_gputemp.sh
index eb5bf64..793b1d1 100755
--- a/configs/xmobar_gputemp.sh
+++ b/configs/xmobar_gputemp.sh
@@ -1,18 +1,27 @@
#!/bin/bash
if [ "x$1" = "xmem" ]; then
- nvidia-smi | grep -oE '[0-9]{1,3}%\s*[0-9]{1,4}MB\s*/\s*[0-9]{1,4}MB'
+ echo -ne "GPU(MEM): "
+ OUT=$(nvidia-smi | sed -n 's/.*\s\([0-9]\{1,3\}\)\%\s.*/\1/p')
else
+ echo -ne "GPU(TMP): "
OUT=$(nvidia-smi | sed -n 's/\(.*\)\([0-9]\{2,3\}\)C\(.*\)/\2/p')
- if [ "x$OUT" = "x" ]; then
- echo "<fc=#FF0000>ERR</fc>"
- elif [ $OUT -gt 75 ]; then
- echo "<fc=#FF0000>$OUT</fc>°C"
- elif [ $OUT -ge 65 ]; then
- echo "<fc=#FFFF00>$OUT</fc>°C"
- elif [ $OUT -ge 50 ]; then
- echo "<fc=#00FF00>$OUT</fc>°C"
+fi
+if [ "x$OUT" = "x" ]; then
+ echo "<fc=#FF0000>ERR</fc>"
+fi
+for tmp in $OUT; do
+ if [ $tmp -gt 75 ]; then
+ echo -ne "<fc=#FF0000>$tmp</fc>°C"
+ elif [ $tmp -ge 65 ]; then
+ echo -ne "<fc=#FFFF00>$tmp</fc>°C"
+ elif [ $tmp -ge 50 ]; then
+ echo -ne "<fc=#00FF00>$tmp</fc>°C"
else
- echo "$OUT°C"
+ if [ "x$1" = "xmem" ]; then
+ echo -ne "$tmp% "
+ else
+ echo -ne "$tmp°C "
+ fi
fi
-fi
+done
diff --git a/xidle.c b/xidle.c
new file mode 100644
index 0000000..ade5407
--- /dev/null
+++ b/xidle.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/scrnsaver.h>
+
+
+/* Report amount of X server idle time. */
+/* gcc xidle.c -o xidle -lX11 -lXext -lXss */
+
+int main(int argc, char *argv[])
+{
+ Display *display;
+ int event_base, error_base;
+ XScreenSaverInfo info;
+ float seconds;
+ unsigned int d_seconds = 0;
+
+ if (argc == 2) {
+ d_seconds = atoi(argv[1]);
+ }
+
+ display = XOpenDisplay("");
+
+ if (XScreenSaverQueryExtension(display, &event_base, &error_base)) {
+ XScreenSaverQueryInfo(display, DefaultRootWindow(display), &info);
+
+ seconds = (float)info.idle/1000.0f;
+ if ( d_seconds > 0 ) {
+ if (d_seconds <= (unsigned int) seconds) {
+ return 1;
+ }
+ } else {
+ printf("%f\n",seconds);
+ }
+ return 0;
+ } else {
+ fprintf(stderr,"Error: XScreenSaver Extension not present\n");
+ return -1;
+ }
+}
+