diff options
Diffstat (limited to 'perl5/Local/Desktop.pm')
-rw-r--r-- | perl5/Local/Desktop.pm | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/perl5/Local/Desktop.pm b/perl5/Local/Desktop.pm index 5f30e507..a9051b02 100644 --- a/perl5/Local/Desktop.pm +++ b/perl5/Local/Desktop.pm @@ -20,6 +20,7 @@ package Local::Desktop; use 5.028; use strict; use warnings; +use lib "$ENV{HOME}/src/dotfiles/perl5"; use Carp; use JSON; @@ -29,9 +30,9 @@ use File::Spec::Functions "rel2abs"; use Exporter "import"; use File::Copy; use List::Util "first"; +use Local::Desktop::WMIPC; our @EXPORT = qw( - $wmipc wmipc @all_workspaces fresh_workspace compact_workspaces @@ -40,10 +41,6 @@ our @EXPORT = qw( resize_for_current_outputs pick_random_wallpapers ); -`sh -c "command -v i3-msg"`; -our $wmipc = $? == 0 ? "i3-msg" : "swaymsg"; -sub wmipc { system $wmipc, "-q", join "; ", @_ } - my $output_re = qr/ ([0-9]+)x([0-9]+)\+([0-9]+)\+([0-9]+) /; our @all_workspaces = ( @@ -79,7 +76,7 @@ sub fresh_workspace { push @cmds, "workspace $next_free_workspace"; push @cmds, "workspace back_and_forth" unless $opts{go}; - wmipc @cmds; + Local::Desktop::WMIPC->new->cmd(@cmds); } $next_free_workspace } @@ -96,7 +93,8 @@ return undef if there is no space for a gap. sub compact_workspaces { my %opts = @_; - my @workspaces = @{ decode_json `$wmipc -t get_workspaces` }; + my $wmipc = Local::Desktop::WMIPC->new; + my @workspaces = $wmipc->get_workspaces->@*; @workspaces < @all_workspaces or return; my ($current_workspace, $gap_workspace); if ($opts{leave_gap}) { @@ -117,7 +115,7 @@ sub compact_workspaces { : unshift @cmds, $pair } - wmipc map "rename workspace $_->[0] to $_->[1]", @cmds; + $wmipc->cmd(map "rename workspace $_->[0] to $_->[1]", @cmds); $opts{leave_gap} and $gap_workspace } |