So I FINALLY found the documentation for the GNOME session restore and came up with this.
When GNOME sends off its signal, we send off a signal of our own to set the pref that restores the session once. We then give GNOME the name of our own executable to run the next time. The way we get this executable is very curious, we can't run the binary directly because Firefox launches through a shell script. So we make an app-specific pref with the name of the shell script to execute from the same directory as the binary.
Created attachment 300749
Patch
So I FINALLY found the documentation for the GNOME session restore and came up with this.
When GNOME sends off its signal, we send off a signal of our own to set the pref that restores the session once. We then give GNOME the name of our own executable to run the next time. The way we get this executable is very curious, we can't run the binary directly because Firefox launches through a shell script. So we make an app-specific pref with the name of the shell script to execute from the same directory as the binary.