Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # from http://www.thinkwiki.org/wiki/Xorg_RandR_1.2
- # and http://www.thinkwiki.org/wiki/Sample_Fn-F7_script
- INTERNAL_OUTPUT="LVDS"
- EXTERNAL_OUTPUT1="HDMI-0"
- EXTERNAL_OUTPUT2="VGA-0"
- EXTERNAL_LOCATION="above"
- case "$EXTERNAL_LOCATION" in
- left|LEFT)
- EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
- ;;
- right|RIGHT)
- EXTERNAL_LOCATION="--right-of $INTERNAL_OUTPUT"
- ;;
- top|TOP|above|ABOVE)
- EXTERNAL_LOCATION="--above $INTERNAL_OUTPUT"
- ;;
- bottom|BOTTOM|below|BELOW)
- EXTERNAL_LOCATION="--below $INTERNAL_OUTPUT"
- ;;
- *)
- EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
- ;;
- esac
- # Figure out current state
- INTERNAL_STATE=$(xrandr | grep ^$INTERNAL_OUTPUT | grep " con" | sed "s/.*connected//" | sed "s/ //" | sed "s/ .*//g"| sed "s/(normal//g" )
- EXTERNAL_STATE=$(xrandr | grep ^$EXTERNAL_OUTPUT2 | grep "disconnected" )
- if [ -z "$EXTERNAL_STATE" ]; then
- EXTERNAL_OUTPUT=$EXTERNAL_OUTPUT2
- xrandr --output $EXTERNAL_OUTPUT1 --off
- else
- EXTERNAL_OUTPUT=$EXTERNAL_OUTPUT1
- xrandr --output $EXTERNAL_OUTPUT2 --off
- fi
- EXTERNAL_STATE=$(xrandr | grep ^$EXTERNAL_OUTPUT | grep " con" | sed "s/.*connected//" | sed "s/ //" | sed "s/ .*//g"| sed "s/(normal//g" )
- if [ -z "$INTERNAL_STATE" ]; then
- STATE="external"
- elif [ -z "$EXTERNAL_STATE" ]; then
- STATE="internal"
- else
- INTERNAL_STATE=$(echo $INTERNAL_STATE | sed "s/[0-9]*x[0-9]*//")
- EXTERNAL_STATE=$(echo $EXTERNAL_STATE | sed "s/[0-9]*x[0-9]*//")
- if [ "$INTERNAL_STATE" = "$EXTERNAL_STATE" ]; then
- STATE="mirror"
- else
- STATE="both"
- fi
- fi
- # Set new state
- case "$STATE" in
- internal)
- # both
- xrandr --output $INTERNAL_OUTPUT --auto
- xrandr --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION
- ;;
- both)
- # external
- xrandr --output $INTERNAL_OUTPUT --off
- xrandr --output $EXTERNAL_OUTPUT --auto
- ;;
- external)
- # mirror
- xrandr --output $INTERNAL_OUTPUT --auto
- xrandr --output $EXTERNAL_OUTPUT --auto --same-as $INTERNAL_OUTPUT
- ;;
- mirror)
- # internal
- xrandr --output $EXTERNAL_OUTPUT --off
- xrandr --output $INTERNAL_OUTPUT --auto
- ;;
- *)
- # internal
- xrandr --output $EXTERNAL_OUTPUT --off
- xrandr --output $INTERNAL_OUTPUT --auto
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement