Merge pull request #1555 from Airblader/feature-i3-save-tree-current-ws

Make the --workspace optional by defaulting to the focused workspace.
This commit is contained in:
Michael Stapelberg 2015-03-21 16:38:46 +01:00
commit e7753c839f
1 changed files with 15 additions and 9 deletions

View File

@ -13,6 +13,7 @@ use POSIX qw(locale_h);
use File::Find;
use File::Basename qw(basename);
use File::Temp qw(tempfile);
use List::Util qw(first);
use Getopt::Long;
use Pod::Usage;
use AnyEvent::I3;
@ -41,11 +42,7 @@ my $result = GetOptions(
die "Could not parse command line options" unless $result;
if (!defined($workspace) && !defined($output)) {
die "One of --workspace or --output need to be specified";
}
unless (defined($workspace) ^ defined($output)) {
if (defined($workspace) && defined($output)) {
die "Only one of --workspace or --output can be specified";
}
@ -57,6 +54,15 @@ if (!$i3->connect->recv) {
die "Could not connect to i3";
}
sub get_current_workspace {
my $current = first { $_->{focused} } @{$i3->get_workspaces->recv};
return $current->{name};
}
if (!defined($workspace) && !defined($output)) {
$workspace = get_current_workspace();
}
sub filter_containers {
my ($tree, $pred) = @_;
@ -259,19 +265,19 @@ specification. When a window is mapped (made visible on the screen) that
matches the specification, i3 will put it into that place and kill the
placeholder.
If neither argument is specified, the currently focused workspace will be used.
=head1 OPTIONS
=over
=item B<--workspace=name>
Specifies the workspace that should be dumped, e.g. 1. Either this or --output
need to be specified.
Specifies the workspace that should be dumped, e.g. 1.
=item B<--output=name>
Specifies the output that should be dumped, e.g. LVDS-1. Either this or
--workspace need to be specified.
Specifies the output that should be dumped, e.g. LVDS-1.
=back