#!/bin/sh

# nvidia-settings.sh
# 2014-01-26
# by Gernot Walzl

# Uses nvidia-settings to easily enable an external monitor.
# Tested on version 319.76.

# nvidia-settings -q ConnectedDisplays -d
INTERNAL="DFP-3"
EXTERNAL="CRT-0"

# xrandr -q
INTERNAL_XRANDR="DP-3"
EXTERNAL_XRANDR="VGA-0"

print_usage () {
  echo "Usage:"
  echo "  $0 {primary|secondary|clone|extend}"
}

primary () {
  xrandr -q
  nvidia-settings --assign CurrentMetaMode="$INTERNAL: nvidia-auto-select, $EXTERNAL: NULL"
}

secondary () {
  xrandr -q
  nvidia-settings --assign CurrentMetaMode="$EXTERNAL: nvidia-auto-select, $INTERNAL: NULL"
}

clone () {
  RESOLUTION="1024x768"
  #RESOLUTION="1280x720"
  xrandr -q
  #nvidia-settings --assign CurrentMetaMode="$INTERNAL: nvidia-auto-select +0+0 { ViewPortIn=$RESOLUTION }, $EXTERNAL: nvidia-auto-select +0+0 { ViewPortIn=$RESOLUTION }"
  #xrandr --output "$INTERNAL_XRANDR" --auto --scale-from "$RESOLUTION" --output "$EXTERNAL_XRANDR" --auto --scale-from "$RESOLUTION"
  xrandr --output "$INTERNAL_XRANDR" --auto --scale-from "$RESOLUTION" --output "$EXTERNAL_XRANDR" --mode "$RESOLUTION"
}

extend () {
  xrandr -q
  nvidia-settings --assign CurrentMetaMode="$INTERNAL: nvidia-auto-select, $EXTERNAL: nvidia-auto-select"
}

case "$1" in
  clone) clone ;;
  primary) primary ;;
  secondary) secondary ;;
  clone) clone ;;
  extend) extend ;;
  *) print_usage ;;
esac