blob: 3292e8c4c26a670041bfc581f3cfc4ba19a60888 (
plain)
| 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
 | #! perl
=head1 NAME
52-osc - Implement OSC 32 ; Interact with X11 clipboard
=head1 SYNOPSIS
   urxvt -pe 52-osc
=head1 DESCRIPTION
This extension implements OSC 52 for interacting with system clipboard
Most code stolen from:
http://ailin.tucana.uberspace.de/static/nei/*/Code/urxvt/
=cut
use MIME::Base64;
use Encode;
sub on_osc_seq {
    my ($term, $op, $args) = @_;
    return () unless $op eq 52;
    my ($clip, $data) = split ';', $args, 2;
    if ($data eq '?') {
        # my $data_free = $term->selection();
        # Encode::_utf8_off($data_free); # XXX
        # $term->tt_write("\e]52;$clip;".encode_base64($data_free, '')."\a");
    }
    else {
        my $data_decoded = decode_base64($data);
        Encode::_utf8_on($data_decoded); # XXX
        $term->selection($data_decoded, $clip =~ /c|^$/);
        $term->selection_grab(urxvt::CurrentTime, $clip =~ /c|^$/);
    }
    ()
}
 |