From 623297b18a812c3f64c9ae98df695f064c0ed240 Mon Sep 17 00:00:00 2001
From: dec05eba <dec05eba@protonmail.com>
Date: Mon, 4 Nov 2024 22:48:05 +0100
Subject: Prefer window title for game name rather than class, fix game names
 with slash not saving to correct dir

---
 gsr-window-name/main.c | 39 ++++++++++++++++++---------------------
 1 file changed, 18 insertions(+), 21 deletions(-)

(limited to 'gsr-window-name')

diff --git a/gsr-window-name/main.c b/gsr-window-name/main.c
index a46aff2..8ebf1e0 100644
--- a/gsr-window-name/main.c
+++ b/gsr-window-name/main.c
@@ -48,15 +48,17 @@ static Window get_focused_window(Display *dpy, capture_type cap_type) {
     Window focused_window = None;
 
     if(cap_type == CAPTURE_TYPE_FOCUSED) {
-        Atom type = None;
-        int format = 0;
-        unsigned long num_items = 0;
-        unsigned long bytes_left = 0;
-        unsigned char *data = NULL;
-        XGetWindowProperty(dpy, DefaultRootWindow(dpy), net_active_window_atom, 0, 1, False, XA_WINDOW, &type, &format, &num_items, &bytes_left, &data);
+        // Atom type = None;
+        // int format = 0;
+        // unsigned long num_items = 0;
+        // unsigned long bytes_left = 0;
+        // unsigned char *data = NULL;
+        // XGetWindowProperty(dpy, DefaultRootWindow(dpy), net_active_window_atom, 0, 1, False, XA_WINDOW, &type, &format, &num_items, &bytes_left, &data);
 
-        if(type == XA_WINDOW && num_items == 1 && data)
-            return *(Window*)data;
+        // fprintf(stderr, "focused window: %p\n", (void*)data);
+
+        // if(type == XA_WINDOW && num_items == 1 && data)
+        //     return *(Window*)data;
 
         int revert_to = 0;
         XGetInputFocus(dpy, &focused_window, &revert_to);
@@ -99,10 +101,6 @@ static char* get_window_title(Display *dpy, Window window) {
     return NULL;
 }
 
-static bool is_steam_game(Display *dpy, Window window) {
-    return window_has_atom(dpy, window, XInternAtom(dpy, "STEAM_GAME", False));
-}
-
 static const char* strip(const char *str, int *len) {
     int str_len = strlen(str);
     for(int i = 0; i < str_len; ++i) {
@@ -171,20 +169,19 @@ int main(int argc, char **argv) {
     if(focused_window == None)
         exit(2);
 
-    if(!is_steam_game(dpy, focused_window)) {
-        XClassHint class_hint = {0};
-        XGetClassHint(dpy, focused_window, &class_hint);
-        if(class_hint.res_class) {
-            print_str_strip(class_hint.res_class);
-            exit(0);
-        }
-    }
-
+    // Window title is not always ideal (for example for a browser), but for games its pretty much required
     char *window_title = get_window_title(dpy, focused_window);
     if(window_title) {
         print_str_strip(window_title);
         exit(0);
     }
 
+    XClassHint class_hint = {0};
+    XGetClassHint(dpy, focused_window, &class_hint);
+    if(class_hint.res_class) {
+        print_str_strip(class_hint.res_class);
+        exit(0);
+    }
+
     return 2;
 }
-- 
cgit v1.2.3-70-g09d2