Bug#1010806: apt: Avoid color output on monochrome terminals
On Tue, May 10, 2022 at 04:54:21PM +0200, Adam Borowski wrote:
> On Tue, May 10, 2022 at 02:38:40PM +0200, Axel wrote:
> > The apt command shows colors on monochrome terminals (even on a dumb terminal),
> > please avoid this. Included is a patch which i believe will solve the problem
> > and only allows output on terminals which actually have 'color' in them; the
> > same logic as to when to color the default bash prompt.
> > I have not tested this patch.
>
> > --- private-output.cc.orig 2022-05-10 14:18:27.611767218 +0200
> > +++ private-output.cc 2022-05-10 14:20:17.511703336 +0200
> > @@ -86,7 +86,8 @@
> > SigWinch(0);
> > }
> >
> > - if(!isatty(1))
> > + char *term = getenv("TERM");
> > + if(!isatty(1) || strstr(term, "color") == NULL)
> > {
> > _config->Set("APT::Color", "false");
> > _config->Set("APT::Color::Highlight", "");
>
> You mean monochrome terminals such as "xterm", "rxvt", "linux", ...?
>
> I haven't seen an actual monochrome terminal since the first half of the
> 90's. But even those accepted color codes and gracefully ignored them.
> To find a terminal that speaks a different language you'd need to go
> another decade into the past.
>
> Thus, I guess that what you want is some global switch to disable color
> in programs. But there's no common characteristic of a terminal that'd
> allow autodetecting your wishes.
apt respects https://no-color.org/ NO_COLOR environment variable,
and I believe this is the way to go for this.
For completeness, my bashrc does the following, so it looks at
tput setaf 1 (change color to red to see if there's color available).
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
--
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer i speak de, en
Reply to: