From ecd9920a37634966a50024550bdeb1a12cc361d6 Mon Sep 17 00:00:00 2001 From: John Mertz Date: Thu, 29 Dec 2022 12:37:33 -0500 Subject: [PATCH] Standardize and expand tab to 4 --- sway/displays.pl | 508 +++++++++++++++++++++++------------------------ 1 file changed, 254 insertions(+), 254 deletions(-) diff --git a/sway/displays.pl b/sway/displays.pl index 9807677..97969da 100755 --- a/sway/displays.pl +++ b/sway/displays.pl @@ -49,9 +49,9 @@ my $active_outputs = "$ENV{'HOME'}/.spool/active_outputs"; # You can get the model from (quoted with *): # $ swaymsg -t get_outputs --raw my %outputs = ( - 'DENON-AVAMP' => 'TV', - 'Paperlike253' => 'eInk', - '0x4140' => 'yoga' + 'DENON-AVAMP' => 'TV', + 'Paperlike253' => 'eInk', + '0x4140' => 'yoga' ); ######################################################################## @@ -62,91 +62,91 @@ my %outputs = ( # Second-level keys are the display friendly-names, above # Third-level are the actual settings for that display my %configs = ( - 'Both' => { - 'yoga' => { - 'on' => 0 - }, - 'eInk' => { - 'on' => 1, - 'width' => 3200, - 'height' => 1800, - 'x' => 0, - 'y' => 0, - 'rotate' => 90, - 'scale' => 2, - 'waybar' => 'top', - 'fallback' => '#fefefe', - }, - 'TV' => { - 'on' => 1, - 'width' => 3840, - 'height' => 2160, - 'x' => 900, - 'y' => 0, - 'rotate' => 0, - 'scale' => 1.33333, - 'waybar' => 'top', - 'fallback' => '#010101', - 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" - }, - }, - 'detached' => { - 'yoga' => { - 'on' => 1, - 'width' => 2560, - 'height' => 1440, - 'x' => 0, - 'y' => 0, - 'rotate' => 0, - 'scale' => 1.33333, - 'waybar' => 'bottom', - 'fallback' => '#010101', - 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" - }, - 'eInk' => { - 'on' => 0 - }, - 'TV' => { - 'on' => 0 - } - 'scale' => 1.43, + 'Both' => { + 'yoga' => { + 'on' => 0 }, 'eInk' => { - 'yoga' => { - 'on' => 0 - }, - 'eInk' => { - 'on' => 1, - 'width' => 3840, - 'height' => 2160, - 'x' => 0, - 'y' => 0, - 'rotate' => 0, - 'waybar' => 'top', - 'fallback' => '#010101', - 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" - }, - 'TV' => { - 'on' => 0 - }, + 'on' => 1, + 'width' => 3200, + 'height' => 1800, + 'x' => 0, + 'y' => 0, + 'rotate' => 90, + 'scale' => 2, + 'waybar' => 'top', + 'fallback' => '#fefefe', }, 'TV' => { - 'yoga' => { - 'on' => 0 - }, - 'TV' => { - 'on' => 1, - 'width' => 3840, - 'height' => 2160, - 'x' => 0, - 'y' => 0, - 'rotate' => 0, - 'scale' => 1.33333, - 'waybar' => 'top', - 'fallback' => '#010101', - 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" - }, + 'on' => 1, + 'width' => 3840, + 'height' => 2160, + 'x' => 900, + 'y' => 0, + 'rotate' => 0, + 'scale' => 1.33333, + 'waybar' => 'top', + 'fallback' => '#010101', + 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" + }, + }, + 'detached' => { + 'yoga' => { + 'on' => 1, + 'width' => 2560, + 'height' => 1440, + 'x' => 0, + 'y' => 0, + 'rotate' => 0, + 'scale' => 1.43, + 'waybar' => 'bottom', + 'fallback' => '#010101', + 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" + }, + 'eInk' => { + 'on' => 0 + }, + 'TV' => { + 'on' => 0 } + }, + 'eInk' => { + 'yoga' => { + 'on' => 0 + }, + 'eInk' => { + 'on' => 1, + 'width' => 3840, + 'height' => 2160, + 'x' => 0, + 'y' => 0, + 'rotate' => 0, + 'scale' => 1.33333, + 'waybar' => 'top', + 'fallback' => '#010101', + 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" + }, + 'TV' => { + 'on' => 0 + }, + }, + 'TV' => { + 'yoga' => { + 'on' => 0 + }, + 'TV' => { + 'on' => 1, + 'width' => 3840, + 'height' => 2160, + 'x' => 0, + 'y' => 0, + 'rotate' => 0, + 'scale' => 1.33333, + 'waybar' => 'top', + 'fallback' => '#010101', + 'bg' => "$ENV{HOME}/wallpapers/wallpaper.png" + }, + } ); ######################################################################## @@ -161,46 +161,46 @@ my $restore = 0; # Set if no config is provided. Requires validation. my $config; if (scalar(@ARGV)) { - while (@ARGV) { - my $arg = shift; - if ($arg eq "-w") { - $waybar_only = 1; - } else { - if (defined $config) { - die "Too many arguments.\n"; - } - $config = $arg; - } + while (@ARGV) { + my $arg = shift; + if ($arg eq "-w") { + $waybar_only = 1; + } else { + if (defined $config) { + die "Too many arguments.\n"; + } + $config = $arg; } + } } # Get previous config if one is not provided unless (defined $config) { - open(my $fh, '<', $last) || - die "Config name not provided and failed to open $last\n"; - $config = <$fh>; - close($fh); - chomp $config; - $restore = 1; + open(my $fh, '<', $last) || + die "Config name not provided and failed to open $last\n"; + $config = <$fh>; + close($fh); + chomp $config; + $restore = 1; } # Bail if requested config doesn't exist if (!defined($configs{$config})) { - if ($restore) { - # If restoration is attempted with invalid config, just enable eDP-1 - $config = 'detached'; - } else { - die "$config is not a defined configuration: " - . join(', ', keys %configs) . "\n"; - } + if ($restore) { + # If restoration is attempted with invalid config, just enable eDP-1 + $config = 'detached'; + } else { + die "$config is not a defined configuration: " + . join(', ', keys %configs) . "\n"; + } } # Write config that is to be used so that it can be recovered as default if (open(my $fh, '>', $last)) { - print $fh $config; - close($fh); + print $fh $config; + close($fh); } else { - print STDERR "Config name cannot be logged to: $last\n"; + print STDERR "Config name cannot be logged to: $last\n"; } # Fetch connected displays @@ -215,92 +215,92 @@ my $on; my @off; for (my $i = 0; $i < scalar(@$displays); $i++) { - # If a display is found without any settings print error and turn it off - unless (defined $configs{$config}{$outputs{$displays->[$i]->{model}}}){ - print STDERR "Output $displays->[$i]->{name} (" - . $displays->[$i]->{model} - . ") found without defined function. Disabling.\n"; - push @off, $displays->[$i]->{name}; - next; - } + # If a display is found without any settings print error and turn it off + unless (defined $configs{$config}{$outputs{$displays->[$i]->{model}}}){ + print STDERR "Output $displays->[$i]->{name} (" + . $displays->[$i]->{model} + . ") found without defined function. Disabling.\n"; + push @off, $displays->[$i]->{name}; + next; + } - # If display is enabled, copy all of the desired settings - if ($configs{$config}{$outputs{$displays->[$i]->{model}}}{on}) { - $on->{$outputs{$displays->[$i]->{model}}} = - $configs{$config}{$outputs{$displays->[$i]->{model}}}; - $on->{$outputs{$displays->[$i]->{model}}}{output} = - $displays->[$i]->{name}; - # Otherwise simply list it for disabling - } else { - push @off, $displays->[$i]->{name}; - } + # If display is enabled, copy all of the desired settings + if ($configs{$config}{$outputs{$displays->[$i]->{model}}}{on}) { + $on->{$outputs{$displays->[$i]->{model}}} = + $configs{$config}{$outputs{$displays->[$i]->{model}}}; + $on->{$outputs{$displays->[$i]->{model}}}{output} = + $displays->[$i]->{name}; + # Otherwise simply list it for disabling + } else { + push @off, $displays->[$i]->{name}; + } } # Verify that all requested displays are actually available my @unavailable; foreach my $output (keys %$on) { - my $found = 0; - foreach my $o (keys %outputs) { - if ($outputs{$o} eq $output) { - $found = 1; - last; - } - } - unless ($found) { - push @unavailable, $output; - } + my $found = 0; + foreach my $o (keys %outputs) { + if ($outputs{$o} eq $output) { + $found = 1; + last; + } + } + unless ($found) { + push @unavailable, $output; + } } if (scalar(@unavailable)) { - die "Config requires unavailable output(s) " . join(', ', @unavailable) - . "\n"; + die "Config requires unavailable output(s) " . join(', ', @unavailable) + . "\n"; } # Skip enabling/disabling displays if only running waybar (re)start unless ($waybar_only) { - # Number of simultaneous outputs is limited by gpu, so disabled displays - # first - foreach (@off) { + # Number of simultaneous outputs is limited by gpu, so disabled displays + # first + foreach (@off) { - # Sway returns status as JSON - my $res_raw = `swaymsg -s $swaysock output $_ disable`; - my $res = $json->decode($res_raw)->[0]; - - # If failed, print to STDERR - unless ($res->{success}) { - print STDERR "Error ($res->{error}) in command 'swaymsg" - . " -s $swaysock output $_ disable'\n"; - } + # Sway returns status as JSON + my $res_raw = `swaymsg -s $swaysock output $_ disable`; + my $res = $json->decode($res_raw)->[0]; + # If failed, print to STDERR + unless ($res->{success}) { + print STDERR "Error ($res->{error}) in command 'swaymsg" + . " -s $swaysock output $_ disable'\n"; } + + } } # Kill existing Waybars require Proc::ProcessTable; my $t = new Proc::ProcessTable; foreach my $p ( @{ $t->table } ) { - my $cmndline = $p->{'cmndline'}; - $cmndline =~ s/\s*$//g; - if ($cmndline =~ /^waybar.*/) { - # Never kill this process - if ($p->{'pid'} == $$) { - next; - } else { - $p->kill(9); - } + my $cmndline = $p->{'cmndline'}; + $cmndline =~ s/\s*$//g; + if ($cmndline =~ /^waybar.*/) { + # Never kill this process + if ($p->{'pid'} == $$) { + next; + } else { + $p->kill(9); } + } } # Load in config template my $template; if (open (my $fh, '<', $waybar_template)) { - while (<$fh>) { - $template .= $_; - } - close $fh; - chomp $template; + while (<$fh>) { + $template .= $_; + } + close $fh; + chomp $template; } else { - print STDERR "Failed to load template $waybar_template\n"; + print STDERR "Failed to load template $waybar_template\n"; } # If template is already set up as an array, remove the square brackets so that @@ -314,91 +314,91 @@ my $waybar = ''; my @active; foreach my $out (keys %$on) { - push @active, $on->{$out}->{output}; - unless ($waybar_only) { - # Build command, starting by enabling and powering on - my $cmd = "swaymsg -s $swaysock output $on->{$out}->{output}" . - " enable dpms on"; + push @active, $on->{$out}->{output}; + unless ($waybar_only) { + # Build command, starting by enabling and powering on + my $cmd = "swaymsg -s $swaysock output $on->{$out}->{output}" . + " enable dpms on"; - # If additional options are provided, add them to command - if (defined $on->{$out}->{scale}) { - $cmd .= " scale $on->{$out}->{scale}"; - } else { - $cmd .= " scale 1"; - } - if (defined $on->{$out}->{rotate}) { - $cmd .= " transform $on->{$out}->{rotate}"; - } else { - $cmd .= " transform 0"; - } - if (defined $on->{$out}->{x} && defined $on->{$out}->{y}) { - $cmd .= " position $on->{$out}->{x} $on->{$out}->{y}"; - } - if (defined $on->{$out}->{width} && - defined $on->{$out}->{height} ) - { - $cmd .= " mode $on->{$out}->{width}x" . - "$on->{$out}->{height}"; - } - if (defined $on->{$out}->{bg} && - -f $on->{$out}->{bg}) - { - $cmd .= " bg $on->{$out}->{bg} fit"; - if (defined $on->{$out}->{fallback}) { - $cmd .= " $on->{$out}->{fallback}"; - } - } elsif (defined $on->{$out}->{fallback}) { - $cmd .= " bg $on->{$out}->{fallback} solid_color"; - } - - # Sway returns status as JSON - my $res_raw = `$cmd`; - #print $res_raw . "\n"; - my $res = $json->decode($res_raw)->[0]; - - # If failed, print to STDERR - unless ($res->{success}) { - print STDERR "Error ($res->{error}) in command " . - "'$cmd'\n"; - } + # If additional options are provided, add them to command + if (defined $on->{$out}->{scale}) { + $cmd .= " scale $on->{$out}->{scale}"; + } else { + $cmd .= " scale 1"; } - - # Skip waybar setup if template failed to be loaded - if ( (defined $template) && - (defined $on->{$out}->{waybar}) && - ($on->{$out}->{waybar} =~ m/(top|bottom|left|right)/) ) + if (defined $on->{$out}->{rotate}) { + $cmd .= " transform $on->{$out}->{rotate}"; + } else { + $cmd .= " transform 0"; + } + if (defined $on->{$out}->{x} && defined $on->{$out}->{y}) { + $cmd .= " position $on->{$out}->{x} $on->{$out}->{y}"; + } + if (defined $on->{$out}->{width} && + defined $on->{$out}->{height} ) { - - # If there's already a display set up, add a comma - unless ($waybar eq '') { - $waybar .= ','; - } - - $waybar .= $template; - - # Replace basic preferences - $waybar =~ s/__OUTPUT__/"$on->{$out}->{output}"/gg; - $waybar =~ s/__POSITION__/"$on->{$out}->{waybar}"/gg; - if (defined $on->{$out}->{width}) { - my $x = $on->{$out}->{width}; - if (defined $on->{$out}->{scale}) { - $x = sprintf("%.0d", $x / $on->{$out}->{scale}); - } - $waybar =~ s/__WIDTH__/$x/gg; - # If width is not set, comment that line out to use default - } else { - $waybar =~ s/([^\s]*\s*)__WIDTH__/\/\/ $1__WIDTH__/gg; - } - + $cmd .= " mode $on->{$out}->{width}x" . + "$on->{$out}->{height}"; } + if (defined $on->{$out}->{bg} && + -f $on->{$out}->{bg}) + { + $cmd .= " bg $on->{$out}->{bg} fit"; + if (defined $on->{$out}->{fallback}) { + $cmd .= " $on->{$out}->{fallback}"; + } + } elsif (defined $on->{$out}->{fallback}) { + $cmd .= " bg $on->{$out}->{fallback} solid_color"; + } + + # Sway returns status as JSON + my $res_raw = `$cmd`; + #print $res_raw . "\n"; + my $res = $json->decode($res_raw)->[0]; + + # If failed, print to STDERR + unless ($res->{success}) { + print STDERR "Error ($res->{error}) in command " . + "'$cmd'\n"; + } + } + + # Skip waybar setup if template failed to be loaded + if ( (defined $template) && + (defined $on->{$out}->{waybar}) && + ($on->{$out}->{waybar} =~ m/(top|bottom|left|right)/) ) + { + + # If there's already a display set up, add a comma + unless ($waybar eq '') { + $waybar .= ','; + } + + $waybar .= $template; + + # Replace basic preferences + $waybar =~ s/__OUTPUT__/"$on->{$out}->{output}"/gg; + $waybar =~ s/__POSITION__/"$on->{$out}->{waybar}"/gg; + if (defined $on->{$out}->{width}) { + my $x = $on->{$out}->{width}; + if (defined $on->{$out}->{scale}) { + $x = sprintf("%.0d", $x / $on->{$out}->{scale}); + } + $waybar =~ s/__WIDTH__/$x/gg; + # If width is not set, comment that line out to use default + } else { + $waybar =~ s/([^\s]*\s*)__WIDTH__/\/\/ $1__WIDTH__/gg; + } + + } } # Log active outputs for recovery after crash/reboot if (open(my $fh, '>', $active_outputs)) { - print $fh join(' ', @active); - close($fh); + print $fh join(' ', @active); + close($fh); } else { - print STDERR "Cannot write active outputs to: $active_outputs\n"; + print STDERR "Cannot write active outputs to: $active_outputs\n"; } # Restore array formatting @@ -407,16 +407,16 @@ $waybar = '[' . $waybar . ']'; # Start Waybar as fork my $pid = fork; unless ($pid) { - open STDIN, '/dev/null'; - open STDOUT, '>>/dev/null'; - open STDERR, '>>/dev/null'; - # Write config to a temporary file - if (open (my $fh, '>', $waybar_config)) { - print $fh $waybar; - close $fh; - } else { - die "Failed to write configuration file: $waybar_config\n"; - } - my $waydisplay = $ENV{'WAYLAND_DISPLAY'} || 'wayland-0'; - `WAYLAND_DISPLAY=$waydisplay nohup waybar -b waybar0 --config=$waybar_config >> $ENV{'HOME'}/.waybar.log`; + open STDIN, '/dev/null'; + open STDOUT, '>>/dev/null'; + open STDERR, '>>/dev/null'; + # Write config to a temporary file + if (open (my $fh, '>', $waybar_config)) { + print $fh $waybar; + close $fh; + } else { + die "Failed to write configuration file: $waybar_config\n"; + } + my $waydisplay = $ENV{'WAYLAND_DISPLAY'} || 'wayland-0'; + `WAYLAND_DISPLAY=$waydisplay nohup waybar -b waybar0 --config=$waybar_config >> $ENV{'HOME'}/.waybar.log`; }