/usr/lib/urxvt/perl/example-refresh-hooks is in rxvt-unicode 9.22-1+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #! perl
=head1 NAME
example-refresh-hooks - example of how to use refresh hooks
=head1 DESCRIPTION
Displays a very simple digital clock in the upper right corner of the
window. Illustrates overwriting the refresh callbacks to create your own
overlays or changes.
=cut
sub on_init {
my ($self) = @_;
# force a refresh every second
$self->{digital_clock_refresh} = urxvt::timer
->new
->start (1 + int urxvt::NOW)
->interval (1)
->cb (sub { $self->want_refresh });
()
}
# before refreshing: replace upper right with the clock display
sub on_refresh_begin {
my ($self) = @_;
my $time = sprintf "%2d:%02d:%02d", (localtime urxvt::NOW)[2, 1, 0];
my $xpos = $self->ncol - length $time;
$xpos >= 0
or return;
$self->{digital_clock_rend} = $self->ROW_r (0, [(urxvt::DEFAULT_RSTYLE) x length $time], $xpos);
$self->{digital_clock_text} = $self->ROW_t (0, $time, $xpos);
()
}
# after refreshing: restore previous screen contents
sub on_refresh_end {
my ($self) = @_;
exists $self->{digital_clock_text}
or return;
$self->ROW_r (0, delete $self->{digital_clock_rend});
$self->ROW_t (0, delete $self->{digital_clock_text});
()
}
|