|
|
- #!/usr/bin/perl
-
- use strict;
-
- # taken from: http://www.steike.com/code/xterm-colors/
-
- # The command line arguments are:
-
- # xtfix 004000 set bgcol to greenish
- # xtfix 000000 555555 set bgcol to a random color between the two given values
- # xtfix -r reset the terminal (useful after 'cat /bin/sh' :-)
- # xtfix -f4 choose font size (3-6 are ok)
-
- # Default args (subtle random shade, reset, font 4):
-
- my $args = "@ARGV" || "080808 202020 -r -f4";
-
- # Basic color map, feel free to edit:
-
- my @cols = qw(000000 cc6666
- 33cc66 cc9933
- 3366cc cc33cc
- 33cccc cccccc
- 666666 ff6666
- 66ff66 ffff66
- 6699ff ff66ff
- 33ffff ffffff);
-
-
- # Full reset
-
- print "\033c" if $args =~ s/-r//;
-
- # Select font
-
- print "\033]50;#$1\007" if $args =~ s/-f(\d)//;
-
- # Parse the 'black' value
-
- my @ofs = map hex, $args =~ /([0-9a-f]{2})/gi;
- if(@ofs>3) {
- $ofs[$_] = $ofs[$_] + rand($ofs[$_+3]-$ofs[$_])
- for 0..2;
- }
-
- for my $i(0..15) {
- my $c = $cols[$i];
- my $Z;
- $c =~ s{..}{
- my $a = hex $&;
- my $b = $ofs[$Z++];
- sprintf("%02x", $a + $b - ($a*$b)/255);
- }ge;
- printf "\033[%d;3%dm(%d)", $i/8, $i&7, $i if $args =~ /show/;
- print "\033]4;$i;#$c\007";
- print "\033]11;#$c\007" if !$i; # 0 is also 'background color'
- print "\033]10;#$c\007" if $i==7; # 7 is also 'plain foreground color'
- }
|