diff options
author | Jian-Hong Pan <jhp@endlessos.org> | 2020-10-28 14:11:48 +0800 |
---|---|---|
committer | Ray Strode <halfline@gmail.com> | 2020-11-03 15:48:44 +0000 |
commit | 06ef97a261015bc5c52fc595c05efba0d7698427 (patch) | |
tree | a92397d926ddea8af9789d8e7cfaa54ed53ada42 /utils | |
parent | 0b3d44e0e0769b76df24dee8a6dd81356e45d216 (diff) | |
download | gdm-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.build | 10 |
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'), |