diary @ telent

I just had to reboot my computer after a Lisp program wedged it#

Sat Aug 20 23:25:49 2005

I just had to reboot my computer after a Lisp program wedged it.

Well, I guess that needs a little qualification. The Lisp in question was librep, the librep interpreter was also running my window manager (Sawfish), and the program was (read-line). And the computer wasn't totally wedged (it carried on playing my MP3s) but wouldn't listen to any keyboard input or focus changes, nor even to M-C-F1 or M-C-Backspace, making it rather hard to regain control. So if I had another machine here I could probably have sshed into it, but I haven't, so there.

Still, if one of the supposed advantages of Lisp is the ease of interactive experimentation and debugging, (and I think I've said this before), Sawfish is not it.

Context: still flushed from my success in getting 90%-working suspend-to-disk, I thought I'd make the machine's power button activate it instead of having to su root and echo stuff into obscurely named files in /sys. That worked quite well once I'd accounted for my script getting run multiple times on each button press. Then I decided to make the volume buttons work too, and that's where I started playing with sawfish. Maybe it's time to try Eclipse again.

#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates suspend-to-disk when the power putton has been
# pressed.  Note use of background process and locking: button 
# seems to send two events (up and down?) each time it's pressed,
# and we only get called for the second after the script has returned
# from the first.
( if lockfile -r0 /tmp/.acpi-suspend-lock; then
 echo 'platform' >/sys/power/disk
 echo 'disk' >/sys/power/state
 rm  /tmp/.acpi-suspend-lock
else 
 echo 'Ignoring second suspend attempt'
fi ) &
exit 0;