aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
authorBrian Ashworth <bosrsf04@gmail.com>2019-06-18 22:27:57 -0400
committerSimon Ser <contact@emersion.fr>2019-06-19 07:40:52 +0300
commit5069b53d6c561d0f949cb0aec1d70397a2fb8a90 (patch)
tree9738ba995d5a520560fc4262ff7b025d6bfaf71e /sway
parentddad41f423db14f89f765fc134d45d1ea8a60caf (diff)
downloadsway-5069b53d6c561d0f949cb0aec1d70397a2fb8a90.tar.xz
config/xwayland: retain xwayland status on reload
Since xwayland can only be enabled/disabled at launch, the xwayland status should be retained on reload. Having `xwayland enabled|disabled` in the config, should not cause `config->xwayland` to be invalid on reload. This also returns `CMD_FAILURE` with a message that xwayland can only be enabled/disabled on launch when trying to set the invalid status on reload. This allows swaynag to notify the user that the change will not take effect until sway is restarted.
Diffstat (limited to 'sway')
-rw-r--r--sway/commands/xwayland.c7
-rw-r--r--sway/config.c5
2 files changed, 11 insertions, 1 deletions
diff --git a/sway/commands/xwayland.c b/sway/commands/xwayland.c
index b72f3239..62293276 100644
--- a/sway/commands/xwayland.c
+++ b/sway/commands/xwayland.c
@@ -11,7 +11,12 @@ struct cmd_results *cmd_xwayland(int argc, char **argv) {
}
#ifdef HAVE_XWAYLAND
- config->xwayland = parse_boolean(argv[0], config->xwayland);
+ bool xwayland = parse_boolean(argv[0], true);
+ if (config->reloading && config->xwayland != xwayland) {
+ return cmd_results_new(CMD_FAILURE,
+ "xwayland can only be enabled/disabled at launch");
+ }
+ config->xwayland = xwayland;
#else
sway_log(SWAY_INFO, "Ignoring `xwayland` command, "
"sway hasn't been built with Xwayland support");
diff --git a/sway/config.c b/sway/config.c
index 4e64bd3a..70f2d706 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -441,6 +441,11 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
config->reloading = true;
config->active = true;
+ // xwayland can only be enabled/disabled at launch
+ sway_log(SWAY_DEBUG, "xwayland will remain %s",
+ old_config->xwayland ? "enabled" : "disabled");
+ config->xwayland = old_config->xwayland;
+
if (old_config->swaybg_client != NULL) {
wl_client_destroy(old_config->swaybg_client);
}