diff options
| author | Hannes Schulze <contact@haschu.me> | 2026-04-26 01:03:47 +0200 |
|---|---|---|
| committer | Hannes Schulze <contact@haschu.me> | 2026-04-26 01:03:47 +0200 |
| commit | e80a97f5603658af3a444a3a8213024c0c9d36d6 (patch) | |
| tree | 8b5326361b0f6a93533d7c31fd37b205fc9d290b /src/application.c | |
| parent | 77a4c25a2e5aeda0f0d1f1980eb7c85c99041c45 (diff) | |
split up workspace service
Diffstat (limited to 'src/application.c')
| -rw-r--r-- | src/application.c | 17 |
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." ); +} |
