mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-11-01 00:42:16 +01:00 
			
		
		
		
	Merge branch 'activation-token' into 'main'
gdesktopappinfo: Set XDG_ACTIVATION_TOKEN/activation-token startup ID key Closes #2709 See merge request GNOME/glib!3090
This commit is contained in:
		| @@ -577,9 +577,9 @@ g_app_info_get_icon (GAppInfo *appinfo) | ||||
|  * environment variable with the path of the launched desktop file and | ||||
|  * `GIO_LAUNCHED_DESKTOP_FILE_PID` to the process id of the launched | ||||
|  * process. This can be used to ignore `GIO_LAUNCHED_DESKTOP_FILE`, | ||||
|  * should it be inherited by further processes. The `DISPLAY` and | ||||
|  * `DESKTOP_STARTUP_ID` environment variables are also set, based | ||||
|  * on information provided in @context. | ||||
|  * should it be inherited by further processes. The `DISPLAY`, | ||||
|  * `XDG_ACTIVATION_TOKEN` and `DESKTOP_STARTUP_ID` environment | ||||
|  * variables are also set, based on information provided in @context. | ||||
|  * | ||||
|  * Returns: %TRUE on successful launch, %FALSE otherwise. | ||||
|  **/ | ||||
| @@ -1594,10 +1594,18 @@ g_app_launch_context_get_display (GAppLaunchContext *context, | ||||
|  * @files: (element-type GFile): a #GList of of #GFile objects | ||||
|  *  | ||||
|  * Initiates startup notification for the application and returns the | ||||
|  * `DESKTOP_STARTUP_ID` for the launched operation, if supported. | ||||
|  * `XDG_ACTIVATION_TOKEN` or `DESKTOP_STARTUP_ID` for the launched operation, | ||||
|  * if supported. | ||||
|  * | ||||
|  * Startup notification IDs are defined in the  | ||||
|  * [FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt). | ||||
|  * The returned token may be referred to equivalently as an ‘activation token’ | ||||
|  * (using Wayland terminology) or a ‘startup sequence ID’ (using X11 terminology). | ||||
|  * The two [are interoperable](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/staging/xdg-activation/x11-interoperation.rst). | ||||
|  * | ||||
|  * Activation tokens are defined in the [XDG Activation Protocol](https://wayland.app/protocols/xdg-activation-v1), | ||||
|  * and startup notification IDs are defined in the  | ||||
|  * [freedesktop.org Startup Notification Protocol](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt). | ||||
|  * | ||||
|  * Support for the XDG Activation Protocol was added in GLib 2.76. | ||||
|  * | ||||
|  * Returns: (nullable): a startup notification ID for the application, or %NULL if | ||||
|  *     not supported. | ||||
|   | ||||
| @@ -304,6 +304,9 @@ app_get_platform_data (void) | ||||
|   if ((startup_id = g_getenv ("DESKTOP_STARTUP_ID"))) | ||||
|     g_variant_builder_add (&builder, "{sv}", "desktop-startup-id", g_variant_new_string (startup_id)); | ||||
|  | ||||
|   if ((startup_id = g_getenv ("XDG_ACTIVATION_TOKEN"))) | ||||
|     g_variant_builder_add (&builder, "{sv}", "activation-token", g_variant_new_string (startup_id)); | ||||
|  | ||||
|   return g_variant_builder_end (&builder); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -2911,7 +2911,10 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo            *info, | ||||
|                                                                   G_APP_INFO (info), | ||||
|                                                                   launched_files); | ||||
|               if (sn_id) | ||||
|                 { | ||||
|                   envp = g_environ_setenv (envp, "DESKTOP_STARTUP_ID", sn_id, TRUE); | ||||
|                   envp = g_environ_setenv (envp, "XDG_ACTIVATION_TOKEN", sn_id, TRUE); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|           g_list_free_full (launched_files, g_object_unref); | ||||
| @@ -3088,7 +3091,10 @@ g_desktop_app_info_make_platform_data (GDesktopAppInfo   *info, | ||||
|  | ||||
|           sn_id = g_app_launch_context_get_startup_notify_id (launch_context, G_APP_INFO (info), launched_files); | ||||
|           if (sn_id) | ||||
|             g_variant_builder_add (&builder, "{sv}", "desktop-startup-id", g_variant_new_take_string (sn_id)); | ||||
|             { | ||||
|               g_variant_builder_add (&builder, "{sv}", "desktop-startup-id", g_variant_new_string (sn_id)); | ||||
|               g_variant_builder_add (&builder, "{sv}", "activation-token", g_variant_new_take_string (g_steal_pointer (&sn_id))); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|       g_list_free_full (launched_files, g_object_unref); | ||||
|   | ||||
| @@ -226,13 +226,24 @@ test_application_before_emit (GApplication *application, | ||||
|                               GVariant     *platform_data) | ||||
| { | ||||
|   const gchar *startup_id; | ||||
|   gsize i; | ||||
|  | ||||
|   g_assert (!saw_startup_id); | ||||
|  | ||||
|   if (!g_variant_lookup (platform_data, "desktop-startup-id", "&s", &startup_id)) | ||||
|   const gchar *startup_id_keys[] = { | ||||
|     "desktop-startup-id", | ||||
|     "activation-token", | ||||
|     NULL, | ||||
|   }; | ||||
|  | ||||
|   for (i = 0; startup_id_keys[i] != NULL; i++) | ||||
|     { | ||||
|       if (!g_variant_lookup (platform_data, startup_id_keys[i], "&s", &startup_id)) | ||||
|         return; | ||||
|  | ||||
|       g_assert_cmpstr (startup_id, ==, "expected startup id"); | ||||
|     } | ||||
|  | ||||
|   saw_startup_id = TRUE; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user