aboutsummaryrefslogtreecommitdiff
path: root/urxvt/ext/clip
blob: cb2b1a27480b0d43667b8300bfa311c97e4472c4 (plain) (blame)
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
#!/usr/bin/env perl

# Copy PRIMARY selections to the clipboard too with xsel(1).

use strict;
use warnings;
use utf8;

use 5.006;

use Carp;

our $VERSION = 1.0;

sub on_start {
    my ($self) = @_;
    return $self->enable( sel_grab => \&clip );
}

sub clip {
    my ($self) = @_;
    my $selection = $self->selection();
    utf8::encode($selection);
    open my $clipboard, q{|-}, 'xsel -ib'
      or croak('xsel(1) not available');
    my $written = print {$clipboard} $selection
      or croak('Failed to write to xsel(1) pipe');
    close $clipboard
      or croak('Failed to close xsel(1) pipe');
    return $written;
}