Add sugar methods for easier usage
This commit is contained in:
parent
45eef6bdf7
commit
d137f83452
|
@ -31,12 +31,20 @@ then subscribe to events or send messages and receive their replies.
|
||||||
|
|
||||||
my $i3 = i3("/tmp/i3-ipc.sock");
|
my $i3 = i3("/tmp/i3-ipc.sock");
|
||||||
|
|
||||||
$i3->connect->recv;
|
$i3->connect->recv or die "Error connecting";
|
||||||
say "Connected to i3";
|
say "Connected to i3";
|
||||||
|
|
||||||
my $workspaces = $i3->message(TYPE_GET_WORKSPACES)->recv;
|
my $workspaces = $i3->message(TYPE_GET_WORKSPACES)->recv;
|
||||||
say "Currently, you use " . @{$workspaces} . " workspaces";
|
say "Currently, you use " . @{$workspaces} . " workspaces";
|
||||||
|
|
||||||
|
...or, using the sugar methods:
|
||||||
|
|
||||||
|
use AnyEvent::I3;
|
||||||
|
|
||||||
|
my $i3 = i3;
|
||||||
|
my $workspaces = $i3->workspaces->recv;
|
||||||
|
say "Currently, you use " . @{$workspaces} . " workspaces";
|
||||||
|
|
||||||
=head1 EXPORT
|
=head1 EXPORT
|
||||||
|
|
||||||
=head2 $i3 = i3([ $path ]);
|
=head2 $i3 = i3([ $path ]);
|
||||||
|
@ -217,6 +225,70 @@ sub message {
|
||||||
$cv
|
$cv
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=head1 SUGAR METHODS
|
||||||
|
|
||||||
|
These methods intend to make your scripts as beautiful as possible. All of
|
||||||
|
them automatically establish a connection to i3 blockingly (if it does not
|
||||||
|
already exist).
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub _ensure_connection {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
return if defined($self->{ipchdl});
|
||||||
|
|
||||||
|
$self->connect->recv or die "Unable to connect to i3"
|
||||||
|
}
|
||||||
|
|
||||||
|
=head2 get_workspaces
|
||||||
|
|
||||||
|
Gets the current workspaces from i3.
|
||||||
|
|
||||||
|
my $ws = i3->get_workspaces->recv;
|
||||||
|
say Dumper($ws);
|
||||||
|
|
||||||
|
=cut
|
||||||
|
sub get_workspaces {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
$self->_ensure_connection;
|
||||||
|
|
||||||
|
$self->message(TYPE_GET_WORKSPACES)
|
||||||
|
}
|
||||||
|
|
||||||
|
=head2 get_outputs
|
||||||
|
|
||||||
|
Gets the current outputs from i3.
|
||||||
|
|
||||||
|
my $outs = i3->get_outputs->recv;
|
||||||
|
say Dumper($outs);
|
||||||
|
|
||||||
|
=cut
|
||||||
|
sub get_outputs {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
$self->_ensure_connection;
|
||||||
|
|
||||||
|
$self->message(TYPE_GET_OUTPUTS)
|
||||||
|
}
|
||||||
|
|
||||||
|
=head2 command($content)
|
||||||
|
|
||||||
|
Makes i3 execute the given command
|
||||||
|
|
||||||
|
my $reply = i3->command("reload")->recv;
|
||||||
|
die "command failed" unless $reply->{success};
|
||||||
|
|
||||||
|
=cut
|
||||||
|
sub command {
|
||||||
|
my ($self, $content) = @_;
|
||||||
|
|
||||||
|
$self->_ensure_connection;
|
||||||
|
|
||||||
|
$self->message(TYPE_COMMAND, $content)
|
||||||
|
}
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
Michael Stapelberg, C<< <michael at stapelberg.de> >>
|
Michael Stapelberg, C<< <michael at stapelberg.de> >>
|
||||||
|
|
Loading…
Reference in New Issue