[gnome-shell] extension-tool: Use enable/disable D-Bus API if possible
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] extension-tool: Use enable/disable D-Bus API if possible
- Date: Sun, 5 Apr 2020 12:40:44 +0000 (UTC)
commit d80ef67d1d54cbf34f4be197845ceafe9b0f8704
Author: Florian Müllner <fmuellner gnome org>
Date: Tue Jul 23 23:37:09 2019 +0000
extension-tool: Use enable/disable D-Bus API if possible
Commit 4589da957 added D-Bus API for enabling/disabling extensions,
use that if possible to provide better feedback and not clutter the
settings with non-existent UUIDs.
The old code path is preserved as fallback to keep the commands
working from outside a running shell session.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391
subprojects/extensions-tool/src/command-disable.c | 46 ++++++++++++++++++++++-
subprojects/extensions-tool/src/command-enable.c | 46 ++++++++++++++++++++++-
2 files changed, 90 insertions(+), 2 deletions(-)
---
diff --git a/subprojects/extensions-tool/src/command-disable.c
b/subprojects/extensions-tool/src/command-disable.c
index 116f6699cb..93c316bf78 100644
--- a/subprojects/extensions-tool/src/command-disable.c
+++ b/subprojects/extensions-tool/src/command-disable.c
@@ -26,7 +26,37 @@
#include "config.h"
static gboolean
-disable_extension (const char *uuid)
+disable_extension_dbus (GDBusProxy *proxy,
+ const char *uuid)
+{
+ g_autoptr (GVariant) response = NULL;
+ g_autoptr (GError) error = NULL;
+ gboolean success = FALSE;
+
+ response = g_dbus_proxy_call_sync (proxy,
+ "DisableExtension",
+ g_variant_new ("(s)", uuid),
+ 0,
+ -1,
+ NULL,
+ &error);
+
+ if (response == NULL)
+ {
+ g_printerr (_("Failed to connect to GNOME Shell\n"));
+ return FALSE;
+ }
+
+ g_variant_get (response, "(b)", &success);
+
+ if (!success)
+ g_printerr (_("Extension “%s” does not exist\n"), uuid);
+
+ return success;
+}
+
+static gboolean
+disable_extension_gsettings (const char *uuid)
{
g_autoptr(GSettings) settings = get_shell_settings ();
@@ -37,6 +67,20 @@ disable_extension (const char *uuid)
settings_list_add (settings, "disabled-extensions", uuid);
}
+static gboolean
+disable_extension (const char *uuid)
+{
+ g_autoptr (GDBusProxy) proxy = NULL;
+ g_autoptr (GError) error = NULL;
+
+ proxy = get_shell_proxy (&error);
+
+ if (proxy != NULL)
+ return disable_extension_dbus (proxy, uuid);
+ else
+ return disable_extension_gsettings (uuid);
+}
+
int
handle_disable (int argc, char *argv[], gboolean do_help)
{
diff --git a/subprojects/extensions-tool/src/command-enable.c
b/subprojects/extensions-tool/src/command-enable.c
index 786e451095..6ae3a83513 100644
--- a/subprojects/extensions-tool/src/command-enable.c
+++ b/subprojects/extensions-tool/src/command-enable.c
@@ -26,7 +26,37 @@
#include "config.h"
static gboolean
-enable_extension (const char *uuid)
+enable_extension_dbus (GDBusProxy *proxy,
+ const char *uuid)
+{
+ g_autoptr (GVariant) response = NULL;
+ g_autoptr (GError) error = NULL;
+ gboolean success = FALSE;
+
+ response = g_dbus_proxy_call_sync (proxy,
+ "EnableExtension",
+ g_variant_new ("(s)", uuid),
+ 0,
+ -1,
+ NULL,
+ &error);
+
+ if (response == NULL)
+ {
+ g_printerr (_("Failed to connect to GNOME Shell\n"));
+ return FALSE;
+ }
+
+ g_variant_get (response, "(b)", &success);
+
+ if (!success)
+ g_printerr (_("Extension “%s” does not exist\n"), uuid);
+
+ return success;
+}
+
+static gboolean
+enable_extension_gsettings (const char *uuid)
{
g_autoptr(GSettings) settings = get_shell_settings ();
@@ -37,6 +67,20 @@ enable_extension (const char *uuid)
settings_list_remove (settings, "disabled-extensions", uuid);
}
+static gboolean
+enable_extension (const char *uuid)
+{
+ g_autoptr (GDBusProxy) proxy = NULL;
+ g_autoptr (GError) error = NULL;
+
+ proxy = get_shell_proxy (&error);
+
+ if (proxy != NULL)
+ return enable_extension_dbus (proxy, uuid);
+ else
+ return enable_extension_gsettings (uuid);
+}
+
int
handle_enable (int argc, char *argv[], gboolean do_help)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]