summaryrefslogtreecommitdiff
path: root/src/application.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/application.c')
-rw-r--r--src/application.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/application.c b/src/application.c
index bad62b1..cb05f65 100644
--- a/src/application.c
+++ b/src/application.c
@@ -1,4 +1,5 @@
#include "application.h"
+#include "glib-object.h"
#include "panel.h"
#include "launcher.h"
#include "control-center.h"
@@ -9,6 +10,7 @@
#include "services/brightness-service.h"
#include "services/quick-answer-service.h"
#include "services/workspace-service.h"
+#include "services/workspaces/hyprland-workspace-service.h"
#include "services/notification-service.h"
#include "services/audio-service.h"
#include "services/network-service.h"
@@ -91,6 +93,7 @@ static void foobar_application_destroy_panels ( FoobarApplicati
static void foobar_application_create_panels ( FoobarApplication* self );
static guint foobar_application_create_panel ( FoobarApplication* self,
GdkMonitor* monitor );
+static void foobar_application_initialize_workspaces ( FoobarApplication* self );
G_DEFINE_FINAL_TYPE( FoobarApplication, foobar_application, GTK_TYPE_APPLICATION )
@@ -176,7 +179,7 @@ void foobar_application_activate( GApplication* app )
self->battery_service = foobar_battery_service_new( );
self->clock_service = foobar_clock_service_new( );
self->brightness_service = foobar_brightness_service_new( );
- self->workspace_service = foobar_workspace_service_new( );
+ foobar_application_initialize_workspaces( self );
self->notification_service = foobar_notification_service_new( );
self->audio_service = foobar_audio_service_new( );
self->network_service = foobar_network_service_new( );
@@ -689,3 +692,15 @@ guint foobar_application_create_panel(
return gtk_application_window_get_id( GTK_APPLICATION_WINDOW( panel ) );
}
+
+//
+// Initialize the instance's workspace_service, attempting multiple window manager implementations.
+//
+void foobar_application_initialize_workspaces( FoobarApplication* self )
+{
+ g_clear_object( &self->workspace_service );
+ self->workspace_service = foobar_hyprland_workspace_service_new( );
+ if ( foobar_workspace_service_is_available( self->workspace_service ) ) { return; }
+
+ g_warning( "No suitable workspace manager implementation found." );
+}