0

Read all supplied lines from STDIN, not just first one.

This commit is contained in:
Sergei Fedosov
2021-07-20 01:58:15 +03:00
parent 24b7a97372
commit 08bf20d43a
2 changed files with 38 additions and 37 deletions

View File

@@ -26,3 +26,4 @@ verbose = 8
[-Modules::RequireVersionVar] [-Modules::RequireVersionVar]
[-CodeLayout::RequireTidyCode] [-CodeLayout::RequireTidyCode]
[-TestingAndDebugging::RequireUseWarnings] [-TestingAndDebugging::RequireUseWarnings]
[-ControlStructures::ProhibitDeepNests]

View File

@@ -229,48 +229,48 @@ sub add_events () {
fh => \*STDIN, fh => \*STDIN,
poll => 'r', poll => 'r',
cb => sub { cb => sub {
my $msg = <>; while (my $msg = <>) {
unless ($STDIN_FIRST_LINE_DROPPED) {
unless ($STDIN_FIRST_LINE_DROPPED) { $STDIN_FIRST_LINE_DROPPED = 1;
$msg = <>; next;
$STDIN_FIRST_LINE_DROPPED = 1;
}
if ($msg) {
# drop leading ',' if present
if (substr ($msg, 0, 1) eq ',') {
$msg = substr $msg, 1;
} }
my $j = eval { decode_json $msg }; if ($msg) {
# drop leading ',' if present
if (defined $j) { if (substr ($msg, 0, 1) eq ',') {
# left button click, without shift, ctrl, alt, etc $msg = substr $msg, 1;
if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) {
foreach (@{$CONF->{apps}}) {
unless (defined $_->{name}) {
next;
}
unless (defined $j->{name}) {
next;
}
if ($j->{name} eq $_->{name}) {
spawn ($_->{cmd});
last;
}
}
} }
if (($j->{name} eq 'wallclock') && ($CONF->{clock}->{enabled})) { my $j = eval { decode_json $msg };
if ($CONF->{clock}->{left_click}->{enabled}) {
if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) { if (defined $j) {
spawn ($CONF->{clock}->{left_click}->{cmd}); # left button click, without shift, ctrl, alt, etc
if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) {
foreach (@{$CONF->{apps}}) {
unless (defined $_->{name}) {
next;
}
unless (defined $j->{name}) {
next;
}
if ($j->{name} eq $_->{name}) {
spawn ($_->{cmd});
last;
}
} }
} elsif ($CONF->{clock}->{right_click}->{enabled}) { }
if (($j->{button} == 2) && ($#{$j->{modifiers}} < 0)) {
spawn ($CONF->{clock}->{right_click}->{cmd}); if (($j->{name} eq 'wallclock') && ($CONF->{clock}->{enabled})) {
if ($CONF->{clock}->{left_click}->{enabled}) {
if (($j->{button} == 1) && ($#{$j->{modifiers}} < 0)) {
spawn ($CONF->{clock}->{left_click}->{cmd});
}
} elsif ($CONF->{clock}->{right_click}->{enabled}) {
if (($j->{button} == 2) && ($#{$j->{modifiers}} < 0)) {
spawn ($CONF->{clock}->{right_click}->{cmd});
}
} }
} }
} }