Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- $|=1; ## Autoflush
- my $first_pass;
- my $before = get_clipboard();
- open my $in, 'gpg --no-tty -d ~/Dropbox/Passwords/passwords.gpg 2>/dev/null|' or die $!;
- while( <$in> ){
- my $line = $_; $line =~ s/[\r\n]+//gsm;
- foreach my $arg ( @ARGV ){
- if( $line =~ /\Q$arg\E/i ){
- print "$line\n";
- if( !defined($first_pass) && $line =~ /(\S+)$/ ){
- set_clipboard( $1 );
- $first_pass = $1;
- }
- last;
- }
- }
- }
- ## Sleep 10 seconds then reset the clipboard
- if( defined $first_pass ){
- local $SIG{INT} = sub { reset_clipboard(); exit 1; };
- sleep 10;
- reset_clipboard();
- }
- sub reset_clipboard {
- if( defined $first_pass && get_clipboard() eq $first_pass ){
- set_clipboard( $before );
- }
- }
- sub set_clipboard {
- open my $out, '| /usr/bin/xclip -selection clipboard -in' or die $!;
- syswrite( $out, $_[0] );
- close $out;
- }
- sub get_clipboard {
- return `/usr/bin/xclip -selection clipboard -out`;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement