The gnome-power-manager tool listens for suspend button events, and spawns pm-suspend. Extensive detail about how pm-suspend operates can be found in the man pm-suspend command output. The quick version:
/etc/pm/config.d is scanned for files that define environment variables.
- Each of the scripts in
/etc/pm/sleep.d and /usr/lib/pm-utils/sleep.d are called in order with the "suspend" argument.
- The system is put to sleep via the defined interface module. By default, this is the kernel suspend interface:
echo -n "mem" >/sys/power/state. See /usr/lib/pm-utils/pm-functions where do_suspend is defined.
- The system wakes up.
- Each of the scripts in
/etc/pm/sleep.d and /usr/lib/pm-utils/sleep.d are called in reverse order with the "resume" argument.
If you need to add a script to the stack, I would suggest adding it to /etc/pm/sleep.d and name it something that does not conflict with other scripts, and make sure it processes the "suspend"/"resume" argument.
For debugging, see /var/log/pm-suspend.log as well as the man page which has more information on how to do testing.