sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 5069b53d6c561d0f949cb0aec1d70397a2fb8a90
parent ddad41f423db14f89f765fc134d45d1ea8a60caf
Author: Brian Ashworth <bosrsf04@gmail.com>
Date:   Tue, 18 Jun 2019 22:27:57 -0400

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:
Msway/commands/xwayland.c | 7++++++-
Msway/config.c | 5+++++
2 files changed, 11 insertions(+), 1 deletion(-)

diff --git 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 @@ -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); }