implemented seat detach command

This commit is contained in:
madblobfish 2018-10-31 19:31:09 +01:00
parent f5190d1f79
commit afd66d63cc
7 changed files with 49 additions and 0 deletions

View file

@ -265,6 +265,7 @@ sway_cmd output_cmd_transform;
sway_cmd seat_cmd_attach; sway_cmd seat_cmd_attach;
sway_cmd seat_cmd_cursor; sway_cmd seat_cmd_cursor;
sway_cmd seat_cmd_detach;
sway_cmd seat_cmd_fallback; sway_cmd seat_cmd_fallback;
sway_cmd seat_cmd_hide_cursor; sway_cmd seat_cmd_hide_cursor;
sway_cmd seat_cmd_pointer_constraint; sway_cmd seat_cmd_pointer_constraint;

View file

@ -571,6 +571,9 @@ struct seat_attachment_config *seat_config_get_attachment(
struct seat_config *store_seat_config(struct seat_config *seat); struct seat_config *store_seat_config(struct seat_config *seat);
void seat_config_remove_attachment(
struct seat_config *seat_config, char *identifier);
int output_name_cmp(const void *item, const void *data); int output_name_cmp(const void *item, const void *data);
void output_get_identifier(char *identifier, size_t len, void output_get_identifier(char *identifier, size_t len,

View file

@ -10,6 +10,7 @@
static struct cmd_handler seat_handlers[] = { static struct cmd_handler seat_handlers[] = {
{ "attach", seat_cmd_attach }, { "attach", seat_cmd_attach },
{ "cursor", seat_cmd_cursor }, { "cursor", seat_cmd_cursor },
{ "detach", seat_cmd_detach },
{ "fallback", seat_cmd_fallback }, { "fallback", seat_cmd_fallback },
{ "hide_cursor", seat_cmd_hide_cursor }, { "hide_cursor", seat_cmd_hide_cursor },
{ "pointer_constraint", seat_cmd_pointer_constraint }, { "pointer_constraint", seat_cmd_pointer_constraint },

View file

@ -0,0 +1,27 @@
#define _XOPEN_SOURCE 700
#include <string.h>
#include "sway/commands.h"
#include "sway/config.h"
struct cmd_results *seat_cmd_detach(int argc, char **argv) {
struct cmd_results *error = NULL;
if ((error = checkarg(argc, "detach", EXPECTED_AT_LEAST, 1))) {
return error;
}
struct seat_config *current_seat_config = config->handler_context.seat_config;
if (!current_seat_config) {
return cmd_results_new(CMD_FAILURE, "detach", "No seat defined");
}
int i;
i = list_seq_find(config->seat_configs, seat_name_cmp, current_seat_config->name);
if (i >= 0) {
struct seat_config *sc = config->seat_configs->items[i];
seat_config_remove_attachment(sc, strdup(argv[0]));
}
if (!config->validating) {
input_manager_apply_seat_config(new_seat_config(current_seat_config->name));
}
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
}

View file

@ -191,3 +191,14 @@ struct seat_attachment_config *seat_config_get_attachment(
return NULL; return NULL;
} }
void seat_config_remove_attachment(struct seat_config *seat_config, char *identifier) {
for (int i = 0; i < seat_config->attachments->length; ++i) {
struct seat_attachment_config *attachment = seat_config->attachments->items[i];
if (strcmp(attachment->identifier, identifier) == 0) {
list_del(seat_config->attachments, i);
seat_attachment_config_free(attachment);
break;
}
}
}

View file

@ -82,6 +82,7 @@ sway_sources = files(
'commands/seat.c', 'commands/seat.c',
'commands/seat/attach.c', 'commands/seat/attach.c',
'commands/seat/cursor.c', 'commands/seat/cursor.c',
'commands/seat/detach.c',
'commands/seat/fallback.c', 'commands/seat/fallback.c',
'commands/seat/hide_cursor.c', 'commands/seat/hide_cursor.c',
'commands/seat/pointer_constraint.c', 'commands/seat/pointer_constraint.c',

View file

@ -150,6 +150,11 @@ sitting in their own "seat").
Attach an input device to this seat by its input identifier. A special Attach an input device to this seat by its input identifier. A special
value of "\*" will attach all devices to the seat. value of "\*" will attach all devices to the seat.
*seat* <name> detach <input\_identifier>
Detaches an input device from this seat by its input identifier.
Note: the fallback seat will catch input devices with no seat.
*seat* <seat> cursor move|set <x> <y> *seat* <seat> cursor move|set <x> <y>
Move specified seat's cursor relative to current position or wrap to Move specified seat's cursor relative to current position or wrap to
absolute coordinates (with respect to the global coordinate space). absolute coordinates (with respect to the global coordinate space).