[system] feat: add external mode to displayselect

in case of laptop, one may be interested in disconnecting the internal
display, if you're docked for instance

this mode allows to chose an internal display to be disabled, and then
configure a setup as in default mode
This commit is contained in:
David JULIEN 2022-11-25 16:44:41 +01:00
parent d62bd902a0
commit 81e5498349

View File

@ -44,17 +44,28 @@ twoscreen() { # If multi-monitor is selected and there are two screens.
} }
default() { default() {
primary=$(echo "$allposs" | grep -w "connected primary" | awk '{printf $1}') primary=$(echo "$allposs" | grep -w "connected primary" | awk '{ print $1 }')
secondary=$(echo "$screens" | grep -v -w "$primary") secondary=$(echo "$screens" | grep -v -w "$primary")
direction="left" direction="left"
rotation="normal" rotation="normal"
setup setup
} }
external() {
internal=$(echo "$screens" | dmenu -i -p "Select internal display:")
screens=$(echo "$screens" | grep -v -w "eDP-1")
primary=$(echo "$screens" | dmenu -i -p "Select primary display:")
xrandr --output $primary --primary
default
}
setup() { setup() {
[ -z "$mode" ] && mode="auto" [ -z "$mode" ] && mode="auto"
xrandr --output "$primary" --auto --scale 1.0x1.0 \ xrandr --output "$primary" --primary --auto --scale 1.0x1.0 \
--output "$secondary" --"$direction"-of "$primary" --$mode --output "$secondary" --"$direction"-of "$primary" --$mode
[ -n "$internal" ] && xrandr --output "$internal" --off
} }
morescreen() { # If multi-monitor is selected and there are more than two screens. morescreen() { # If multi-monitor is selected and there are more than two screens.
@ -79,9 +90,10 @@ allposs=$(xrandr -q | grep -w "connected")
screens=$(echo "$allposs" | awk '{print $1}') screens=$(echo "$allposs" | awk '{print $1}')
# Get user choice including multi-monitor and manual selection: # Get user choice including multi-monitor and manual selection:
chosen=$(printf "default\\nmulti-monitor\\n%s\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") && chosen=$(printf "default\\nexternal\\nmulti-monitor\\n%s\\nmanual selection" "$screens" | dmenu -i -p "Select display arangement:") &&
case "$chosen" in case "$chosen" in
"default") default ;; "default") default ;;
"external") external ;;
"manual selection") arandr ; exit ;; "manual selection") arandr ; exit ;;
"multi-monitor") multimon ;; "multi-monitor") multimon ;;
*) xrandr --output "$chosen" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "$chosen" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;; *) xrandr --output "$chosen" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "$chosen" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;