23 lines
619 B
Plaintext
23 lines
619 B
Plaintext
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/);
|
|
$term->exec_async('xdg-open', $data_decoded)
|
|
if $clip =~ /x/; # some test extension
|
|
}
|
|
()
|
|
}
|