From 8ab39df89a9a9db940512047598a9b3f3ddecdb0 Mon Sep 17 00:00:00 2001 From: Invert White Date: Wed, 2 Nov 2022 15:46:58 -0300 Subject: [PATCH 1/4] 'above' and 'below' as options --- .local/bin/displayselect | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.local/bin/displayselect b/.local/bin/displayselect index f9e80628..1bfc2dd4 100755 --- a/.local/bin/displayselect +++ b/.local/bin/displayselect @@ -33,17 +33,17 @@ twoscreen() { # If multi-monitor is selected and there are two screens. primary=$(echo "$screens" | dmenu -i -p "Select primary display:") secondary=$(echo "$screens" | grep -v "$primary") - direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?") - xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction"-of "$primary" --auto --scale 1.0x1.0 + direction=$(printf "left-of\\nbelow\\nabove\\nright-of" | dmenu -i -p "What side of $primary should $secondary be on?") + xrandr --output "$primary" --auto --scale 1.0x1.0 --output "$secondary" --"$direction" "$primary" --auto --scale 1.0x1.0 fi } morescreen() { # If multi-monitor is selected and there are more than two screens. primary=$(echo "$screens" | dmenu -i -p "Select primary display:") secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:") - direction=$(printf "left\\nright" | dmenu -i -p "What side of $primary should $secondary be on?") + direction=$(printf "left-of\\nbelow\\nabove\\nright-of" | dmenu -i -p "What side of $primary should $secondary be on?") tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:") - xrandr --output "$primary" --auto --output "$secondary" --"$direction"-of "$primary" --auto --output "$tertiary" --"$(printf "left\\nright" | grep -v "$direction")"-of "$primary" --auto + xrandr --output "$primary" --auto --output "$secondary" --"$direction" "$primary" --auto --output "$tertiary" --"$(printf "left-of\\nbelow\\nabove\\nright-of" | grep -v "$direction")" "$primary" --auto } multimon() { # Multi-monitor handler. From a411c2fa9b81cc5170bd0bd9b7451c0bd7b094d8 Mon Sep 17 00:00:00 2001 From: Invert White Date: Thu, 16 Feb 2023 03:31:56 -0300 Subject: [PATCH 2/4] 'above' and 'below' as direction options having tertiary section in mind --- .local/bin/displayselect | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.local/bin/displayselect b/.local/bin/displayselect index 86537f53..ba5802aa 100755 --- a/.local/bin/displayselect +++ b/.local/bin/displayselect @@ -43,9 +43,27 @@ morescreen() { # If multi-monitor is selected and there are more than two screen secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:") direction=$(printf "left-of\\nbelow\\nabove\\nright-of" | dmenu -i -p "What side of $primary should $secondary be on?") tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:") - xrandr --output "$primary" --auto --output "$secondary" --"$direction" "$primary" --auto --output "$tertiary" --"$(printf "left-of\\nbelow\\nabove\\nright-of" | grep -v "$direction")" "$primary" --auto + tertiary_placement=$(echo "$screens" | grep -v "$tertiary" | dmenu -i -p "Around which display should $tertiary be on?") + tertiary_direction=$(printf "$(whichprimary "$tertiary_placement" "$primary" "$direction")" | dmenu -i -p "What side of $tertiary_placement should $tertiary be on?") + xrandr --output "$primary" --auto --output "$secondary" --"$direction" "$primary" --auto --output "$tertiary" --"$tertiary_direction" "$tertiary_placement" --auto } +whichprimary() { # Check done in order to verify direction inconsistencies in case of choosing tertiary display around the primary one + if [ "$tertiary_placement" == "$primary" ] + then + printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $direction; + else + printf "left-of\\nbelow\\nabove\\nright-of" | grep -v "$(sideavailability "$direction")"; + fi ;} + +sideavailability() { # Gives the opposite side available in case of tertiary display being around the secondary one + case "$(printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $1)" in + "left-of") printf "right-of";; + "below") printf "above";; + "above") printf "below";; + "right-of") printf "left-of";; + esac ;} + multimon() { # Multi-monitor handler. case "$(echo "$screens" | wc -l)" in 2) twoscreen ;; From 2cf931d00dcb202c6ac5d25ec40f3b97079f671e Mon Sep 17 00:00:00 2001 From: adu <62226183+nitsvga@users.noreply.github.com> Date: Thu, 16 Feb 2023 03:34:30 -0300 Subject: [PATCH 3/4] little spacing mistakes fixed --- .local/bin/displayselect | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.local/bin/displayselect b/.local/bin/displayselect index ba5802aa..cdabb6aa 100755 --- a/.local/bin/displayselect +++ b/.local/bin/displayselect @@ -39,30 +39,30 @@ twoscreen() { # If multi-monitor is selected and there are two screens. } morescreen() { # If multi-monitor is selected and there are more than two screens. - primary=$(echo "$screens" | dmenu -i -p "Select primary display:") - secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:") - direction=$(printf "left-of\\nbelow\\nabove\\nright-of" | dmenu -i -p "What side of $primary should $secondary be on?") - tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:") - tertiary_placement=$(echo "$screens" | grep -v "$tertiary" | dmenu -i -p "Around which display should $tertiary be on?") - tertiary_direction=$(printf "$(whichprimary "$tertiary_placement" "$primary" "$direction")" | dmenu -i -p "What side of $tertiary_placement should $tertiary be on?") - xrandr --output "$primary" --auto --output "$secondary" --"$direction" "$primary" --auto --output "$tertiary" --"$tertiary_direction" "$tertiary_placement" --auto + primary=$(echo "$screens" | dmenu -i -p "Select primary display:") + secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:") + direction=$(printf "left-of\\nbelow\\nabove\\nright-of" | dmenu -i -p "What side of $primary should $secondary be on?") + tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:") + tertiary_placement=$(echo "$screens" | grep -v "$tertiary" | dmenu -i -p "Around which display should $tertiary be on?") + tertiary_direction=$(printf "$(whichprimary "$tertiary_placement" "$primary" "$direction")" | dmenu -i -p "What side of $tertiary_placement should $tertiary be on?") + xrandr --output "$primary" --auto --output "$secondary" --"$direction" "$primary" --auto --output "$tertiary" --"$tertiary_direction" "$tertiary_placement" --auto } whichprimary() { # Check done in order to verify direction inconsistencies in case of choosing tertiary display around the primary one - if [ "$tertiary_placement" == "$primary" ] - then - printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $direction; - else - printf "left-of\\nbelow\\nabove\\nright-of" | grep -v "$(sideavailability "$direction")"; - fi ;} + if [ "$tertiary_placement" == "$primary" ] + then + printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $direction; + else + printf "left-of\\nbelow\\nabove\\nright-of" | grep -v "$(sideavailability "$direction")"; + fi ;} sideavailability() { # Gives the opposite side available in case of tertiary display being around the secondary one - case "$(printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $1)" in - "left-of") printf "right-of";; - "below") printf "above";; - "above") printf "below";; - "right-of") printf "left-of";; - esac ;} + case "$(printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $1)" in + "left-of") printf "right-of";; + "below") printf "above";; + "above") printf "below";; + "right-of") printf "left-of";; + esac ;} multimon() { # Multi-monitor handler. case "$(echo "$screens" | wc -l)" in From 00706b029c6d8e0965280a6b84b6f7df675907f7 Mon Sep 17 00:00:00 2001 From: Invert White Date: Thu, 16 Feb 2023 04:01:39 -0300 Subject: [PATCH 4/4] now it's done --- .local/bin/displayselect | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/.local/bin/displayselect b/.local/bin/displayselect index cdabb6aa..553113b7 100755 --- a/.local/bin/displayselect +++ b/.local/bin/displayselect @@ -39,30 +39,29 @@ twoscreen() { # If multi-monitor is selected and there are two screens. } morescreen() { # If multi-monitor is selected and there are more than two screens. - primary=$(echo "$screens" | dmenu -i -p "Select primary display:") - secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:") - direction=$(printf "left-of\\nbelow\\nabove\\nright-of" | dmenu -i -p "What side of $primary should $secondary be on?") - tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:") - tertiary_placement=$(echo "$screens" | grep -v "$tertiary" | dmenu -i -p "Around which display should $tertiary be on?") - tertiary_direction=$(printf "$(whichprimary "$tertiary_placement" "$primary" "$direction")" | dmenu -i -p "What side of $tertiary_placement should $tertiary be on?") - xrandr --output "$primary" --auto --output "$secondary" --"$direction" "$primary" --auto --output "$tertiary" --"$tertiary_direction" "$tertiary_placement" --auto + primary=$(echo "$screens" | dmenu -i -p "Select primary display:") + secondary=$(echo "$screens" | grep -v "$primary" | dmenu -i -p "Select secondary display:") + direction=$(printf "left-of\\nbelow\\nabove\\nright-of" | dmenu -i -p "What side of $primary should $secondary be on?") + tertiary=$(echo "$screens" | grep -v "$primary" | grep -v "$secondary" | dmenu -i -p "Select third display:") + tertiary_placement=$(echo "$screens" | grep -v "$tertiary" | dmenu -i -p "Around which display should $tertiary be on?") + tertiary_direction=$(printf "$(whichprimary "$tertiary_placement" "$primary" "$direction")" | dmenu -i -p "What side of $tertiary_placement should $tertiary be on?") + xrandr --output "$primary" --auto --output "$secondary" --"$direction" "$primary" --auto --output "$tertiary" --"$tertiary_direction" "$tertiary_placement" --auto } whichprimary() { # Check done in order to verify direction inconsistencies in case of choosing tertiary display around the primary one - if [ "$tertiary_placement" == "$primary" ] - then - printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $direction; - else - printf "left-of\\nbelow\\nabove\\nright-of" | grep -v "$(sideavailability "$direction")"; - fi ;} + if [ "$tertiary_placement" == "$primary" ]; then + printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $direction; + else + printf "left-of\\nbelow\\nabove\\nright-of" | grep -v "$(sideavailability "$direction")"; + fi ;} sideavailability() { # Gives the opposite side available in case of tertiary display being around the secondary one - case "$(printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $1)" in - "left-of") printf "right-of";; - "below") printf "above";; - "above") printf "below";; - "right-of") printf "left-of";; - esac ;} + case "$(printf "left-of\\nbelow\\nabove\\nright-of" | grep -v $1)" in + "left-of") printf "right-of";; + "below") printf "above";; + "above") printf "below";; + "right-of") printf "left-of";; + esac ;} multimon() { # Multi-monitor handler. case "$(echo "$screens" | wc -l)" in