AnyEvent-I3X-Workspace-OnDemand
view release on metacpan or search on metacpan
lib/AnyEvent/I3X/Workspace/OnDemand.pm view on Meta::CPAN
$self->start_apps_of_layout($name);
}
}
if (my $sub = $workspace{$name}{$type}) {
$sub->($self, $i3, $event);
}
}
);
$self->subscribe(
tick => sub {
my $event = shift;
my $payload = $event->{payload};
$payload = "__EMPTY__" unless length($payload);
$event->{payload} = $payload;
$self->log_event('tick', $event);
if ($payload =~ /^group:([[:word:]]+)$/) {
# Skip if we have no groups
return unless any { $_ eq $1 } @groups;
$self->switch_to_group($1);
return;
}
return unless %tick;
if (my $sub = $tick{$payload}) {
$sub->($self, $i3, $event);
}
}
);
$self->subscribe(
shutdown => sub {
my $event = shift;
$self->log_event('shutdown', $event);
my $payload = $event->{change};
if (my $sub = $shutdown{$payload}) {
$sub->($self, $i3, $event);
}
}
);
$self->subscribe(
barconfig_update => sub {
my $event = shift;
$self->log_event('barconfig_update', $event);
# This is hack because we seem to lose our x11 connection. Setting these
# to undef will reinit our x11 connections.
$x11 = undef;
$xroot = undef;
# This event consists of a single serialized map reporting on options
# from the barconfig of the specified bar_id that were updated in i3.
# This event is the same as a GET_BAR_CONFIG reply for the bar with the
# given id.
warn "barconfig_update is currently not supported", $/
if %barconfig_update;
}
);
$self->subscribe(
output => sub {
my $event = shift;
$self->log_event('output', $event);
my $payload = $event->{change};
if (my $sub = $output{$payload}) {
$sub->($self, $i3, $event);
}
}
);
$self->subscribe(
mode => sub {
my $event = shift;
$self->log_event('mode', $event);
my $payload = $event->{change};
if (my $sub = $mode{$payload}) {
$sub->($self, $i3, $event);
}
}
);
$self->subscribe(
window => sub {
my $event = shift;
$self->log_event('window', $event);
my $payload = $event->{change};
if (my $sub = $window{$payload}) {
$sub->($self, $i3, $event);
}
}
);
$self->subscribe(
binding => sub {
my $event = shift;
$self->log_event('binding', $event);
my $payload = $event->{change};
if (my $sub = $binding{$payload}) {
$sub->($self, $i3, $event);
}
}
);
}
method _is_in_group ($name, $group) {
my $ws = $workspace{$name};
return 0 unless $ws;
return 0 unless exists $ws->{group};
return 1 if exists $ws->{group}{$group};
return 1 if exists $ws->{group}{all};
}
( run in 1.437 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )