aboutsummaryrefslogtreecommitdiff
path: root/rootston/config.c
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2017-11-17 23:29:47 +0100
committeremersion <contact@emersion.fr>2017-11-17 23:29:47 +0100
commit27937add762bb2594828ac678859bfdde4275f1e (patch)
treeaa9813fd534d019a5e967ffad31d153d30ae7fa1 /rootston/config.c
parent3e3209cba22c9a5a562acc5e543946408a36e2f4 (diff)
parentbf5640db128b930b38ebca2b1d8a79e028ad9f39 (diff)
Merge branch 'master' into laggy-move-resize
Diffstat (limited to 'rootston/config.c')
-rw-r--r--rootston/config.c79
1 files changed, 46 insertions, 33 deletions
diff --git a/rootston/config.c b/rootston/config.c
index dc7a4b1d..727b52d0 100644
--- a/rootston/config.c
+++ b/rootston/config.c
@@ -13,6 +13,7 @@
#include <wlr/types/wlr_box.h>
#include "rootston/config.h"
#include "rootston/input.h"
+#include "rootston/keyboard.h"
#include "rootston/ini.h"
static void usage(const char *name, int ret) {
@@ -114,7 +115,8 @@ static uint32_t parse_modifier(const char *symname) {
void add_binding_config(struct wl_list *bindings, const char* combination,
const char* command) {
- struct binding_config *bc = calloc(1, sizeof(struct binding_config));
+ struct roots_binding_config *bc =
+ calloc(1, sizeof(struct roots_binding_config));
xkb_keysym_t keysyms[ROOTS_KEYBOARD_PRESSED_KEYSYMS_CAP];
char *symnames = strdup(combination);
@@ -150,7 +152,7 @@ void add_binding_config(struct wl_list *bindings, const char* combination,
static void config_handle_keyboard(struct roots_config *config,
const char *device_name, const char *name, const char *value) {
- struct keyboard_config *kc;
+ struct roots_keyboard_config *kc;
bool found = false;
wl_list_for_each(kc, &config->keyboards, link) {
if (strcmp(kc->name, device_name) == 0) {
@@ -160,7 +162,7 @@ static void config_handle_keyboard(struct roots_config *config,
}
if (!found) {
- kc = calloc(1, sizeof(struct keyboard_config));
+ kc = calloc(1, sizeof(struct roots_keyboard_config));
kc->name = strdup(device_name);
wl_list_insert(&config->keyboards, &kc->link);
}
@@ -193,20 +195,20 @@ static int config_ini_handler(void *user, const char *section, const char *name,
const char *value) {
struct roots_config *config = user;
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);
- }
+ 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;
+ struct roots_output_config *oc;
bool found = false;
wl_list_for_each(oc, &config->outputs, link) {
@@ -217,9 +219,10 @@ static int config_ini_handler(void *user, const char *section, const char *name,
}
if (!found) {
- oc = calloc(1, sizeof(struct output_config));
+ oc = calloc(1, sizeof(struct roots_output_config));
oc->name = strdup(output_name);
oc->transform = WL_OUTPUT_TRANSFORM_NORMAL;
+ oc->scale = 1;
wl_list_insert(&config->outputs, &oc->link);
}
@@ -227,6 +230,9 @@ static int config_ini_handler(void *user, const char *section, const char *name,
oc->x = strtol(value, NULL, 10);
} else if (strcmp(name, "y") == 0) {
oc->y = strtol(value, NULL, 10);
+ } else if (strcmp(name, "scale") == 0) {
+ oc->scale = strtol(value, NULL, 10);
+ assert(oc->scale >= 1);
} else if (strcmp(name, "rotate") == 0) {
if (strcmp(value, "normal") == 0) {
oc->transform = WL_OUTPUT_TRANSFORM_NORMAL;
@@ -276,7 +282,7 @@ static int config_ini_handler(void *user, const char *section, const char *name,
} else if (strncmp(device_prefix, section, strlen(device_prefix)) == 0) {
const char *device_name = section + strlen(device_prefix);
- struct device_config *dc;
+ struct roots_device_config *dc;
bool found = false;
wl_list_for_each(dc, &config->devices, link) {
if (strcmp(dc->name, device_name) == 0) {
@@ -286,8 +292,9 @@ static int config_ini_handler(void *user, const char *section, const char *name,
}
if (!found) {
- dc = calloc(1, sizeof(struct device_config));
+ dc = calloc(1, sizeof(struct roots_device_config));
dc->name = strdup(device_name);
+ dc->seat = strdup("seat0");
wl_list_insert(&config->devices, &dc->link);
}
@@ -297,12 +304,16 @@ static int config_ini_handler(void *user, const char *section, const char *name,
} else if (strcmp(name, "geometry") == 0) {
free(dc->mapped_box);
dc->mapped_box = parse_geometry(value);
+ } else if (strcmp(name, "seat") == 0) {
+ free(dc->seat);
+ dc->seat = strdup(value);
} else {
wlr_log(L_ERROR, "got unknown device config: %s", name);
}
} else if (strcmp(section, "keyboard") == 0) {
config_handle_keyboard(config, "", name, value);
- } else if (strncmp(keyboard_prefix, section, strlen(keyboard_prefix)) == 0) {
+ } else if (strncmp(keyboard_prefix,
+ section, strlen(keyboard_prefix)) == 0) {
const char *device_name = section + strlen(keyboard_prefix);
config_handle_keyboard(config, device_name, name, value);
} else if (strcmp(section, "bindings") == 0) {
@@ -314,7 +325,7 @@ static int config_ini_handler(void *user, const char *section, const char *name,
return 1;
}
-struct roots_config *parse_args(int argc, char *argv[]) {
+struct roots_config *roots_config_create_from_args(int argc, char *argv[]) {
struct roots_config *config = calloc(1, sizeof(struct roots_config));
if (config == NULL) {
return NULL;
@@ -361,7 +372,8 @@ struct roots_config *parse_args(int argc, char *argv[]) {
add_binding_config(&config->bindings, "Logo+Shift+E", "exit");
add_binding_config(&config->bindings, "Ctrl+q", "close");
add_binding_config(&config->bindings, "Alt+Tab", "next_window");
- struct keyboard_config *kc = calloc(1, sizeof(struct keyboard_config));
+ struct roots_keyboard_config *kc =
+ calloc(1, sizeof(struct roots_keyboard_config));
kc->meta_key = WLR_MODIFIER_LOGO;
kc->name = strdup("");
wl_list_insert(&config->keyboards, &kc->link);
@@ -377,22 +389,23 @@ struct roots_config *parse_args(int argc, char *argv[]) {
}
void roots_config_destroy(struct roots_config *config) {
- struct output_config *oc, *otmp = NULL;
+ struct roots_output_config *oc, *otmp = NULL;
wl_list_for_each_safe(oc, otmp, &config->outputs, link) {
free(oc->name);
free(oc);
}
- struct device_config *dc, *dtmp = NULL;
+ struct roots_device_config *dc, *dtmp = NULL;
wl_list_for_each_safe(dc, dtmp, &config->devices, link) {
free(dc->name);
+ free(dc->seat);
free(dc->mapped_output);
free(dc->mapped_box);
free(dc);
}
- struct keyboard_config *kc, *ktmp = NULL;
- wl_list_for_each_safe(kc, ktmp, &config->bindings, link) {
+ struct roots_keyboard_config *kc, *ktmp = NULL;
+ wl_list_for_each_safe(kc, ktmp, &config->keyboards, link) {
free(kc->name);
free(kc->rules);
free(kc->model);
@@ -402,7 +415,7 @@ void roots_config_destroy(struct roots_config *config) {
free(kc);
}
- struct binding_config *bc, *btmp = NULL;
+ struct roots_binding_config *bc, *btmp = NULL;
wl_list_for_each_safe(bc, btmp, &config->bindings, link) {
free(bc->keysyms);
free(bc->command);
@@ -415,9 +428,9 @@ void roots_config_destroy(struct roots_config *config) {
free(config);
}
-struct output_config *config_get_output(struct roots_config *config,
+struct roots_output_config *roots_config_get_output(struct roots_config *config,
struct wlr_output *output) {
- struct output_config *o_config;
+ struct roots_output_config *o_config;
wl_list_for_each(o_config, &config->outputs, link) {
if (strcmp(o_config->name, output->name) == 0) {
return o_config;
@@ -427,9 +440,9 @@ struct output_config *config_get_output(struct roots_config *config,
return NULL;
}
-struct device_config *config_get_device(struct roots_config *config,
+struct roots_device_config *roots_config_get_device(struct roots_config *config,
struct wlr_input_device *device) {
- struct device_config *d_config;
+ struct roots_device_config *d_config;
wl_list_for_each(d_config, &config->devices, link) {
if (strcmp(d_config->name, device->name) == 0) {
return d_config;
@@ -439,9 +452,9 @@ struct device_config *config_get_device(struct roots_config *config,
return NULL;
}
-struct keyboard_config *config_get_keyboard(struct roots_config *config,
- struct wlr_input_device *device) {
- struct keyboard_config *kc;
+struct roots_keyboard_config *roots_config_get_keyboard(
+ struct roots_config *config, struct wlr_input_device *device) {
+ struct roots_keyboard_config *kc;
wl_list_for_each(kc, &config->keyboards, link) {
if ((device != NULL && strcmp(kc->name, device->name) == 0) ||
(device == NULL && strcmp(kc->name, "") == 0)) {