commit db14584397587815e025d8ef570e825852060538
parent 0f41177e4a01dd4792e3340fe91f219ec366bfcb
Author: sam-barr <samfbarr@outlook.com>
Date: Wed, 22 Apr 2020 16:30:29 -0500
Merge pull request #14 from allisio/terminal-name
Get name of terminal emulator from X server
Diffstat:
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/paleofetch.c b/paleofetch.c
@@ -9,6 +9,7 @@
#include <pci/pci.h>
#include <X11/Xlib.h>
+#include <X11/Xatom.h>
#define DISTRO "Arch"
#define BUF_SIZE 150
@@ -241,8 +242,27 @@ char *get_resolution() {
}
char *get_terminal() {
+ Display *display = XOpenDisplay(NULL);
+ unsigned char *prop;
+ unsigned long _, // not unused, but we don't need the results
+ window = RootWindow(display, XDefaultScreen(display));
+ Atom a,
+ active = XInternAtom(display, "_NET_ACTIVE_WINDOW", True),
+ class = XInternAtom(display, "WM_CLASS", True);
+
+#define GetProp(property) \
+ XGetWindowProperty(display, window, property, 0, 64, 0, 0, &a, (int *)&_, &_, &_, &prop);
+
+ GetProp(active);
+ window = (prop[3] << 24) + (prop[2] << 16) + (prop[1] << 8) + prop[0];
+ free(prop);
+ GetProp(class);
+ XCloseDisplay(display);
+
char *terminal = malloc(BUF_SIZE);
- strncpy(terminal, getenv("TERM"), BUF_SIZE);
+ snprintf(terminal, BUF_SIZE, "%s", prop);
+ free(prop);
+
return terminal;
}