From ecd1e1a64566e8e69b90995917cd525694931aae Mon Sep 17 00:00:00 2001 From: Brian Tarricone Date: Fri, 24 Mar 2023 10:51:15 +0000 Subject: [PATCH] Add minimal support for Wayland This just gets it running properly, but disables features that are difficult or impossible to do on Wayland (the window selector, and the stuff that uses libwnck). At least it doesn't segfault on startup anymore. Fixes: #73 --- src/process-window.c | 9 +++++++-- src/task-manager.c | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/process-window.c b/src/process-window.c index bd16c40..d331761 100644 --- a/src/process-window.c +++ b/src/process-window.c @@ -24,6 +24,7 @@ #include #include +#include #include #include @@ -303,8 +304,12 @@ xtm_process_window_init (XtmProcessWindow *window) G_CALLBACK (show_settings_dialog), window); button = GTK_WIDGET (gtk_builder_get_object (window->builder, "button-identify")); - g_signal_connect (G_OBJECT (button), "clicked", - G_CALLBACK (xwininfo_clicked_cb), window); + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + g_signal_connect (G_OBJECT (button), "clicked", + G_CALLBACK (xwininfo_clicked_cb), window); + } else { + gtk_widget_hide (button); + } window->filter_searchbar = GTK_WIDGET (gtk_builder_get_object (window->builder, "filter-searchbar")); { diff --git a/src/task-manager.c b/src/task-manager.c index bd843e9..16f5ecf 100644 --- a/src/task-manager.c +++ b/src/task-manager.c @@ -24,6 +24,10 @@ #include #include +#ifdef HAVE_WNCK +#include +#endif + #include "task-manager.h" #ifdef HAVE_WNCK #include "app-manager.h" @@ -93,7 +97,9 @@ static void xtm_task_manager_init (XtmTaskManager *manager) { #ifdef HAVE_WNCK - manager->app_manager = xtm_app_manager_new (); + if (GDK_IS_X11_DISPLAY (gdk_display_get_default ())) { + manager->app_manager = xtm_app_manager_new (); + } #endif manager->tasks = g_array_new (FALSE, FALSE, sizeof (Task)); @@ -111,7 +117,9 @@ xtm_task_manager_finalize (GObject *object) XtmTaskManager *manager = XTM_TASK_MANAGER (object); g_array_free (manager->tasks, TRUE); #ifdef HAVE_WNCK - g_object_unref (manager->app_manager); + if (manager->app_manager != NULL) { + g_object_unref (manager->app_manager); + } #endif g_object_unref (settings); } @@ -235,8 +243,8 @@ model_update_tree_iter (XtmTaskManager *manager, GtkTreeIter *iter, glong timest gchar *old_state; gchar *background, *foreground; #ifdef HAVE_WNCK - App *app = xtm_app_manager_get_app_from_pid (manager->app_manager, task->pid); - GdkPixbuf *icon; + App *app = manager->app_manager != NULL ? xtm_app_manager_get_app_from_pid (manager->app_manager, task->pid) : NULL; + GdkPixbuf *icon = NULL; #endif vsz = g_format_size_full (task->vsz, G_FORMAT_SIZE_IEC_UNITS);