mirror of
https://git.sr.ht/~leon_plickat/wlopm
synced 2024-12-25 13:08:21 +01:00
Accept * as parameter to operate on all outputs
This commit is contained in:
parent
f968900de8
commit
fec8a5db3d
7
wlopm.1
7
wlopm.1
@ -41,6 +41,13 @@ Toggle the power mode of the output.
|
||||
.RE
|
||||
|
||||
|
||||
.SH OUTPUT NAMES
|
||||
Output names are compositor dependand.
|
||||
.P
|
||||
If instead of an output name * is given as parameter to an operation, wlopm will
|
||||
do that operation for all discovered outputs.
|
||||
|
||||
|
||||
.SH AUTHOR
|
||||
Leon Henrik Plickat
|
||||
|
||||
|
100
wlopm.c
100
wlopm.c
@ -173,11 +173,67 @@ static struct Output *output_from_name (const char *str)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void output_set_power_mode (struct Output *output, enum Power_mode mode)
|
||||
{
|
||||
enum zwlr_output_power_v1_mode new_mode;
|
||||
switch (mode)
|
||||
{
|
||||
case ON:
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_ON;
|
||||
break;
|
||||
|
||||
case OFF:
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_OFF;
|
||||
break;
|
||||
|
||||
case TOGGLE:
|
||||
if ( output->mode == ZWLR_OUTPUT_POWER_V1_MODE_ON )
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_OFF;
|
||||
else
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_ON;
|
||||
break;
|
||||
}
|
||||
zwlr_output_power_v1_set_mode(output->wlr_output_power, new_mode);
|
||||
}
|
||||
|
||||
static char *power_mode_to_string (enum zwlr_output_power_v1_mode mode)
|
||||
{
|
||||
return mode == ZWLR_OUTPUT_POWER_V1_MODE_ON ? "on" : "off";
|
||||
}
|
||||
|
||||
static void do_operation (struct Operation *operation)
|
||||
{
|
||||
if ( *operation->name == '*' )
|
||||
{
|
||||
struct Output *output;
|
||||
wl_list_for_each(output, &outputs, link)
|
||||
output_set_power_mode(output, operation->power_mode);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct Output *output = output_from_name(operation->name);
|
||||
if ( output == NULL )
|
||||
{
|
||||
if (json)
|
||||
{
|
||||
fprintf(stdout,
|
||||
"%s\n {\n"
|
||||
" \"output\": \"%s\",\n"
|
||||
" \"error\": \"output does not exist\"\n"
|
||||
" }",
|
||||
json_prev ? "," : "",
|
||||
operation->name);
|
||||
json_prev = true;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "ERROR: Output '%s' does not exist.\n",
|
||||
operation->name);
|
||||
return;
|
||||
}
|
||||
output_set_power_mode(output, operation->power_mode);
|
||||
}
|
||||
}
|
||||
|
||||
static void sync_handle_done (void *data, struct wl_callback *wl_callback, uint32_t other_data)
|
||||
{
|
||||
wl_callback_destroy(wl_callback);
|
||||
@ -264,49 +320,7 @@ static void sync_handle_done (void *data, struct wl_callback *wl_callback, uint3
|
||||
|
||||
struct Operation *operation;
|
||||
wl_list_for_each(operation, &operations, link)
|
||||
{
|
||||
const struct Output *output = output_from_name(operation->name);
|
||||
if ( output == NULL )
|
||||
{
|
||||
if (json)
|
||||
{
|
||||
fprintf(stdout,
|
||||
"%s\n {\n"
|
||||
" \"output\": \"%s\",\n"
|
||||
" \"error\": \"output does not exist\"\n"
|
||||
" }",
|
||||
json_prev ? "," : "",
|
||||
operation->name);
|
||||
json_prev = true;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "ERROR: Output '%s' does not exist.\n",
|
||||
operation->name);
|
||||
continue;
|
||||
}
|
||||
|
||||
enum zwlr_output_power_v1_mode new_mode;
|
||||
switch (operation->power_mode)
|
||||
{
|
||||
case ON:
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_ON;
|
||||
break;
|
||||
|
||||
case OFF:
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_OFF;
|
||||
break;
|
||||
|
||||
case TOGGLE:
|
||||
if ( output->mode == ZWLR_OUTPUT_POWER_V1_MODE_ON )
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_OFF;
|
||||
else
|
||||
new_mode = ZWLR_OUTPUT_POWER_V1_MODE_ON;
|
||||
break;
|
||||
}
|
||||
|
||||
zwlr_output_power_v1_set_mode(output->wlr_output_power, new_mode);
|
||||
}
|
||||
|
||||
do_operation(operation);
|
||||
|
||||
/* We need to sync yet another time because setting the
|
||||
* power mode might fail and we want to display those
|
||||
|
Loading…
Reference in New Issue
Block a user