rainbow-dark: drop rainbow dashes, add rainbow-timestamp.pl
- rainbow-dark.theme: revert line_start back to the stock '-!-' pattern. - .irssi/scripts/autorun/rainbow-timestamp.pl: new autorun script that hooks 'print text', matches a leading HH:MM[:SS], and reruns it through rainbow.pl's make_colors (same palette [4,8,9,11,12,13], same 2-char stride, same phase-advance on each line). The result is that every successive timestamp is a 5-character rainbow gradient that also shifts starting colour line-to-line.
This commit is contained in:
@@ -62,11 +62,8 @@ abstracts = {
|
|||||||
## generic
|
## generic
|
||||||
##
|
##
|
||||||
|
|
||||||
# text to insert at the beginning of each non-message line — ROYGBIV dashes
|
# text to insert at the beginning of each non-message line (default)
|
||||||
# R = bright red, O = dark yellow/brown (closest ANSI orange),
|
line_start = "%B-%n!%B-%n ";
|
||||||
# Y = bright yellow, G = bright green, B = bright blue,
|
|
||||||
# I = dark blue (closest ANSI indigo), V = bright magenta (violet).
|
|
||||||
line_start = "%R-%y-%Y-%G-%B-%b-%M-%n ";
|
|
||||||
|
|
||||||
# timestamp styling, nothing by default
|
# timestamp styling, nothing by default
|
||||||
timestamp = "$*";
|
timestamp = "$*";
|
||||||
|
|||||||
67
.irssi/scripts/autorun/rainbow-timestamp.pl
Normal file
67
.irssi/scripts/autorun/rainbow-timestamp.pl
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
#
|
||||||
|
# rainbow-timestamp.pl — paint each printed line's leading timestamp with
|
||||||
|
# the rotating rainbow palette from rainbow.pl, so every successive line
|
||||||
|
# advances the colour phase. Each individual timestamp is itself a
|
||||||
|
# gradient across its own characters (HH:MM -> five different colours).
|
||||||
|
#
|
||||||
|
# Drops into ~/.irssi/scripts/autorun/; loads automatically on irssi start.
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use vars qw($VERSION %IRSSI);
|
||||||
|
use Irssi;
|
||||||
|
|
||||||
|
$VERSION = '0.1';
|
||||||
|
%IRSSI = (
|
||||||
|
authors => 'dissimulo',
|
||||||
|
contact => 'connect+gitea@dustin-williams.com',
|
||||||
|
name => 'rainbow-timestamp',
|
||||||
|
description => 'Rotating-rainbow timestamps (same palette/logic as rainbow.pl).',
|
||||||
|
license => 'GNU GPLv2 or later',
|
||||||
|
);
|
||||||
|
|
||||||
|
# mIRC colour palette — identical to rainbow.pl:
|
||||||
|
# 4 = light red, 8 = yellow, 9 = light green,
|
||||||
|
# 11 = light cyan, 12 = light blue, 13 = light magenta
|
||||||
|
my @colors = ('4', '8', '9', '11', '12', '13');
|
||||||
|
my $last_color = 0;
|
||||||
|
my $colorrep = 2; # how many chars share each colour before advancing
|
||||||
|
|
||||||
|
sub make_colors {
|
||||||
|
my ($string) = @_;
|
||||||
|
my $out = '';
|
||||||
|
my $last = $last_color;
|
||||||
|
for (my $c = 0; $c < length($string); $c++) {
|
||||||
|
my $char = substr($string, $c, 1);
|
||||||
|
$last++;
|
||||||
|
my $color = int($last / $colorrep) % scalar(@colors);
|
||||||
|
$out .= "\003" . sprintf('%02d', $colors[$color]);
|
||||||
|
$out .= ($char eq ',') ? "\," : $char;
|
||||||
|
}
|
||||||
|
$last_color += 2; # advance phase so the next call starts shifted
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hook 'print text' — fires once per window line, with the fully-rendered
|
||||||
|
# text (including the leading timestamp if info_eol is off, which is the
|
||||||
|
# default). We match a leading HH:MM or HH:MM:SS, recolour it, and pass
|
||||||
|
# the line back through signal_continue with the rest of the text intact.
|
||||||
|
Irssi::signal_add('print text', sub {
|
||||||
|
my ($dest, $text, $stripped) = @_;
|
||||||
|
return unless defined $text;
|
||||||
|
|
||||||
|
# Strip any existing colour codes from just the prefix to find the
|
||||||
|
# raw timestamp (irssi's theme abstract may have wrapped it).
|
||||||
|
# Match (optional colour prefix) + HH:MM[:SS] + (optional colour suffix) + space
|
||||||
|
if ($text =~ /^((?:\003\d{1,2}(?:,\d{1,2})?)*)(\d{2}:\d{2}(?::\d{2})?)((?:\017|\003)?)(\s)/) {
|
||||||
|
my $pre = $1; # existing colour codes before the timestamp
|
||||||
|
my $ts = $2; # the timestamp itself
|
||||||
|
my $post = $3; # colour reset (if any)
|
||||||
|
my $sep = $4; # whitespace between ts and rest
|
||||||
|
my $rest = substr($text, length($pre) + length($ts) + length($post) + length($sep));
|
||||||
|
|
||||||
|
my $coloured = make_colors($ts) . "\017"; # \017 = reset colour
|
||||||
|
Irssi::signal_continue($dest, $coloured . $sep . $rest, $stripped);
|
||||||
|
}
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user