aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/rootston/config.h1
-rw-r--r--rootston/config.c16
-rw-r--r--rootston/desktop.c12
-rw-r--r--rootston/rootston.ini.example4
4 files changed, 27 insertions, 6 deletions
diff --git a/include/rootston/config.h b/include/rootston/config.h
index 545b6742..66347c3c 100644
--- a/include/rootston/config.h
+++ b/include/rootston/config.h
@@ -27,6 +27,7 @@ struct binding_config {
};
struct roots_config {
+ bool xwayland;
// TODO: Multiple cursors, multiseat
struct {
char *mapped_output;
diff --git a/rootston/config.c b/rootston/config.c
index d454c2d9..4918c8dd 100644
--- a/rootston/config.c
+++ b/rootston/config.c
@@ -5,6 +5,7 @@
#include <limits.h>
#include <getopt.h>
#include <string.h>
+#include <strings.h>
#include <unistd.h>
#include <sys/param.h>
#include <wlr/util/log.h>
@@ -114,7 +115,19 @@ static const char *device_prefix = "device:";
static int config_ini_handler(void *user, const char *section, const char *name,
const char *value) {
struct roots_config *config = user;
- if (strncmp(output_prefix, section, strlen(output_prefix)) == 0) {
+ if (strcmp(section, "core") == 0) {
+ if (strcmp(name, "xwayland") == 0) {
+ if (strcasecmp(value, "true") == 0) {
+ config->xwayland = true;
+ } else if (strcasecmp(value, "false") == 0) {
+ config->xwayland = false;
+ } else {
+ wlr_log(L_ERROR, "got unknown xwayland value: %s", value);
+ }
+ } else {
+ wlr_log(L_ERROR, "got unknown core config: %s", name);
+ }
+ } else if (strncmp(output_prefix, section, strlen(output_prefix)) == 0) {
const char *output_name = section + strlen(output_prefix);
struct output_config *oc;
bool found = false;
@@ -251,6 +264,7 @@ static int config_ini_handler(void *user, const char *section, const char *name,
struct roots_config *parse_args(int argc, char *argv[]) {
struct roots_config *config = calloc(1, sizeof(struct roots_config));
+ config->xwayland = true;
wl_list_init(&config->outputs);
wl_list_init(&config->devices);
wl_list_init(&config->bindings);
diff --git a/rootston/desktop.c b/rootston/desktop.c
index f99afaf5..5e85fb32 100644
--- a/rootston/desktop.c
+++ b/rootston/desktop.c
@@ -159,11 +159,13 @@ struct roots_desktop *desktop_create(struct roots_server *server,
&desktop->wl_shell_surface);
desktop->wl_shell_surface.notify = handle_wl_shell_surface;
- desktop->xwayland = wlr_xwayland_create(server->wl_display,
- desktop->compositor);
- wl_signal_add(&desktop->xwayland->events.new_surface,
- &desktop->xwayland_surface);
- desktop->xwayland_surface.notify = handle_xwayland_surface;
+ if (config->xwayland) {
+ desktop->xwayland = wlr_xwayland_create(server->wl_display,
+ desktop->compositor);
+ wl_signal_add(&desktop->xwayland->events.new_surface,
+ &desktop->xwayland_surface);
+ desktop->xwayland_surface.notify = handle_xwayland_surface;
+ }
desktop->gamma_control_manager = wlr_gamma_control_manager_create(
server->wl_display);
diff --git a/rootston/rootston.ini.example b/rootston/rootston.ini.example
index 9960cae1..cc7d8baa 100644
--- a/rootston/rootston.ini.example
+++ b/rootston/rootston.ini.example
@@ -1,3 +1,7 @@
+[core]
+# Disable X11 support. Enabled by default.
+xwayland=false
+
# Single output configuration. String after semicolon must match output's name.
[output:VGA-1]
# Set logical (layout) coordinates for this screen