Moved to a synchronous based launch of desktop apps as async was causing mysterious hangs in GIO for some people
1 files changed, 3 insertions(+), 18 deletions(-)

M modes/drun.c
M modes/drun.c +3 -18
@@ 373,21 373,6 @@ struct widget* wofi_drun_get_widget(void
 	return NULL;
 }
 
-static void launch_done(GObject* obj, GAsyncResult* result, gpointer data) {
-	GError* err = NULL;
-	if(g_app_info_launch_uris_finish(G_APP_INFO(obj), result, &err)) {
-		exit(0);
-	} else if(err != NULL) {
-		char* cmd = data;
-		fprintf(stderr, "%s cannot be executed: %s\n", cmd, err->message);
-		g_error_free(err);
-	} else {
-		char* cmd = data;
-		fprintf(stderr, "%s cannot be executed\n", cmd);
-	}
-	exit(1);
-}
-
 static void set_dri_prime(GDesktopAppInfo* info) {
 	bool dri_prime = g_desktop_app_info_get_boolean(info, "PrefersNonDefaultGPU");
 	if(dri_prime) {

          
@@ 404,7 389,7 @@ void wofi_drun_exec(const gchar* cmd) {
 			exit(0);
 		} else {
 			set_dri_prime(info);
-			g_app_info_launch_uris_async(G_APP_INFO(info), NULL, NULL, NULL, launch_done, (gchar*) cmd);
+			g_app_info_launch_uris(G_APP_INFO(info), NULL, NULL, NULL);
 		}
 	} else if(strrchr(cmd, ' ') != NULL) {
 		char* space = strrchr(cmd, ' ');

          
@@ 418,13 403,13 @@ void wofi_drun_exec(const gchar* cmd) {
 		} else {
 			set_dri_prime(info);
 			g_desktop_app_info_launch_action(info, action, NULL);
-			utils_sleep_millis(500);
 		}
-		exit(0);
 	} else {
 		fprintf(stderr, "%s cannot be executed\n", cmd);
 		exit(1);
 	}
+	utils_sleep_millis(100);
+	exit(0);
 }
 
 const char** wofi_drun_get_arg_names(void) {