NAME
AnyEvent::I3 - communicate with the i3 window manager
VERSION
Version 0.01
SYNOPSIS
This module connects to the i3 window manager using the UNIX socket based IPC interface it provides (if enabled in the configuration file). You can then subscribe to events or send messages and receive their replies.
Note that as soon as you subscribe to some kind of event, you should NOT send any more messages as race conditions might occur. Instead, open another connection for that.
use AnyEvent::I3 qw(:all);
my $i3 = i3("/tmp/i3-ipc.sock");
$i3->connect->recv;
say "Connected to i3";
my $workspaces = $i3->message(TYPE_GET_WORKSPACES)->recv;
say "Currently, you use " . @{$workspaces} . " workspaces";
EXPORT
$i3 = i3([ $path ]);
Creates a new AnyEvent::I3
object and returns it. path
is the path of the UNIX socket to connect to.
SUBROUTINES/METHODS
$i3 = AnyEvent::I3->new([ $path ])
Creates a new AnyEvent::I3
object and returns it. path
is the path of the UNIX socket to connect to.
$i3->connect
Establishes the connection to i3. Returns an AnyEvent::CondVar
which will be triggered with a boolean (true if the connection was established) as soon as the connection has been established.
if ($i3->connect->recv) {
say "Connected to i3";
}
$i3->subscribe(\%callbacks)
Subscribes to the given event types. This function awaits a hashref with the key being the name of the event and the value being a callback.
$i3->subscribe({
workspace => sub { say "Workspaces changed" }
});
$i3->message($type, $content)
Sends a message of the specified type
to i3, possibly containing the data structure payload
, if specified.
my $reply = $i3->message(TYPE_COMMAND, "reload")->recv;
if ($reply->{success}) {
say "Configuration successfully reloaded";
}
AUTHOR
Michael Stapelberg, <michael at stapelberg.de>
BUGS
Please report any bugs or feature requests to bug-anyevent-i3 at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=AnyEvent-I3. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc AnyEvent::I3
You can also look for information at:
RT: CPAN's request tracker
The i3 window manager website
ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
Copyright 2010 Michael Stapelberg.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.