explained below. Per default URLs are selected, see options for a way to
change this.
+I<NOTE>: Opening URLs in the browser passes the URL via the command line which
+leaks URLs to other users on the current system via C<ps aux> or C<top>.
+
I<NOTE>: When yanking (copying) a temporary file is used to pass the data to
GNU screen/Tmux without exposing it to C<ps aux> or C<top>. However this may
leak data if those temporary files are written to disk. To prevent this change
sub draw_prompt {
my ($self, $config) = @_;
+ $self->debug('draw_prompt', 'started');
+
my $x = 0;
my $y = $self->height - 1;
# Draw prompt flags.
if (defined (my $s = $self->{prompt}{flags})) {
$s = "[$s]";
+ $self->debug('draw_prompt', $s);
$self->draw_clipped($y, $x, $config->{attribute}{prompt_flags}, $s);
$x += length($s) + 1; # space between next element
}
# Draw prompt name.
if (defined (my $s = $self->{prompt}{name})) {
$s = "[$s]";
+ $self->debug('draw_prompt', $s);
$self->draw_clipped($y, $x, $config->{attribute}{prompt_name}, $s);
$x += length($s) + 1;
}
# Draw prompt value, e.g. a search field.
if (defined (my $s = $self->{prompt}{value})) {
+ $self->debug('draw_prompt', $s);
$self->draw_clipped($y, $x, undef, $s);
$x += length($s) + 1;
}
}
}
+ foreach (@args) {
+ $_ = $self->encode($_);
+ }
say $fh "$module: @args";
return;
}
# a working $$.
no warnings;
- system { $cmd->[0] } @{$cmd};
+ my @cmd = map { $screen->encode($_) } @{$cmd};
+ system { $cmd[0] } @cmd;
};
if ($exit != 0) {
my $msg;
$screen->debug('extend_match', 'started');
+ return if not defined $match;
+
$screen->prompt(name => 'extend', value => undef);
$screen->draw_prompt($config);
$screen->debug('handler_url', "opening $match->{value}");
run_in_background($screen, sub {
- my @cmd = map { $screen->encode($_) } (
- @{$config->{setting}{browser}},
- $match->{value},
- );
+ my @cmd = ( @{$config->{setting}{browser}}, $match->{value} );
run_command($screen, $config, \@cmd);
});
return;