#!/usr/bin/env perl
# vim:ts=4:sw=4:expandtab
#
-# © 2013 Michael Stapelberg
+# © 2013-2014 Michael Stapelberg
#
# Requires perl ≥ v5.10, AnyEvent::I3 and JSON::XS
use AnyEvent::I3;
use JSON::XS;
use List::Util qw(first);
+use Encode qw(decode);
use v5.10;
use utf8;
use open ':encoding(UTF-8)';
die "Only one of --workspace or --output can be specified";
}
+$workspace = decode('utf-8', $workspace);
+$output = decode('utf-8', $output);
+
my $i3 = i3();
if (!$i3->connect->recv) {
die "Could not connect to i3";
say "$ws// $desc with " . @{$tree->{nodes}} . " children";
}
- # Turn “window_properties” into “swallows” expressions.
- my $swallows = {};
- for my $property (keys %{$tree->{window_properties}}) {
- $swallows->{$property} = '^' . quotemeta($tree->{window_properties}->{$property}) . '$';
+ # Turn “window_properties” into “swallows” expressions, but only for leaf
+ # nodes. It only makes sense for leaf nodes to swallow anything.
+ if (leaf_node($tree)) {
+ my $swallows = {};
+ for my $property (keys %{$tree->{window_properties}}) {
+ $swallows->{$property} = '^' . quotemeta($tree->{window_properties}->{$property}) . '$';
+ }
+ $tree->{swallows} = [ $swallows ];
}
- $tree->{swallows} = [ $swallows ];
delete $tree->{window_properties};
my @keys = sort keys %$tree;