Assuming that the internal screen is LVDS and the external screen is DVI-0. inotifywait comes from the inotify-tools package.
# Wait for the changes detected by the kernel laptop mode. while inotifywait -e modify /proc/sys/vm/laptop_mode do laptop_mode=`cat /proc/sys/vm/laptop_mode` # If on battery, switch on the internal screen. if [[ $laptop_mode -gt 0 ]]; then xrandr --output LVDS --mode 1280x800 xrandr --output DVI-0 --off # Otherwise, elif [[ $laptop_mode = 0 ]]; then # if the external screen is connected, switch it on. if [[ `xrandr -q|grep DVI-0|cut -f2 -d\ ` = connected ]]; then xrandr --output DVI-0 --mode 1920x1200 xrandr --output LVDS --off fi fi done