Add functionality for turning outputs off

This commit is contained in:
project-repo 2023-04-25 19:25:05 +02:00
commit c3e8ffe22f
3 changed files with 18 additions and 2 deletions

View file

@ -258,6 +258,12 @@ output_apply_config(struct cg_server *server, struct cg_output *output,
struct cg_output_config *config) {
struct wlr_output *wlr_output = output->wlr_output;
if(config->status == OUTPUT_OFF) {
wlr_output_enable(wlr_output, false);
wlr_output_commit(wlr_output);
return;
}
if(output->wlr_output->enabled) {
wlr_output_layout_remove(server->output_layout, wlr_output);
}

View file

@ -36,7 +36,12 @@ struct cg_output_priorities {
struct wl_list link;
};
enum output_status { OUTPUT_ENABLE, OUTPUT_DISABLE, OUTPUT_DEFAULT };
enum output_status {
OUTPUT_ENABLE,
OUTPUT_DISABLE,
OUTPUT_DEFAULT,
OUTPUT_OFF
};
struct cg_output_config {
enum output_status status;

View file

@ -545,6 +545,10 @@ parse_output_config_keyword(char *key_str, enum output_status *status) {
*status = OUTPUT_ENABLE;
} else if(strcmp(key_str, "disable") == 0) {
*status = OUTPUT_DISABLE;
} else if(strcmp(key_str, "off") == 0) {
*status = OUTPUT_OFF;
} else if(strcmp(key_str, "on") == 0) {
*status = OUTPUT_ENABLE;
} else {
return -1;
}
@ -579,7 +583,8 @@ parse_output_config(char **saveptr, char **errstr) {
name);
goto error;
}
if(cfg->status == OUTPUT_ENABLE || cfg->status == OUTPUT_DISABLE) {
if(cfg->status == OUTPUT_ENABLE || cfg->status == OUTPUT_DISABLE ||
cfg->status == OUTPUT_OFF) {
cfg->output_name = strdup(name);
return cfg;
}