X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=blobdiff_plain;f=i3-save-tree;h=da5e6deddedb4bd1078f2b9c091fd8d9c3a0d626;hp=289fd8c6980d4e8aa25cc64d9390947459846ee3;hb=dfe89cc4f1706a6fae0ae3816787d0fb22dadd7d;hpb=33fa3284db45df8057fe6c5f6cf83a67cbef0963 diff --git a/i3-save-tree b/i3-save-tree index 289fd8c6..da5e6ded 100755 --- a/i3-save-tree +++ b/i3-save-tree @@ -1,7 +1,7 @@ #!/usr/bin/env perl # vim:ts=4:sw=4:expandtab # -# © 2013-2014 Michael Stapelberg +# © 2013 Michael Stapelberg # # Requires perl ≥ v5.10, AnyEvent::I3 and JSON::XS @@ -98,7 +98,8 @@ my %allowed_keys = map { ($_, 1) } qw( name geometry window_properties - mark + marks + rect ); sub strip_containers { @@ -116,12 +117,13 @@ sub strip_containers { delete $tree->{geometry} if zero_rect($tree->{geometry}); + # Retain the rect for floating containers to keep their positions. + delete $tree->{rect} unless $tree->{type} eq 'floating_con'; + delete $tree->{current_border_width} if $tree->{current_border_width} == -1; for my $key (keys %$tree) { - next if exists($allowed_keys{$key}); - - delete $tree->{$key}; + delete $tree->{$key} unless exists($allowed_keys{$key}); } for my $key (qw(nodes floating_nodes)) { @@ -165,7 +167,8 @@ sub dump_containers { if (leaf_node($tree)) { my $swallows = {}; for my $property (keys %{$tree->{window_properties}}) { - $swallows->{$property} = '^' . quotemeta($tree->{window_properties}->{$property}) . '$'; + $swallows->{$property} = '^' . quotemeta($tree->{window_properties}->{$property}) . '$' + if $property ne 'transient_for'; } $tree->{swallows} = [ $swallows ]; }