From 445bc2a943d905a0e5b1dc607a6797919c8cf341 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 22 Jun 2022 22:06:21 +0200 Subject: [PATCH] Rename dpms output command to power The "dpms" command refers to VESA Display Power Management Signaling, a deprecated standard. It's superseded by VESA DPM. Instead of tying out command name to a particular standard, use the neutral term "power". --- include/sway/commands.h | 1 + sway/commands/output.c | 1 + sway/commands/output/dpms.c | 45 ++++-------------------------------- sway/commands/output/power.c | 43 ++++++++++++++++++++++++++++++++++ sway/meson.build | 1 + sway/sway-output.5.scd | 12 ++++++++-- 6 files changed, 60 insertions(+), 43 deletions(-) create mode 100644 sway/commands/output/power.c diff --git a/include/sway/commands.h b/include/sway/commands.h index 5f71a79d..013a7b82 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h @@ -287,6 +287,7 @@ sway_cmd output_cmd_max_render_time; sway_cmd output_cmd_mode; sway_cmd output_cmd_modeline; sway_cmd output_cmd_position; +sway_cmd output_cmd_power; sway_cmd output_cmd_render_bit_depth; sway_cmd output_cmd_scale; sway_cmd output_cmd_scale_filter; diff --git a/sway/commands/output.c b/sway/commands/output.c index 125df5a7..c102344d 100644 --- a/sway/commands/output.c +++ b/sway/commands/output.c @@ -18,6 +18,7 @@ static const struct cmd_handler output_handlers[] = { { "modeline", output_cmd_modeline }, { "pos", output_cmd_position }, { "position", output_cmd_position }, + { "power", output_cmd_power }, { "render_bit_depth", output_cmd_render_bit_depth }, { "res", output_cmd_mode }, { "resolution", output_cmd_mode }, diff --git a/sway/commands/output/dpms.c b/sway/commands/output/dpms.c index 638c0ade..c7adbd58 100644 --- a/sway/commands/output/dpms.c +++ b/sway/commands/output/dpms.c @@ -1,45 +1,8 @@ +#include "log.h" #include "sway/commands.h" -#include "sway/config.h" -#include "sway/output.h" -#include "util.h" -#include struct cmd_results *output_cmd_dpms(int argc, char **argv) { - if (!config->handler_context.output_config) { - return cmd_results_new(CMD_FAILURE, "Missing output config"); - } - if (!argc) { - return cmd_results_new(CMD_INVALID, "Missing dpms argument."); - } - - enum config_dpms current_dpms = DPMS_ON; - - if (strcasecmp(argv[0], "toggle") == 0) { - - const char *oc_name = config->handler_context.output_config->name; - 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 || !sway_output->wlr_output) { - return cmd_results_new(CMD_FAILURE, - "Cannot apply toggle to unknown output %s", oc_name); - } - - if (sway_output->enabled && !sway_output->wlr_output->enabled) { - current_dpms = DPMS_OFF; - } - } - - if (parse_boolean(argv[0], current_dpms == DPMS_ON)) { - config->handler_context.output_config->dpms_state = DPMS_ON; - } else { - config->handler_context.output_config->dpms_state = DPMS_OFF; - } - - config->handler_context.leftovers.argc = argc - 1; - config->handler_context.leftovers.argv = argv + 1; - return NULL; + sway_log(SWAY_INFO, "The \"output dpms\" command is deprecated, " + "use \"output power\" instead"); + return output_cmd_power(argc, argv); } diff --git a/sway/commands/output/power.c b/sway/commands/output/power.c new file mode 100644 index 00000000..c783e69b --- /dev/null +++ b/sway/commands/output/power.c @@ -0,0 +1,43 @@ +#include +#include "sway/commands.h" +#include "sway/config.h" +#include "sway/output.h" +#include "util.h" + +struct cmd_results *output_cmd_power(int argc, char **argv) { + if (!config->handler_context.output_config) { + return cmd_results_new(CMD_FAILURE, "Missing output config"); + } + if (argc == 0) { + return cmd_results_new(CMD_INVALID, "Missing power argument"); + } + + enum config_dpms current_dpms = DPMS_ON; + if (strcasecmp(argv[0], "toggle") == 0) { + const char *oc_name = config->handler_context.output_config->name; + 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 || !sway_output->wlr_output) { + return cmd_results_new(CMD_FAILURE, + "Cannot apply toggle to unknown output %s", oc_name); + } + + if (sway_output->enabled && !sway_output->wlr_output->enabled) { + current_dpms = DPMS_OFF; + } + } + + if (parse_boolean(argv[0], current_dpms == DPMS_ON)) { + config->handler_context.output_config->dpms_state = DPMS_ON; + } else { + config->handler_context.output_config->dpms_state = DPMS_OFF; + } + + config->handler_context.leftovers.argc = argc - 1; + config->handler_context.leftovers.argv = argv + 1; + return NULL; +} diff --git a/sway/meson.build b/sway/meson.build index 47c59dd5..ced7419c 100644 --- a/sway/meson.build +++ b/sway/meson.build @@ -191,6 +191,7 @@ sway_sources = files( 'commands/output/max_render_time.c', 'commands/output/mode.c', 'commands/output/position.c', + 'commands/output/power.c', 'commands/output/render_bit_depth.c', 'commands/output/scale.c', 'commands/output/scale_filter.c', diff --git a/sway/sway-output.5.scd b/sway/sway-output.5.scd index 4159a851..45429da2 100644 --- a/sway/sway-output.5.scd +++ b/sway/sway-output.5.scd @@ -119,12 +119,20 @@ must be separated by one space. For example: Enables or disables the specified output (all outputs are enabled by default). + As opposed to the _power_ command, the output will loose its current + workspace and windows. + *output* toggle Toggle the specified output. +*output* power on|off|toggle + Turns on or off the specified output. + + As opposed to the _enable_ and _disable_ commands, the output keeps its + current workspaces and windows. + *output* dpms on|off|toggle - Enables or disables the specified output via DPMS. To turn an output off - (ie. blank the screen but keep workspaces as-is), one can set DPMS to off. + Deprecated. Alias for _power_. *output* max_render_time off| Controls when sway composites the output, as a positive number of