From cd566ccd8e1c41af6b1d5f03fabdbdeaca2625ab Mon Sep 17 00:00:00 2001 From: emersion Date: Sat, 18 Nov 2017 09:47:53 +0100 Subject: [PATCH] Add cursor theme to rootston config --- include/rootston/config.h | 1 + rootston/config.c | 3 +++ rootston/desktop.c | 5 +++-- rootston/rootston.ini.example | 2 ++ types/wlr_xcursor_manager.c | 2 +- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/rootston/config.h b/include/rootston/config.h index 71ee61c7..1fb2911d 100644 --- a/include/rootston/config.h +++ b/include/rootston/config.h @@ -48,6 +48,7 @@ struct roots_config { struct { char *mapped_output; struct wlr_box *mapped_box; + char *theme; } cursor; struct wl_list outputs; diff --git a/rootston/config.c b/rootston/config.c index 727b52d0..638d6e73 100644 --- a/rootston/config.c +++ b/rootston/config.c @@ -276,6 +276,9 @@ static int config_ini_handler(void *user, const char *section, const char *name, } else if (strcmp(name, "geometry") == 0) { free(config->cursor.mapped_box); config->cursor.mapped_box = parse_geometry(value); + } else if (strcmp(name, "theme") == 0) { + free(config->cursor.theme); + config->cursor.theme = strdup(value); } else { wlr_log(L_ERROR, "got unknown cursor config: %s", name); } diff --git a/rootston/desktop.c b/rootston/desktop.c index 1695d007..a2af5e95 100644 --- a/rootston/desktop.c +++ b/rootston/desktop.c @@ -338,10 +338,11 @@ struct roots_desktop *desktop_create(struct roots_server *server, desktop->server = server; desktop->config = config; - desktop->xcursor_manager = wlr_xcursor_manager_create(NULL, + desktop->xcursor_manager = wlr_xcursor_manager_create(config->cursor.theme, ROOTS_XCURSOR_SIZE); if (desktop->xcursor_manager == NULL) { - wlr_log(L_ERROR, "Cannot create XCursor manager"); + wlr_log(L_ERROR, "Cannot create XCursor manager for theme %s", + config->cursor.theme); wlr_list_free(desktop->views); free(desktop); return NULL; diff --git a/rootston/rootston.ini.example b/rootston/rootston.ini.example index c33b0f04..17467100 100644 --- a/rootston/rootston.ini.example +++ b/rootston/rootston.ini.example @@ -21,6 +21,8 @@ rotate = 90 map-to-output = VGA-1 # Restrict cursor movements to concrete rectangle geometry = 2500x800 +# Load a custom XCursor theme +theme = default # Single device configuration. String after semicolon must match device's name. [device:PixArt Dell MS116 USB Optical Mouse] diff --git a/types/wlr_xcursor_manager.c b/types/wlr_xcursor_manager.c index 6c12d04b..f32a96bc 100644 --- a/types/wlr_xcursor_manager.c +++ b/types/wlr_xcursor_manager.c @@ -46,7 +46,7 @@ int wlr_xcursor_manager_load(struct wlr_xcursor_manager *manager, return 1; } theme->scale = scale; - theme->theme = wlr_xcursor_theme_load(NULL, manager->size * scale); + theme->theme = wlr_xcursor_theme_load(manager->name, manager->size * scale); if (theme->theme == NULL) { free(theme); return 1;