From e80a97f5603658af3a444a3a8213024c0c9d36d6 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Sun, 26 Apr 2026 01:03:47 +0200 Subject: split up workspace service --- src/application.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/application.c') 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." ); +} -- cgit v1.3.1