Sample Fn-F7 script
Tested on ThinkPad X60s running Fedora 8
Create /etc/acpi/events/thinkpad.conf:
- fn-F7
event=ibm/hotkey HKEY 00000080 00001007 action=/usr/local/sbin/thinkpad-f7
Create /usr/local/sbin/thinkpad-f7:
- !/bin/sh
DO=$(basename $0)
SU="su $(w -h -s | grep ":[0-9]" | head -1 | awk '{print $1}') -c" export DISPLAY=$(w -h -s | grep ":[0-9]" | head -1 | awk '{print $3}')
STATE_FILE=/var/lib/thinkpad/screen.state; if [ ! -e $STATE_FILE ]; then
echo "internal" > $STATE_FILE
fi
STATE=$(cat $STATE_FILE)
function screen_external(){
$SU "xrandr --output LVDS --off" $SU "xrandr --output VGA --mode 1600x1200 --left-of LVDS" echo "external" > $STATE_FILE
}
function screen_internal(){
$SU "xrandr --output VGA --off" $SU "xrandr --output LVDS --mode 1024x768 --right-of VGA" echo "internal" > $STATE_FILE
}
function screen_both(){
$SU "xrandr --output VGA --mode 1600x1200 --left-of LVDS" $SU "xrandr --output LVDS --mode 1024x768 --right-of VGA" echo "both" > $STATE_FILE
}
case "$DO" in
thinkpad-toggle | thinkpad-f7) case "$STATE" in internal) screen_external ;; external) screen_both ;; both) screen_internal ;; *) screen_internal ;; esac ;; thinkpad-dock) screen_internal ;; thinkpad-undock) screen_external ;; *) echo "usage: rename to thinkpad-dock, thinkpad-undock, or thinkpad-toggle" >&2 ;;
esac
As root,
mkdir -p /var/lib/thinkpad
echo "internal" > /var/lib/thinkpad/screen.state
chmod 755 /usr/local/sbin/thinkpad-f7
service acpid restart