Often times I find myself meandering while my comps are rendering. I'm a lost stray soul trekking through the long forgotten desolate land that is my desk. I'm usually planning my next comp, stretching after hours of being desk-bound, wondering if that moldy thing in that corner there is growing and will eventually take over me, and more than likely browsing the internet. But how will I ever know when my renders are complete? Fear not, for we can make Nuke do whatever we please, that's the beauty of scripting. Thanks to Dotcommer, quite a talented classmate, who started this thread at VFXTalk, and thanks to smaragden for coming up with this excellent solution.
First, you will need a .WAV sound file. If you don't have an arsenal of beeps and chimes at your disposal, I recommend going to AT&T text-to-speech labs and create your own personal saying. Mine praises and worships me, and thinks I should run for President of the Galaxy. Once you have it, make sure you take note of its physical location on your drive.
Next, you'll need this snippet of code:
macSound = 'PATH/TO/SOUND/FILE'
winSound = 'PATH/TO/WAVE/FILE'
def playSound():
if nuke.env["MACOS"]:
sys.path.append('/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python')
sys.path.append('/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjC')
from AppKit import NSSound
sound = NSSound.alloc()
sound.initWithContentsOfFile_byReference_(macSound, True)
sound.play()
elif nuke.env["WIN32"]:
import winsound
winsound.PlaySound(winSound, winsound.SND_FILENAME|winsound.SND_ASYNC)
node = nuke.selectedNode()
if node.Class()=='Write':
start,end = nuke.getFramesAndViews('Render Range','%i,%i' % (nuke.root()['first_frame'].value(),nuke.root()['last_frame'].value()))[0].split(',',2)
if nuke.execute(node.name(),int(start),int(end)):
playSound()
Feel free to use whatever text or script editor you prefer, for this example I'll be using the script editor within Nuke. Go ahead and copy and paste the code into the Script Editor. If you don't see the Script Editor by default, right-click on any one of the content menus to select it.

In the first two lines of code, enter the entire path name of your .WAV file in the specified space. For example, since I'm using Windows, I'll change the second line of code to:
winSound = 'E:/Documents and Settings/Christian/RenderSound.wav'
Since we're going to be using this quite often, let's go ahead and save it somewhere where we can easily access it again. Click on Save Script and save it with a .PY extension:

Now if you ever wanted to use this script again, you could easily load it by pressing the Load Script icon.

Now here's the money part, with your Write Node selected, go ahead and run the script. You can run it by either pressing the icon or the hotkey which is Ctrl-Enter.

If it worked, you should get a little pop-up asking you which frames you would like to render.

As far as I can tell, this doesn't work with single frame renders and executing multiple write nodes in your Nuke script.
I hope this works for you, feel free to let me know if you have any questions.
