Add cursor theme to rootston config

This commit is contained in:
emersion 2017-11-18 09:47:53 +01:00
parent bf5640db12
commit cd566ccd8e
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
5 changed files with 10 additions and 3 deletions

View File

@ -48,6 +48,7 @@ struct roots_config {
struct { struct {
char *mapped_output; char *mapped_output;
struct wlr_box *mapped_box; struct wlr_box *mapped_box;
char *theme;
} cursor; } cursor;
struct wl_list outputs; struct wl_list outputs;

View File

@ -276,6 +276,9 @@ static int config_ini_handler(void *user, const char *section, const char *name,
} else if (strcmp(name, "geometry") == 0) { } else if (strcmp(name, "geometry") == 0) {
free(config->cursor.mapped_box); free(config->cursor.mapped_box);
config->cursor.mapped_box = parse_geometry(value); config->cursor.mapped_box = parse_geometry(value);
} else if (strcmp(name, "theme") == 0) {
free(config->cursor.theme);
config->cursor.theme = strdup(value);
} else { } else {
wlr_log(L_ERROR, "got unknown cursor config: %s", name); wlr_log(L_ERROR, "got unknown cursor config: %s", name);
} }

View File

@ -338,10 +338,11 @@ struct roots_desktop *desktop_create(struct roots_server *server,
desktop->server = server; desktop->server = server;
desktop->config = config; desktop->config = config;
desktop->xcursor_manager = wlr_xcursor_manager_create(NULL, desktop->xcursor_manager = wlr_xcursor_manager_create(config->cursor.theme,
ROOTS_XCURSOR_SIZE); ROOTS_XCURSOR_SIZE);
if (desktop->xcursor_manager == NULL) { 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); wlr_list_free(desktop->views);
free(desktop); free(desktop);
return NULL; return NULL;

View File

@ -21,6 +21,8 @@ rotate = 90
map-to-output = VGA-1 map-to-output = VGA-1
# Restrict cursor movements to concrete rectangle # Restrict cursor movements to concrete rectangle
geometry = 2500x800 geometry = 2500x800
# Load a custom XCursor theme
theme = default
# Single device configuration. String after semicolon must match device's name. # Single device configuration. String after semicolon must match device's name.
[device:PixArt Dell MS116 USB Optical Mouse] [device:PixArt Dell MS116 USB Optical Mouse]

View File

@ -46,7 +46,7 @@ int wlr_xcursor_manager_load(struct wlr_xcursor_manager *manager,
return 1; return 1;
} }
theme->scale = scale; 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) { if (theme->theme == NULL) {
free(theme); free(theme);
return 1; return 1;