From: Ingo Bürk Date: Wed, 18 Mar 2015 20:37:37 +0000 (+0100) Subject: Make the --workspace optional by defaulting to the focused workspace. X-Git-Tag: 4.10.1~44^2~1 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=d217cddb42b835e974af40294994385eb2cf9a52;p=i3%2Fi3 Make the --workspace optional by defaulting to the focused workspace. If no option is given, i3-save-tree should default to the currently focused workspace. Specifying both --workspace and --output will still yield an error. --- diff --git a/i3-save-tree b/i3-save-tree index c64fc72a..04c7e38a 100755 --- a/i3-save-tree +++ b/i3-save-tree @@ -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) = @_;