add cursor configuration

master
Tony Crisci 7 years ago
parent b3a43e2261
commit 699d489f93

@ -67,6 +67,12 @@ static int config_ini_handler(void *user, const char *section, const char *name,
wlr_log(L_ERROR, "got unknown transform value: %s", value); wlr_log(L_ERROR, "got unknown transform value: %s", value);
} }
} }
} else if (strcmp(section, "cursor") == 0) {
if (strcmp(name, "map-to-output") == 0) {
config->cursor.mapped_output = strdup(value);
} else {
wlr_log(L_ERROR, "got unknown cursor config: %s", name);
}
} else { } else {
wlr_log(L_ERROR, "got unknown config section: %s", section); wlr_log(L_ERROR, "got unknown config section: %s", section);
} }
@ -128,6 +134,9 @@ void example_config_destroy(struct example_config *config) {
if (config->config_path) { if (config->config_path) {
free(config->config_path); free(config->config_path);
} }
if (config->cursor.mapped_output) {
free(config->cursor.mapped_output);
}
free(config); free(config);
} }

@ -13,6 +13,10 @@ struct output_config {
}; };
struct example_config { struct example_config {
struct {
char *mapped_output;
} cursor;
struct wl_list outputs; struct wl_list outputs;
char *config_path; char *config_path;
}; };

@ -70,6 +70,11 @@ static void handle_output_add(struct output_state *ostate) {
sample->layout = configure_layout(sample->config, &ostate->compositor->outputs); sample->layout = configure_layout(sample->config, &ostate->compositor->outputs);
wlr_cursor_attach_output_layout(sample->cursor, sample->layout); wlr_cursor_attach_output_layout(sample->cursor, sample->layout);
char *mapped_output = sample->config->cursor.mapped_output;
if (mapped_output && strcmp(mapped_output, wlr_output->name) == 0) {
wlr_cursor_map_to_output(sample->cursor, wlr_output);
}
/* /*
// TODO configuration // TODO configuration
if (strcmp("DP-1", ostate->output->name) == 0) { if (strcmp("DP-1", ostate->output->name) == 0) {
@ -95,6 +100,10 @@ static void handle_output_remove(struct output_state *ostate) {
wlr_output_layout_destroy(sample->layout); wlr_output_layout_destroy(sample->layout);
sample->layout = configure_layout(sample->config, &ostate->compositor->outputs); sample->layout = configure_layout(sample->config, &ostate->compositor->outputs);
wlr_cursor_attach_output_layout(sample->cursor, sample->layout); wlr_cursor_attach_output_layout(sample->cursor, sample->layout);
if (strcmp(sample->config->cursor.mapped_output, ostate->output->name) == 0) {
wlr_cursor_map_to_output(sample->cursor, NULL);
}
} }
static void handle_output_resolution(struct compositor_state *state, static void handle_output_resolution(struct compositor_state *state,

@ -30,4 +30,11 @@ rotate=270
x=1080 x=1080
y=232 y=232
# Cursor Configuration
# ~~~~~~~~~~~~~~~~~~~~
# Value "map-to-output" specifies the output to which the cursor is
# constrained.
[cursor]
map-to-output=HDMI-A-1
# vim:filetype=dosini # vim:filetype=dosini

Loading…
Cancel
Save