X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3-wsbar;h=a485c1500740d0d921006408dbac99f68fde0514;hb=0c367f9e4c67b77420b98a93b5d0e7ab08e695af;hp=5536e92cc082c54f787773cfbcd72e74483b82d6;hpb=a0d2069bb3fdc46c089c29236c54fbb3da6b328c;p=i3%2Fi3 diff --git a/i3-wsbar b/i3-wsbar index 5536e92c..a485c150 100755 --- a/i3-wsbar +++ b/i3-wsbar @@ -136,9 +136,12 @@ sub got_outputs { } my $x = $new{$name}->{rect}->{x}; + my $w = $new{$name}->{rect}->{width}; my $launch = $command; $launch =~ s/([^%])%x/$1$x/g; + $launch =~ s/([^%])%w/$1$w/g; $launch =~ s/%%x/%x/g; + $launch =~ s/%%w/%w/g; $new{$name}->{cmd_input} = ''; my @cmd = ('/bin/sh', '-c', $launch); @@ -164,19 +167,28 @@ sub output_change { sub update_output { my $dzen_bg = "#111111"; my $out; + my $previous_output; for my $name (keys %{$outputs}) { my $width = $outputs->{$name}->{rect}->{width}; + $previous_output = undef; $out = qq|^pa(;2)|; for my $ws (@{$workspaces}) { next if $ws->{output} ne $name and !$show_all; + # Display a separator if we are on a different output now + if (defined($previous_output) and + ($ws->{output} ne $previous_output)) { + $out .= qq|^fg(#900000)^ib(1)\|^ib(0)^p(+4)|; + } + $previous_output = $ws->{output}; + my ($bg, $fg) = qw(333333 888888); ($bg, $fg) = qw(4c7899 ffffff) if $ws->{visible}; ($bg, $fg) = qw(900000 ffffff) if $ws->{urgent}; - my $cmd = q|i3-msg "| . $ws->{num} . q|"|; + my $cmd = q|i3-msg "workspace | . $ws->{name} . q|"|; my $name = $ws->{name}; # Begin the clickable area @@ -199,7 +211,7 @@ sub update_output { $out .= qq|^p(2)^pa(;2)|; } - $out .= qq|^p(_LOCK_X)^fg($dzen_bg)^r(${width}x17)^p(_UNLOCK_X)^fg(white)|; + $out .= qq|^p(_LOCK_X)^fg($dzen_bg)^r(${width}x17)^p(_UNLOCK_X)^fg()|; $out .= qq|^p(+5)|; $out .= $last_line if (!@input_on or $name ~~ @input_on); $out .= "\n"; @@ -220,7 +232,12 @@ $stdin = AnyEvent->io( fh => \*STDIN, poll => 'r', cb => sub { - chomp (my $line = ); + my $line = ; + if (!defined($line)) { + undef $stdin; + return; + } + chomp($line); $last_line = $line; update_output(); }); @@ -245,10 +262,11 @@ i3-wsbar -c [options] =item B<--command> This command (at the moment only dzen2 is supported) will be started for each -output. C<%x> will be replaced with the X coordinate of the output. +output. C<%x> will be replaced with the X coordinate of the output, C<%w> will +be replaced with the width of the output. Example: - --command "dzen2 -dock -x %x" + --command "dzen2 -dock -x %x -w %w" =item B<--input-on>