From 38a2efc1356294356aaa6b1af138baa950e78f1b Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 20 Jan 2015 06:23:01 -0500 Subject: just put the pass urxvt plugin in the default expected place --- Xdefaults | 1 - urxvt/ext/pass | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ urxvt/pass | 158 --------------------------------------------------------- 3 files changed, 158 insertions(+), 159 deletions(-) create mode 100644 urxvt/ext/pass delete mode 100644 urxvt/pass diff --git a/Xdefaults b/Xdefaults index 3e38e25..24ded0f 100644 --- a/Xdefaults +++ b/Xdefaults @@ -13,7 +13,6 @@ URxvt*font:7x14 URxvt*boldFont:7x14 URxvt*urgentOnBell: true URxvt*perl-ext-common:default,matcher,pass -URxvt*perl-lib:/home/doy/.urxvt/ URxvt*matcher.button:3 URxvt*keysym.C-Return: perl:matcher:last URxvt*keysym.M-Return: perl:matcher:list diff --git a/urxvt/ext/pass b/urxvt/ext/pass new file mode 100644 index 0000000..bc80bcf --- /dev/null +++ b/urxvt/ext/pass @@ -0,0 +1,158 @@ +#! perl + +sub on_init { + my ($self) = @_; + + my $hotkey = $self->{argv}[0] + || $self->x_resource ("pass") + || "M-w"; + + $self->parse_keysym ($hotkey, "perl:pass:start") + or warn "unable to register '$hotkey' as pass start hotkey\n"; + + return; +} + +sub on_user_command { + my ($self, $cmd) = @_; + + $self->enter if $cmd eq 'pass:start'; + + return; +} + +sub enter { + my ($self) = @_; + + return if $self->displaying_msg || $self->displaying_prompt; + + $self->enable( + key_press => \&key_press, + ); + + #eval { + $self->which_password; + #}; + #if ($@) { + #$self->timed_message($@); + #$self->leave; + #} +} + +sub leave { + my ($self) = @_; + delete $self->{overlay}; + delete $self->{prompt}; + delete $self->{state}; + $self->disable("key_press"); +} + +sub msg { + my ($self, $msg) = @_; + delete $self->{timed_overlay}; + $self->{overlay} = $self->overlay (0, -2, $self->ncol, 1, urxvt::OVERLAY_RSTYLE, 0); + $self->{overlay}->set (0, 0, $self->special_encode ($msg)); +} + +sub timed_msg { + my ($self, $msg) = @_; + delete $self->{overlay}; + $self->{timed_overlay} = $self->overlay (0, -2, $self->ncol, 1, urxvt::OVERLAY_RSTYLE, 0); + $self->{timed_overlay}->set (0, 0, $self->special_encode ($msg)); + $self->{timed_overlay_timer} = urxvt::timer->new->after(1)->cb(sub { + delete $self->{timed_overlay}; + }); +} + +sub displaying_msg { + my ($self) = @_; + return defined $self->{overlay}; +} + +sub prompt { + my ($self, $msg, $hide, $next) = @_; + $self->{state} = 'prompt'; + $self->{prompt_hide} = $hide; + $self->{prompt_msg} = $msg; + $self->{prompt_next} = $next; + $self->{prompt_buffer} = ''; + $self->prompt_redisplay; +} + +sub prompt_redisplay { + my ($self) = @_; + my $buf = $self->{prompt_buffer}; + $buf = '' if $self->{prompt_hide}; + my $msg = $self->{prompt_msg} . $buf. "█"; + $self->{prompt} = $self->overlay(0, -1, $self->ncol, 1, urxvt::OVERLAY_RSTYLE, 0); + $self->{prompt}->set(0, 0, $self->special_encode ($msg)); +} + +sub displaying_prompt { + my ($self) = @_; + return $self->{state} eq 'prompt'; +} + +sub prompt_handle { + my ($self, $string) = @_; + $self->{prompt_buffer} .= $string; + $self->prompt_redisplay; +} + +sub prompt_delete { + my ($self) = @_; + substr $self->{prompt_buffer}, -1, 1, ""; + $self->prompt_redisplay; +} + +sub prompt_finish { + my ($self) = @_; + delete $self->{prompt}; + delete $self->{state}; + my $next = delete $self->{prompt_next}; + my $buf = delete $self->{prompt_buffer}; + $next->($buf); + return; +} + +sub which_password { + my $self = shift; + + $self->prompt('Password to insert: ', 0, sub { + my $passname = shift; + my $password = `pass search $passname`; + + if ($password) { + $self->tt_write($password); + } + else { + $self->timed_msg("Unknown password $passname"); + } + $self->leave; + }); +} + +sub key_press { + my ($self, $event, $keysym, $string) = @_; + + delete $self->{manpage_overlay}; + + if ($keysym == 0xff1b || $string =~ /\cc/) { # escape or ^C + $self->timed_msg('Aborted.'); + $self->leave; + } + + if ($self->{state} eq 'prompt'){ + if ($keysym == 0xff0d || $keysym == 0xff8d) { # enter + $self->prompt_finish; + } + elsif ($keysym == 0xff08) { # backspace + $self->prompt_delete; + } + else { + $self->prompt_handle($string); + } + } + + return 1; +} diff --git a/urxvt/pass b/urxvt/pass deleted file mode 100644 index bc80bcf..0000000 --- a/urxvt/pass +++ /dev/null @@ -1,158 +0,0 @@ -#! perl - -sub on_init { - my ($self) = @_; - - my $hotkey = $self->{argv}[0] - || $self->x_resource ("pass") - || "M-w"; - - $self->parse_keysym ($hotkey, "perl:pass:start") - or warn "unable to register '$hotkey' as pass start hotkey\n"; - - return; -} - -sub on_user_command { - my ($self, $cmd) = @_; - - $self->enter if $cmd eq 'pass:start'; - - return; -} - -sub enter { - my ($self) = @_; - - return if $self->displaying_msg || $self->displaying_prompt; - - $self->enable( - key_press => \&key_press, - ); - - #eval { - $self->which_password; - #}; - #if ($@) { - #$self->timed_message($@); - #$self->leave; - #} -} - -sub leave { - my ($self) = @_; - delete $self->{overlay}; - delete $self->{prompt}; - delete $self->{state}; - $self->disable("key_press"); -} - -sub msg { - my ($self, $msg) = @_; - delete $self->{timed_overlay}; - $self->{overlay} = $self->overlay (0, -2, $self->ncol, 1, urxvt::OVERLAY_RSTYLE, 0); - $self->{overlay}->set (0, 0, $self->special_encode ($msg)); -} - -sub timed_msg { - my ($self, $msg) = @_; - delete $self->{overlay}; - $self->{timed_overlay} = $self->overlay (0, -2, $self->ncol, 1, urxvt::OVERLAY_RSTYLE, 0); - $self->{timed_overlay}->set (0, 0, $self->special_encode ($msg)); - $self->{timed_overlay_timer} = urxvt::timer->new->after(1)->cb(sub { - delete $self->{timed_overlay}; - }); -} - -sub displaying_msg { - my ($self) = @_; - return defined $self->{overlay}; -} - -sub prompt { - my ($self, $msg, $hide, $next) = @_; - $self->{state} = 'prompt'; - $self->{prompt_hide} = $hide; - $self->{prompt_msg} = $msg; - $self->{prompt_next} = $next; - $self->{prompt_buffer} = ''; - $self->prompt_redisplay; -} - -sub prompt_redisplay { - my ($self) = @_; - my $buf = $self->{prompt_buffer}; - $buf = '' if $self->{prompt_hide}; - my $msg = $self->{prompt_msg} . $buf. "█"; - $self->{prompt} = $self->overlay(0, -1, $self->ncol, 1, urxvt::OVERLAY_RSTYLE, 0); - $self->{prompt}->set(0, 0, $self->special_encode ($msg)); -} - -sub displaying_prompt { - my ($self) = @_; - return $self->{state} eq 'prompt'; -} - -sub prompt_handle { - my ($self, $string) = @_; - $self->{prompt_buffer} .= $string; - $self->prompt_redisplay; -} - -sub prompt_delete { - my ($self) = @_; - substr $self->{prompt_buffer}, -1, 1, ""; - $self->prompt_redisplay; -} - -sub prompt_finish { - my ($self) = @_; - delete $self->{prompt}; - delete $self->{state}; - my $next = delete $self->{prompt_next}; - my $buf = delete $self->{prompt_buffer}; - $next->($buf); - return; -} - -sub which_password { - my $self = shift; - - $self->prompt('Password to insert: ', 0, sub { - my $passname = shift; - my $password = `pass search $passname`; - - if ($password) { - $self->tt_write($password); - } - else { - $self->timed_msg("Unknown password $passname"); - } - $self->leave; - }); -} - -sub key_press { - my ($self, $event, $keysym, $string) = @_; - - delete $self->{manpage_overlay}; - - if ($keysym == 0xff1b || $string =~ /\cc/) { # escape or ^C - $self->timed_msg('Aborted.'); - $self->leave; - } - - if ($self->{state} eq 'prompt'){ - if ($keysym == 0xff0d || $keysym == 0xff8d) { # enter - $self->prompt_finish; - } - elsif ($keysym == 0xff08) { # backspace - $self->prompt_delete; - } - else { - $self->prompt_handle($string); - } - } - - return 1; -} -- cgit v1.2.3-54-g00ecf