From d217cddb42b835e974af40294994385eb2cf9a52 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ingo=20B=C3=BCrk?= Date: Wed, 18 Mar 2015 21:37:37 +0100 Subject: [PATCH] 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. --- i3-save-tree | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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) = @_; -- 2.39.2