aboutsummaryrefslogtreecommitdiff
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
parentddad41f423db14f89f765fc134d45d1ea8a60caf (diff)
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.
-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);
}