swayfx/sway/commands/output/toggle.c
William McKinnon 82fe097b31
feat: sway 1.10 rebase (#367)
Co-authored-by: Erik Reider <35975961+ErikReider@users.noreply.github.com>
2025-02-16 15:33:52 -05:00

37 lines
978 B
C

#include "sway/commands.h"
#include "sway/config.h"
#include "sway/output.h"
struct cmd_results *output_cmd_toggle(int argc, char **argv) {
if (!config->handler_context.output_config) {
return cmd_results_new(CMD_FAILURE, "Missing output config");
}
struct output_config *oc = config->handler_context.output_config;
if (strcmp(oc->name, "*") == 0) {
return cmd_results_new(CMD_INVALID,
"Cannot apply toggle to all outputs.");
}
struct sway_output *sway_output = all_output_by_name_or_id(oc->name);
if (sway_output == NULL) {
return cmd_results_new(CMD_FAILURE,
"Cannot apply toggle to unknown output %s", oc->name);
}
oc = find_output_config(sway_output);
if (!oc || oc->enabled != 0) {
config->handler_context.output_config->enabled = 0;
} else {
config->handler_context.output_config->enabled = 1;
}
free_output_config(oc);
config->handler_context.leftovers.argc = argc;
config->handler_context.leftovers.argv = argv;
return NULL;
}