summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorJian-Hong Pan <jhp@endlessos.org>2020-10-28 14:11:48 +0800
committerRay Strode <halfline@gmail.com>2020-11-03 15:48:44 +0000
commit06ef97a261015bc5c52fc595c05efba0d7698427 (patch)
treea92397d926ddea8af9789d8e7cfaa54ed53ada42 /utils
parent0b3d44e0e0769b76df24dee8a6dd81356e45d216 (diff)
downloadgdm-06ef97a261015bc5c52fc595c05efba0d7698427.tar.gz
utils: change gdm-disable-wayland to gdm-runtime-config
We can disable Wayland in runtime by invoking gdm-disable-wayland. However, we may also want to enable Wayland in runtime for some reasons. This idea is extended to modify more options/configurations in runtime. This commit renames gdm-disable-wayland to gdm-runtime-config and unlocks the feature to modify more gdm configurations in runtime. The new command format will be: gdm-runtime-config set <group> <key> <value> The configurable items refer to gdm.schemas. "<group>/<key>" combination is the key in gdm.schemas. For example, the original "gdm-disable-wayland" is replaced by "gdm-runtime-config set daemon WaylandEnable false". Link: https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/115#note_944907
Diffstat (limited to 'utils')
-rw-r--r--utils/gdm-runtime-config.c (renamed from utils/gdm-disable-wayland.c)28
-rw-r--r--utils/meson.build10
2 files changed, 30 insertions, 8 deletions
diff --git a/utils/gdm-disable-wayland.c b/utils/gdm-runtime-config.c
index be61c4d8..8034a2e5 100644
--- a/utils/gdm-disable-wayland.c
+++ b/utils/gdm-runtime-config.c
@@ -31,21 +31,43 @@ main (int argc, char *argv[])
{
g_autoptr(GKeyFile) key_file = NULL;
g_autoptr(GError) error = NULL;
+ gchar *group, *key, *value;
gboolean saved_okay;
+ if (argc < 5 || g_strcmp0(argv[1], "set") != 0) {
+ g_printerr("gdm-runtime-config: command format should be " \
+ "'gdm-runtime-config set <group> <key> <value>'\n" \
+ "For example, 'gdm-runtime-config set daemon WaylandEnable true'");
+ return EX_USAGE;
+ }
+
+ group = argv[2];
+ key = argv[3];
+ value = argv[4];
+
setlocale (LC_ALL, "");
key_file = g_key_file_new ();
- g_key_file_set_boolean (key_file, "daemon", "WaylandEnable", FALSE);
+ /* Just load the runtime conf file and ignore the error. A new file
+ * will be created later if it is file not found.
+ * So that more than one config item can be set.
+ */
+ g_key_file_load_from_file (key_file,
+ GDM_RUNTIME_CONF,
+ G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS,
+ &error);
+ g_clear_error (&error);
+
+ g_key_file_set_value (key_file, group, key, value);
g_mkdir_with_parents (GDM_RUN_DIR, 0711);
saved_okay = g_key_file_save_to_file (key_file, GDM_RUNTIME_CONF, &error);
if (!saved_okay) {
- g_printerr ("gdm-disable-wayland: unable to disable wayland: %s",
- error->message);
+ g_printerr ("gdm-runtime-config: unable to set '%s' in '%s' group to '%s': %s",
+ key, group, value, error->message);
return EX_CANTCREAT;
}
diff --git a/utils/meson.build b/utils/meson.build
index f719c49d..d59f167b 100644
--- a/utils/meson.build
+++ b/utils/meson.build
@@ -26,14 +26,14 @@ gdm_screenshot = executable('gdm-screenshot',
install: true,
)
-# gdm-disable-wayland
-gdm_disable_wayland_deps = [
+# gdm-runtime-config
+gdm_runtime_config_deps = [
glib_dep,
]
-gdm_disable_wayland = executable('gdm-disable-wayland',
- 'gdm-disable-wayland.c',
- dependencies: gdm_disable_wayland_deps,
+gdm_runtime_config = executable('gdm-runtime-config',
+ 'gdm-runtime-config.c',
+ dependencies: gdm_runtime_config_deps,
include_directories: config_h_dir,
install: true,
install_dir: get_option('libexecdir'),