]> git.sur5r.net Git - i3/i3/blobdiff - testcases/t/lib/i3test.pm
Bugfix: Switch to appropriate workspace when using 'focus' (+test) (Thanks rogutes)
[i3/i3] / testcases / t / lib / i3test.pm
index ed75faff3f6cc3170096220c9d29b4d430bb0d05..7bfad56a9a71d7babeedf2f97554697f54a0defd 100644 (file)
@@ -14,7 +14,7 @@ use Try::Tiny;
 use v5.10;
 
 use Exporter ();
-our @EXPORT = qw(get_workspace_names get_unused_workspace fresh_workspace get_ws_content get_ws get_focused open_empty_con open_standard_window get_dock_clients cmd does_i3_live exit_gracefully);
+our @EXPORT = qw(get_workspace_names get_unused_workspace fresh_workspace get_ws_content get_ws get_focused open_empty_con open_standard_window get_dock_clients cmd does_i3_live exit_gracefully workspace_exists focused_ws);
 
 my $tester = Test::Builder->new();
 
@@ -167,6 +167,24 @@ sub cmd {
     i3("/tmp/nestedcons")->command(@_)->recv
 }
 
+sub workspace_exists {
+    my ($name) = @_;
+    ($name ~~ @{get_workspace_names()})
+}
+
+sub focused_ws {
+    my $i3 = i3("/tmp/nestedcons");
+    my $tree = $i3->get_tree->recv;
+    my @outputs = @{$tree->{nodes}};
+    my @cons;
+    for my $output (@outputs) {
+        # get the first CT_CON of each output
+        my $content = first { $_->{type} == 2 } @{$output->{nodes}};
+        my $first = first { $_->{fullscreen_mode} == 1 } @{$content->{nodes}};
+        return $first->{name}
+    }
+}
+
 sub does_i3_live {
     my $tree = i3('/tmp/nestedcons')->get_tree->recv;
     my @nodes = @{$tree->{nodes}};