http://www.perlmonks.org?node_id=1229277


in reply to Re: scripting i3 with Perl
in thread scripting i3 with Perl

Thanks for the reply.

Your attempt gets rid of the error message and prints "Switched back...", however the switch itself does not happen - the command does not seem to be executed...

Replies are listed 'Best First'.
Re^3: scripting i3 with Perl
by Corion (Patriarch) on Feb 02, 2019 at 08:31 UTC

    Maybe there is an error? The AnyEvent::i3 documentation mentions that ->command returns a result:

    use Data::Dumper; sub handle { my($data)=@_; if($data->{change} eq "empty") { print "empty workspace!!\n"; my $switched; $switched = $i3->command("workspace 1")->cb(sub { my( $reply ) = @_; print "Switched back to workspace 1\n"; undef $switched; use Data::Dumper; print Dumper $reply; }); } }
      This is what I get:
      empty workspace!! Switched back to workspace 1 $VAR1 = bless( { '_ae_sent' => [ [ { 'success' => bless( do{\(my $o = +1)}, 'JSON::PP::Boolean' ) } ] ] }, 'AnyEvent::CondVar' );
      However no switching occurs. No clue what is going on there...

        So, the i3 API tells you that all is well. This sounds more like a problem with i3 to me. Maybe consider delaying the switching a bit. Set a timer (AnyEvent->timer(after => 3, sub {...}) and trigger the desktop switch from that timed callback instead of triggering it directly.