aboutsummaryrefslogtreecommitdiff
path: root/src/utils.c
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2018-03-12 14:34:44 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2018-03-12 18:33:03 +0100
commit422443fc5c653bfd68aad90a2556a62f1edf1333 (patch)
tree72c941cdab3684b982da1b6e4053aaf0623a2821 /src/utils.c
parent4d9589837e532df1015f7579439703c0af0164ca (diff)
downloadayatana-indicator-power-422443fc5c653bfd68aad90a2556a62f1edf1333.tar.gz
ayatana-indicator-power-422443fc5c653bfd68aad90a2556a62f1edf1333.tar.bz2
ayatana-indicator-power-422443fc5c653bfd68aad90a2556a62f1edf1333.zip
Make URL dispatcher build-dependency optional and handle battery settings request appropriately.
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c
new file mode 100644
index 0000000..6b2aeb3
--- /dev/null
+++ b/src/utils.c
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2013 Canonical Ltd.
+ * Copytight 2018 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+ *
+ * Authors (@Canonical):
+ * Charles Kerr <charles.kerr@canonical.com>
+ * Ted Gould <ted@canonical.com>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3, as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranties of
+ * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "utils.h"
+
+#ifdef HAS_URLDISPATCHER
+# include <url-dispatcher.h>
+#endif
+
+/* Run a particular program based on an activation */
+void
+execute_command (const gchar * cmd)
+{
+ GError * err = NULL;
+
+ g_debug ("Issuing command '%s'", cmd);
+
+ if (!g_spawn_command_line_async (cmd, &err))
+ {
+ g_warning ("Unable to start %s: %s", cmd, err->message);
+ g_error_free (err);
+ }
+}
+
+void
+utils_handle_settings_request (void)
+{
+ static const gchar *control_center_cmd = NULL;
+
+ if (control_center_cmd == NULL)
+ {
+#ifdef HAS_URLDISPATCHER
+ if (g_getenv ("MIR_SOCKET") != NULL)
+ {
+ url_dispatch_send("settings:///system/battery", NULL, NULL);
+ return;
+ }
+ else
+#endif
+ if ((!g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "xubuntu")) || (!g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "xfce")))
+ {
+ control_center_cmd = "xfce4-power-manager-settings";
+ }
+ else if (!g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "mate"))
+ {
+ control_center_cmd = "mate-power-preferences";
+ }
+ else if (!g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Pantheon"))
+ {
+ control_center_cmd = "switchboard --open-plug system-pantheon-power";
+ }
+ else
+ {
+ gchar *path;
+
+ path = g_find_program_in_path ("unity-control-center");
+ if (path != NULL)
+ control_center_cmd = "unity-control-center power";
+ else
+ control_center_cmd = "gnome-control-center power";
+
+ g_free (path);
+ }
+ }
+
+ execute_command (control_center_cmd);
+}