summaryrefslogtreecommitdiff
path: root/perl5/Local/Desktop.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl5/Local/Desktop.pm')
-rw-r--r--perl5/Local/Desktop.pm14
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
}