- moved Shift-Button2 paste combination to Meta-Button2.
- the cutchars resource will now be respected and used by the
selection extension.
- - added the "remote-selection" extension which just runs external
+ - added the "remote-clipboard" extension which just runs external
commands to fetch and store the selection data.
- removed (unused) arabic presentation form composing sequences.
- be more strict when deciding that a core font glyph is too wide and
- redraw even more characters around characters usign careful mode.
- reduced number of server turnarounds at startup by allocating
atoms only once per display.
+ - renamed on_keyboard_command to on_user_command.
- changed version sos (ESC [ > c) response to be more compatible with
xterm.
src/perl/tabbed
src/perl/xim-onthespot
src/perl/readline
-src/perl/remote-selection
+src/perl/remote-clipboard
src/perl/example-refresh-hooks
src/perl/block-graphics-to-ascii
src/perl/digital-clock
def (REFRESH_BEGIN)
def (REFRESH_END)
- def (KEYBOARD_COMMAND)
+ def (USER_COMMAND)
def (X_EVENT)
def (FOCUS_IN)
if (strncmp (str, "command:", 8) == 0)
rt->cmd_write (str + 8, strlen (str) - 8);
else if (strncmp (str, "perl:", 5) == 0)
- HOOK_INVOKE((rt, HOOK_KEYBOARD_COMMAND, DT_STR, str + 5, DT_END));
+ HOOK_INVOKE((rt, HOOK_USER_COMMAND, DT_STR, str + 5, DT_END));
else
rt->tt_write (str, strlen (str));
}
$self->selection_clear;
$self->selection ($txt);
$self->selection_grab (urxvt::CurrentTime);
- close $fh;
- my $status = $? >> 8;
- $self->msg ("selection fetched (status $status)");
+ $self->msg ("selection fetched");
}
});
}
()
}
-sub on_keyboard_command {
+sub on_user_command {
my ($self, $cmd) = @_;
if ($cmd eq "selection-pastebin:remote-pastebin") {
+++ /dev/null
-#! perl
-
-use Fcntl ();
-
-sub msg {
- my ($self, $msg) = @_;
-
- my $ov = $self->overlay (-1, 0, $self->strwidth ($msg), 1, urxvt::OVERLAY_RSTYLE, 0);
- $ov->set (0, 0, $msg);
-
- $self->{msg} =
- urxvt::timer
- ->new
- ->after (5)
- ->cb (sub { delete $self->{msg}; undef $ov; });
-}
-
-sub wait_pipe {
- my ($self, $fh, $pid, $msg) = @_;
-
- $self->msg ("waiting for selection process to finish...");
-
- my $wait_pipe; $wait_pipe = urxvt::pw->new->start ($pid)->cb (sub {
- my ($undef, $status) = @_;
- undef $wait_pipe;
- close $fh;
- $status >>= 8;
- $self->msg ("$msg (status $status)");
- });
-}
-
-sub store {
- my ($self) = @_;
-
- my $txt = $self->selection;
-
- local %ENV = %{ $self->env };
- if (my $pid = open my $fh, "|-:utf8", $self->{store_cmd}) {
- fcntl $fh, &Fcntl::F_SETFL, &Fcntl::O_NONBLOCK;
- $self->{iow} = urxvt::iow
- ->new
- ->fd (fileno $fh)
- ->events (urxvt::EVENT_WRITE)
- ->start
- ->cb (sub {
- if (my $len = syswrite $fh, $txt) {
- substr $txt, 0, $len, "";
- $self->msg ((length $txt) . " chars to go...");
- } else {
- delete $self->{iow};
- $self->wait_pipe ($fh, $pid, "selection stored");
- }
- });
- }
-}
-
-sub fetch {
- my ($self) = @_;
-
- my $txt;
-
- local %ENV = %{ $self->env };
- if (my $pid = open my $fh, "-|:utf8", $self->{fetch_cmd}) {
- fcntl $fh, &Fcntl::F_SETFL, &Fcntl::O_NONBLOCK;
- $self->{iow} = urxvt::iow
- ->new
- ->fd (fileno $fh)
- ->events (urxvt::EVENT_READ)
- ->start
- ->cb (sub {
- if (my $len = sysread $fh, $txt, 8192, length $txt) {
- $self->msg ((length $txt) . " chars read...");
- } else {
- delete $self->{iow};
- $self->selection_clear;
- $self->selection ($txt);
- $self->selection_grab (urxvt::CurrentTime);
- close $fh;
- my $status = $? >> 8;
- $self->msg ("selection fetched (status $status)");
- }
- });
- }
-}
-
-sub on_start {
- my ($self) = @_;
-
- $self->{store_cmd} = $self->x_resource ("remote-selection.store")
- || "rsh ruth 'cat >/tmp/distributed-selection'";
-
- $self->{fetch_cmd} = $self->x_resource ("remote-selection.fetch")
- || "rsh ruth 'cat /tmp/distributed-selection'";
-
- push @{ $self->{term}{selection_popup_hook} }, sub {
- ("selection => remote" => sub { $self->store })
- };
- push @{ $self->{term}{selection_popup_hook} }, sub {
- ("remote => selection" => sub { $self->fetch })
- };
-
- ()
-}
-
-sub on_keyboard_command {
- my ($self, $cmd) = @_;
-
- if ($cmd eq "selection-pastebin:remote-pastebin") {
- $self->upload_paste;
- }
-
- ()
-}
-
()
}
-sub on_keyboard_command {
+sub on_user_command {
my ($self, $cmd) = @_;
$cmd eq "searchable-scrollback:start"
#! perl
-sub on_keyboard_command {
+sub on_user_command {
my ($self, $cmd) = @_;
$cmd eq "selection:rot13"
()
}
-sub on_keyboard_command {
+sub on_user_command {
my ($self, $cmd) = @_;
if ($cmd eq "selection-pastebin:remote-pastebin") {
Displays a digital clock using the built-in overlay.
-=item remote-selection
+=item remote-clipboard
Somewhat of a misnomer, this extension adds two menu entries to the
selection popup that allows one ti run external commands to store the
Called just after the screen gets redrawn. See C<on_refresh_begin>.
-=item on_keyboard_command $term, $string
+=item on_user_command $term, $string
-Called whenever the user presses a key combination that has a
-C<perl:string> action bound to it (see description of the B<keysym>
+Called whenever the a user-configured event is being activated (e.g. via
+a C<perl:string> action bound to a key, see description of the B<keysym>
resource in the @@RXVT_NAME@@(1) manpage).
+The event is simply the action string. This interface is assumed to change
+slightly in the future.
+
=item on_x_event $term, $event
Called on every X event received on the vt window (and possibly other