Module Name: src Committed By: nia Date: Thu Jun 29 19:06:54 UTC 2023
Modified Files: src/usr.bin/aiomixer: aiomixer.1 app.h draw.c main.c Log Message: aiomixer(1): Support the informal NO_COLOR standard. When the NO_COLOR environment variable is set, no ANSI colours will be displayed. https://no-color.org/ To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/usr.bin/aiomixer/aiomixer.1 \ src/usr.bin/aiomixer/app.h cvs rdiff -u -r1.9 -r1.10 src/usr.bin/aiomixer/draw.c cvs rdiff -u -r1.4 -r1.5 src/usr.bin/aiomixer/main.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/aiomixer/aiomixer.1 diff -u src/usr.bin/aiomixer/aiomixer.1:1.1 src/usr.bin/aiomixer/aiomixer.1:1.2 --- src/usr.bin/aiomixer/aiomixer.1:1.1 Fri May 7 16:29:24 2021 +++ src/usr.bin/aiomixer/aiomixer.1 Thu Jun 29 19:06:54 2023 @@ -1,4 +1,4 @@ -.\" $NetBSD: aiomixer.1,v 1.1 2021/05/07 16:29:24 nia Exp $ +.\" $NetBSD: aiomixer.1,v 1.2 2023/06/29 19:06:54 nia Exp $ .\" .\" Copyright (c) 2021 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -27,7 +27,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd April 4, 2019 +.Dd July 29, 2023 .Dt AIOMIXER 1 .Os .Sh NAME @@ -67,6 +67,11 @@ Used to specify an alternative mixer dev .It Fl u Used to unlock channels on start up. .El +.Pp +.Nm +honours the informal standard +.Dv NO_COLOR . +When it is set in the environment, no colour will be used. .Sh FILES .Bl -tag -width /dev/mixer[0-3] -compact .It Pa /dev/mixer @@ -81,7 +86,7 @@ The first version (only available in pkg properly, among other bugs. .Sh AUTHORS .Nm -was written by +was written by .An Nia Alarie .Aq n...@netbsd.org . .Sh BUGS Index: src/usr.bin/aiomixer/app.h diff -u src/usr.bin/aiomixer/app.h:1.1 src/usr.bin/aiomixer/app.h:1.2 --- src/usr.bin/aiomixer/app.h:1.1 Fri May 7 16:29:24 2021 +++ src/usr.bin/aiomixer/app.h Thu Jun 29 19:06:54 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: app.h,v 1.1 2021/05/07 16:29:24 nia Exp $ */ +/* $NetBSD: app.h,v 1.2 2023/06/29 19:06:54 nia Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. * All rights reserved. @@ -70,6 +70,7 @@ struct aiomixer { bool widgets_resized; WINDOW *header; WINDOW *classbar; + bool use_colour; }; #define COLOR_CONTROL_SELECTED 1 Index: src/usr.bin/aiomixer/draw.c diff -u src/usr.bin/aiomixer/draw.c:1.9 src/usr.bin/aiomixer/draw.c:1.10 --- src/usr.bin/aiomixer/draw.c:1.9 Thu Jul 15 07:03:14 2021 +++ src/usr.bin/aiomixer/draw.c Thu Jun 29 19:06:54 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: draw.c,v 1.9 2021/07/15 07:03:14 nia Exp $ */ +/* $NetBSD: draw.c,v 1.10 2023/06/29 19:06:54 nia Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. * All rights reserved. @@ -37,10 +37,10 @@ #include "draw.h" static int get_enum_color(const char *); -static void draw_enum(struct aiomixer_control *, int, bool); -static void draw_set(struct aiomixer_control *, int); +static void draw_enum(struct aiomixer_control *, int, bool, bool); +static void draw_set(struct aiomixer_control *, int, bool); static void draw_levels(struct aiomixer_control *, - const struct mixer_level *, bool, bool); + const struct mixer_level *, bool, bool, bool); void draw_mixer_select(unsigned int num_mixers, unsigned int selected_mixer) @@ -103,14 +103,14 @@ draw_control(struct aiomixer *aio, switch (value.type) { case AUDIO_MIXER_ENUM: - draw_enum(control, value.un.ord, selected); + draw_enum(control, value.un.ord, selected, aio->use_colour); break; case AUDIO_MIXER_SET: - draw_set(control, value.un.mask); + draw_set(control, value.un.mask, aio->use_colour); break; case AUDIO_MIXER_VALUE: draw_levels(control, &value.un.value, - aio->channels_unlocked, selected); + aio->channels_unlocked, selected, aio->use_colour); break; } @@ -159,7 +159,8 @@ get_enum_color(const char *name) } static void -draw_enum(struct aiomixer_control *control, int ord, bool selected) +draw_enum(struct aiomixer_control *control, int ord, + bool selected, bool colour) { struct audio_mixer_enum *e; int color = COLOR_ENUM_MISC; @@ -175,7 +176,7 @@ draw_enum(struct aiomixer_control *contr } waddch(control->widgetpad, '['); if (ord == e->member[i].ord) { - if (has_colors()) { + if (colour) { color = get_enum_color(e->member[i].label.name); wattron(control->widgetpad, COLOR_PAIR(color)); @@ -185,7 +186,7 @@ draw_enum(struct aiomixer_control *contr } wprintw(control->widgetpad, "%s", e->member[i].label.name); if (ord == control->info.un.e.member[i].ord) { - if (has_colors()) { + if (colour) { wattroff(control->widgetpad, COLOR_PAIR(color)); } @@ -204,19 +205,19 @@ draw_enum(struct aiomixer_control *contr } static void -draw_set(struct aiomixer_control *control, int mask) +draw_set(struct aiomixer_control *control, int mask, bool colour) { int i; for (i = 0; i < control->info.un.s.num_mem; ++i) { waddch(control->widgetpad, '['); if (mask & control->info.un.s.member[i].mask) { - if (has_colors()) { + if (colour) { wattron(control->widgetpad, COLOR_PAIR(COLOR_SET_SELECTED)); } waddch(control->widgetpad, '*'); - if (has_colors()) { + if (colour) { wattroff(control->widgetpad, COLOR_PAIR(COLOR_SET_SELECTED)); } @@ -245,7 +246,8 @@ draw_set(struct aiomixer_control *contro static void draw_levels(struct aiomixer_control *control, - const struct mixer_level *levels, bool channels_unlocked, bool selected) + const struct mixer_level *levels, bool channels_unlocked, + bool selected, bool colour) { int i; int j, nchars; @@ -260,7 +262,7 @@ draw_levels(struct aiomixer_control *con } wprintw(control->widgetpad, "[%3u/%3u ", levels->level[i], AUDIO_MAX_GAIN); - if (has_colors()) { + if (colour) { wattron(control->widgetpad, COLOR_PAIR(COLOR_LEVELS)); } @@ -268,7 +270,7 @@ draw_levels(struct aiomixer_control *con (getmaxx(control->widgetpad) - 11)) / AUDIO_MAX_GAIN; for (j = 0; j < nchars; ++j) waddch(control->widgetpad, '*'); - if (has_colors()) { + if (colour) { wattroff(control->widgetpad, COLOR_PAIR(COLOR_LEVELS)); } Index: src/usr.bin/aiomixer/main.c diff -u src/usr.bin/aiomixer/main.c:1.4 src/usr.bin/aiomixer/main.c:1.5 --- src/usr.bin/aiomixer/main.c:1.4 Sun Jul 18 11:45:31 2021 +++ src/usr.bin/aiomixer/main.c Thu Jun 29 19:06:54 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.4 2021/07/18 11:45:31 nia Exp $ */ +/* $NetBSD: main.c,v 1.5 2023/06/29 19:06:54 nia Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. * All rights reserved. @@ -501,6 +501,7 @@ main(int argc, char **argv) unsigned int mixer_count = 0; int i, fd; int ch; + char *no_color = getenv("NO_COLOR"); if ((aio = malloc(sizeof(struct aiomixer))) == NULL) { err(EXIT_FAILURE, "malloc failed"); @@ -535,7 +536,15 @@ main(int argc, char **argv) cbreak(); noecho(); - if (has_colors()) { + aio->use_colour = true; + + if (!has_colors()) + aio->use_colour = false; + + if (no_color != NULL && no_color[0] != '\0') + aio->use_colour = false; + + if (aio->use_colour) { start_color(); use_default_colors(); init_pair(COLOR_CONTROL_SELECTED, COLOR_BLUE, COLOR_BLACK);