mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-02 09:16:17 +01:00
GApplication: set prgname to appid for services
Since services are based on D-Bus activation and desktop files are supposed to be named like the busname for DBusActivatable applications and since gnome-shell wants wmclass equal to the desktop file name, we therefore want wmclass equal to the application ID in this case. wmclass is determined from the prgname, which is otherwise pretty pointless to set to some random thing in $(libexec) for a D-Bus service, so set that to the appid. This means that for D-Bus services, the following things are now all the same: - application ID - prgname - wmclass property set on all windows - desktop file name - well-known bus name There are not many applications running as D-Bus services at present so this shouldn't impact anybody except for gnome-clocks (where this change will be fixing a bug) and gnome-terminal. https://bugzilla.gnome.org/show_bug.cgi?id=699259
This commit is contained in:
parent
25d6560588
commit
7baea0aee5
@ -1539,6 +1539,13 @@ g_application_open (GApplication *application,
|
||||
* except in the case that g_application_set_inactivity_timeout() is in
|
||||
* use.
|
||||
*
|
||||
* This function sets the prgname (g_set_prgname()), if not already set,
|
||||
* to the basename of argv[0]. Since 2.38, if %G_APPLICATION_IS_SERVICE
|
||||
* is specified, the prgname is set to the application ID. The main
|
||||
* impact of this is is that the wmclass of windows created by Gtk+ will
|
||||
* be set accordingly, which helps the window manager determine which
|
||||
* application is showing the window.
|
||||
*
|
||||
* Returns: the exit status
|
||||
*
|
||||
* Since: 2.28
|
||||
@ -1561,13 +1568,20 @@ g_application_run (GApplication *application,
|
||||
arguments[i] = g_strdup (argv[i]);
|
||||
arguments[i] = NULL;
|
||||
|
||||
if (g_get_prgname () == NULL && argc > 0)
|
||||
if (g_get_prgname () == NULL)
|
||||
{
|
||||
gchar *prgname;
|
||||
if (application->priv->flags & G_APPLICATION_IS_SERVICE)
|
||||
{
|
||||
g_set_prgname (application->priv->id);
|
||||
}
|
||||
else if (argc > 0)
|
||||
{
|
||||
gchar *prgname;
|
||||
|
||||
prgname = g_path_get_basename (argv[0]);
|
||||
g_set_prgname (prgname);
|
||||
g_free (prgname);
|
||||
prgname = g_path_get_basename (argv[0]);
|
||||
g_set_prgname (prgname);
|
||||
g_free (prgname);
|
||||
}
|
||||
}
|
||||
|
||||
if (!G_APPLICATION_GET_CLASS (application)
|
||||
|
Loading…
Reference in New Issue
Block a user