On 11/3/24 22:04, Bruce Gray wrote:


On Nov 3, 2024, at 22:12, ToddAndMargo via perl6-users <perl6-us...@perl.org> 
wrote:

Hi All,

Fedora 41
rakudo-pkg-2024.7.0-01.x86_64
bash-5.2.32-1.fc41.x86_64

I am looking at
   https://metacpan.org/pod/Term::ANSIColor

trying to figure out how to print in dark purple.
I have see dnf5 do this, so I know it is possible.

Now one of the hurdles is that purple is not an
actual color.  It does not appear on a white
light spectrum break out.  Purple is a manifestation
of our brains interpreting a mixture of red and blue.

So how do I mix red and blue to get dark purple?

Many thanks,
-T


Magenta is one of the standard ANSI terminal colors, so that is probably the color you 
are seeing in the `dnf` output as "purple".

Simplest example, using module:
raku -e 'use Terminal::ANSIColor; say color("magenta"), "this is in purple(magenta)", 
color("reset");'

Just the four purples, in raw ANSI codes:
raku -e 'say "\e\[{.[0]};{.[1]}m {.[0]};{.[1]} \e\[m " for (0,1) X (35,95);'

Full color grid:
raku -e '
my @fg = (31..37) X+ (0,60);
my @bg = (41..47) X+ (0,60);
say "    ", @bg.fmt("--%3d--", " ");
for @fg -> $f {
   print $f.fmt("%3d:");
   for @bg -> $b {
     for 0,1 -> $a {
       my $z = "$a;$f;$b";
       print "\e\[{$z}m $a \e\[m ";
     }
   }
   say "";
}'

For more info:
     https://azrael.digipen.edu/~mmead/www/mg/ansicolors/index.html


Hi Bruce,

Are the numbers in the "ANSI Escape Sequences (Details) " of the link,
hexidecimal by chance? "9" an "8" are not octal.

      Attributes         Foreground          Background
                         color               color
      00 = normal        31 = red            40 = black
      01 = bold          32 = green          41 = red
      04 = underlined    33 = orange         42 = green
      05 = blinking      34 = blue           43 = orange
      07 = reversed      35 = purple         44 = blue
      08 = concealed     36 = cyan           45 = purple
                         37 = grey           46 = cyan
                         90 = dark grey      47 = grey
                         91 = light red      100 = dark grey
                         92 = light green    101 = light red
                         93 = yellow         102 = light green
                         94 = light blue     103 = yellow
                         95 = light purple   104 = light blue
                         96 = turquoise      105 = light purple
                                             106 = turquoise

This is what I was after:

> print color('bold'), color('52'), "abc", color('reset'), "\n";
abc  <shows dark purple>

Questions:

1) why is "color('bold')" = bold, and
          "color('01')    = normal?

2) why is "color('52')" (34 hex) dark purple and not blue?


Yours in confusion,
-T


Reply via email to