From 6b78e40e256168742334897e1411fbe472b8b35a Mon Sep 17 00:00:00 2001
From: dec05eba <dec05eba@protonmail.com>
Date: Sat, 8 Apr 2023 07:10:10 +0200
Subject: Show error if pkexec is not installed (on flatpak too)

---
 src/main.cpp | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/main.cpp b/src/main.cpp
index 31e4639..87a8e43 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1529,8 +1529,15 @@ static bool is_program_installed(const StringView program_name) {
     return program_installed;
 }
 
+static bool is_inside_flatpak(void) {
+    return getenv("FLATPAK_ID") != NULL;
+}
+
 static bool is_pkexec_installed() {
-    return is_program_installed({ "pkexec", 6 });
+    if(is_inside_flatpak())
+        return system("flatpak-spawn --host pkexec --version") == 0;
+    else
+        return is_program_installed({ "pkexec", 6 });
 }
 
 typedef gboolean (*KeyPressHandler)(GtkButton *button, gpointer userdata);
@@ -2490,6 +2497,15 @@ static void activate(GtkApplication *app, gpointer userdata) {
             g_application_quit(G_APPLICATION(app));
             return;
         }
+    } else {
+        if(!is_pkexec_installed()) {
+            GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
+                "pkexec needs to be installed to record a monitor with an AMD/Intel GPU. Please install and run polkit.");
+            gtk_dialog_run(GTK_DIALOG(dialog));
+            gtk_widget_destroy(dialog);
+            g_application_quit(G_APPLICATION(app));
+            return;
+        }
     }
 
     std::string window_title = "GPU Screen Recorder | Running on ";
-- 
cgit v1.2.3-70-g09d2