#!/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'
|
|
}
|