summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2024-01-19 12:31:13 +0000
committerSean Whitton <spwhitton@spwhitton.name>2024-01-19 12:37:19 +0000
commit2dc6697a4182232c56ec9f1587ad0b713ed9dc3c (patch)
treeb6d1a49d56cccd5bb0e2eab7c843960d651b19eb
parent5d9ee7f6ea77b1cf094b9f2ab6ab1364128cf640 (diff)
downloaddotfiles-2dc6697a4182232c56ec9f1587ad0b713ed9dc3c.tar.gz
i3status-wrapper: fix sorting of workspace names
-rwxr-xr-xscripts/desktop/i3status-wrapper20
1 files changed, 13 insertions, 7 deletions
diff --git a/scripts/desktop/i3status-wrapper b/scripts/desktop/i3status-wrapper
index a644f781..ad5efba1 100755
--- a/scripts/desktop/i3status-wrapper
+++ b/scripts/desktop/i3status-wrapper
@@ -78,7 +78,7 @@ unless (fork // warn "couldn't fork monitoring loop") {
if ($node->{type} eq "workspace"
&& grep $_ eq $node->{name}, @all_workspaces) {
my $entry = $info{paper_ws}{$node->{id}}
- //= { name => ws_name($node),
+ //= { name => $node->{name},
off_left => [], off_right => [] };
sync_cols($node => $entry);
$entry->{ncols} = max 2, scalar $entry->{cols}->@*;
@@ -155,7 +155,7 @@ unless (fork // warn "couldn't fork monitoring loop") {
} elsif ($e->{change} && $e->{change} eq "init" && $e->{current}
&& grep $_ eq $e->{current}{name}, @all_workspaces) {
$info{paper_ws}{$e->{current}{id}}
- = { name => ws_name($e->{current}), ncols => 2, cols => [],
+ = { name => $e->{current}{name}, ncols => 2, cols => [],
off_left => [], off_right => [], };
} elsif ($e->{change} && $e->{change} eq "rename"
&& exists $info{paper_ws}{$e->{current}{id}}) {
@@ -320,13 +320,12 @@ while (my ($statusline) = (<> =~ /^,?(.*)/)) {
if ($info{focused_ws}
&& $info{paper_ws} && keys $info{paper_ws}->%* > 1) {
my @disp;
- my @keys =
- sort { $info{paper_ws}{$a}{name} cmp $info{paper_ws}{$b}{name} }
- keys $info{paper_ws}->%*;
+ my @keys = sorted_paper_ws();
foreach my $key (@keys) {
push @disp,
sprintf +($info{focused_ws} == $key ? "<b>%s</b>" : "%s"),
- $info{paper_ws}{$key}{name};
+ ws_name($info{paper_ws}{$key}{name})
+
}
unshift @$blocks,
{ name => "ws", markup => "pango", full_text => join " ", @disp };
@@ -512,6 +511,12 @@ sub normalise_ws_cols {
}
}
+sub sorted_paper_ws {
+ sort { ws_num($info{paper_ws}{$a}{name})
+ <=> ws_num($info{paper_ws}{$b}{name}) }
+ keys $info{paper_ws}->%*
+}
+
sub hide_con {
sprintf "[con_id=%s] move container to workspace %s", $_[0], "*$_[0]*"
}
@@ -521,6 +526,7 @@ sub show_con {
}
sub ws_name {
- my ($before, $after) = split /:/, shift->{name};
+ my ($before, $after) = split /:/, $_[0];
$after // $before
}
+sub ws_num { (split /:/, $_[0])[0] }