aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Ashworth <bosrsf04@gmail.com>2019-08-15 03:00:14 -0400
committerDrew DeVault <sir@cmpwn.com>2019-08-20 11:34:34 +0900
commitff7d979d99ddb087a02fc457953b33e3beb4715b (patch)
tree142e0f92672c9c73b7770dea3a846fef0e8d4011
parent384afc5cb5000374414eeaec8cbb667451fcce5b (diff)
cmd_xwayland: add force for immediate launch
This just adds a force option to cmd_xwayland that allows for xwayland to be immediately launched instead of lazily launched. This is useful for slower machines so it can be part of the startup time instead of when the user is actively trying to use it
-rw-r--r--include/sway/config.h8
-rw-r--r--sway/commands/xwayland.c10
-rw-r--r--sway/config.c2
-rw-r--r--sway/server.c8
-rw-r--r--sway/sway.5.scd7
5 files changed, 27 insertions, 8 deletions
diff --git a/include/sway/config.h b/include/sway/config.h
index c65d9353..ae6e6750 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -424,6 +424,12 @@ enum alignment {
ALIGN_RIGHT
};
+enum xwayland_mode {
+ XWAYLAND_MODE_DISABLED,
+ XWAYLAND_MODE_LAZY,
+ XWAYLAND_MODE_IMMEADIATE
+};
+
/**
* The configuration struct. The result of loading a config file.
*/
@@ -464,7 +470,7 @@ struct sway_config {
size_t urgent_timeout;
enum sway_fowa focus_on_window_activation;
enum sway_popup_during_fullscreen popup_during_fullscreen;
- bool xwayland;
+ enum xwayland_mode xwayland;
// swaybg
char *swaybg_command;
diff --git a/sway/commands/xwayland.c b/sway/commands/xwayland.c
index 62293276..38559f55 100644
--- a/sway/commands/xwayland.c
+++ b/sway/commands/xwayland.c
@@ -11,7 +11,15 @@ struct cmd_results *cmd_xwayland(int argc, char **argv) {
}
#ifdef HAVE_XWAYLAND
- bool xwayland = parse_boolean(argv[0], true);
+ enum xwayland_mode xwayland;
+ if (strcmp(argv[0], "force") == 0) {
+ xwayland = XWAYLAND_MODE_IMMEADIATE;
+ } else if (parse_boolean(argv[0], true)) {
+ xwayland = XWAYLAND_MODE_LAZY;
+ } else {
+ xwayland = XWAYLAND_MODE_DISABLED;
+ }
+
if (config->reloading && config->xwayland != xwayland) {
return cmd_results_new(CMD_FAILURE,
"xwayland can only be enabled/disabled at launch");
diff --git a/sway/config.c b/sway/config.c
index 74080898..c1b0efa0 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -248,7 +248,7 @@ static void config_defaults(struct sway_config *config) {
config->font_height = 17; // height of monospace 10
config->urgent_timeout = 500;
config->popup_during_fullscreen = POPUP_SMART;
- config->xwayland = true;
+ config->xwayland = XWAYLAND_MODE_LAZY;
config->titlebar_border_thickness = 1;
config->titlebar_h_padding = 5;
diff --git a/sway/server.c b/sway/server.c
index 6fe2a919..aee2cc87 100644
--- a/sway/server.c
+++ b/sway/server.c
@@ -167,10 +167,12 @@ void server_fini(struct sway_server *server) {
bool server_start(struct sway_server *server) {
#if HAVE_XWAYLAND
- if (config->xwayland) {
- sway_log(SWAY_DEBUG, "Initializing Xwayland");
+ if (config->xwayland != XWAYLAND_MODE_DISABLED) {
+ sway_log(SWAY_DEBUG, "Initializing Xwayland (lazy=%d)",
+ config->xwayland == XWAYLAND_MODE_LAZY);
server->xwayland.wlr_xwayland =
- wlr_xwayland_create(server->wl_display, server->compositor, true);
+ wlr_xwayland_create(server->wl_display, server->compositor,
+ config->xwayland == XWAYLAND_MODE_LAZY);
wl_signal_add(&server->xwayland.wlr_xwayland->events.new_surface,
&server->xwayland_surface);
server->xwayland_surface.notify = handle_xwayland_surface;
diff --git a/sway/sway.5.scd b/sway/sway.5.scd
index 8049836b..128663cd 100644
--- a/sway/sway.5.scd
+++ b/sway/sway.5.scd
@@ -85,9 +85,12 @@ The following commands may only be used in the configuration file.
It can be disabled by setting the command to a single dash:
_swaynag\_command -_
-*xwayland* enable|disable
+*xwayland* enable|disable|force
Enables or disables Xwayland support, which allows X11 applications to be
- used.
+ used. _enable_ will lazily load Xwayland so Xwayland will not be launched
+ until the first client attempts to connect. In some cases, such as slower
+ machines, it may be desirable to have Xwayland started immediately by
+ using _force_ instead of _enable_.
The following commands cannot be used directly in the configuration file.
They are expected to be used with *bindsym* or at runtime through *swaymsg*(1).