diff -Naur --exclude='*.pyc' -x '*.bak' /home/fito/bin/nicotine+-1.2.7.1/pynicotine/config.py nicotine+-1.2.7.1/pynicotine/config.py
--- /home/fito/bin/nicotine+-1.2.7.1/pynicotine/config.py	2007-02-21 21:47:47.000000000 +0100
+++ nicotine+-1.2.7.1/pynicotine/config.py	2007-06-02 14:19:53.000000000 +0200
@@ -50,7 +50,7 @@
 \
 "transfers":{"downloaddir":None,"sharedownloaddir":1,"shared":None, "buddyshared": [],\
 "uploadbandwidth":10, "uselimit":0,"uploadlimit":150, "preferfriends":0, \
-"useupslots":0, "uploadslots":2, "incompletedir":"", "afterfinish":"", \
+"useupslots":0, "uploadslots":2, "incompletedir":"", "shownotification":0, "afterfinish":"", \
 "afterfolder":"", "lock":1, "fifoqueue": 0, "usecustomban":0, "limitby":1, \
 "customban":"Banned, don't bother retrying","queuelimit":100,"friendsonly":0, \
 "friendsnolimits":0, "enablebuddyshares": 0, "enabletransferbuttons": 1, \
diff -Naur --exclude='*.pyc' -x '*.bak' /home/fito/bin/nicotine+-1.2.7.1/pynicotine/gtkgui/nicotine-settings.glade nicotine+-1.2.7.1/pynicotine/gtkgui/nicotine-settings.glade
--- /home/fito/bin/nicotine+-1.2.7.1/pynicotine/gtkgui/nicotine-settings.glade	2007-02-21 21:47:47.000000000 +0100
+++ nicotine+-1.2.7.1/pynicotine/gtkgui/nicotine-settings.glade	2007-06-02 12:59:27.000000000 +0200
@@ -8481,6 +8481,25 @@
 	  <property name="spacing">10</property>
 
 	  <child>
+	    <widget class="GtkCheckButton" id="notificationtogglebutton">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="label" translatable="yes">Show notification when a file is downloaded</property>
+	      <property name="use_underline">True</property>
+	      <property name="relief">GTK_RELIEF_NORMAL</property>
+	      <property name="focus_on_click">True</property>
+	      <property name="active">False</property>
+	      <property name="inconsistent">False</property>
+	      <property name="draw_indicator">True</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">False</property>
+	      <property name="fill">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
 	    <widget class="GtkVBox" id="vbox87">
 	      <property name="visible">True</property>
 	      <property name="homogeneous">False</property>
@@ -8631,7 +8650,7 @@
 	    </widget>
 	    <packing>
 	      <property name="padding">0</property>
-	      <property name="expand">False</property>
+	      <property name="expand">True</property>
 	      <property name="fill">True</property>
 	    </packing>
 	  </child>
diff -Naur --exclude='*.pyc' -x '*.bak' /home/fito/bin/nicotine+-1.2.7.1/pynicotine/gtkgui/settings_glade.py nicotine+-1.2.7.1/pynicotine/gtkgui/settings_glade.py
--- /home/fito/bin/nicotine+-1.2.7.1/pynicotine/gtkgui/settings_glade.py	2007-02-21 21:47:47.000000000 +0100
+++ nicotine+-1.2.7.1/pynicotine/gtkgui/settings_glade.py	2007-06-02 13:19:22.000000000 +0200
@@ -3398,6 +3398,12 @@
         self.vbox87 = gtk.VBox(False, 0)
         self.vbox87.show()
         self.vbox87.set_spacing(0)
+        
+	self.ShowNotification = gtk.CheckButton()
+        self.ShowNotification.set_active(False)
+        self.ShowNotification.set_label(_("Show notification after download"))
+        self.ShowNotification.show()
+        self.vbox87.pack_start(self.ShowNotification, False, False, 0)
 
         self.label214 = gtk.Label(_("Run command after download finishes ($ for filename):"))
         self.label214.set_alignment(0, 0.5)
diff -Naur --exclude='*.pyc' -x '*.bak' /home/fito/bin/nicotine+-1.2.7.1/pynicotine/gtkgui/settingswindow.py nicotine+-1.2.7.1/pynicotine/gtkgui/settingswindow.py
--- /home/fito/bin/nicotine+-1.2.7.1/pynicotine/gtkgui/settingswindow.py	2007-03-03 15:36:18.000000000 +0100
+++ nicotine+-1.2.7.1/pynicotine/gtkgui/settingswindow.py	2007-06-02 14:16:04.000000000 +0200
@@ -1033,6 +1033,8 @@
 	
 	def SetSettings(self, config):
 		transfers = config["transfers"]
+		if transfers["shownotification"] is not None:
+			self.ShowNotification.set_active(transfers["shownotification"])
 		if transfers["afterfinish"] is not None:
 			self.AfterDownload.set_text(transfers["afterfinish"])
 		if transfers["afterfolder"] is not None:
@@ -1040,9 +1042,11 @@
 		if config["players"]["default"] is not None:
 			self.audioPlayerCombo.child.set_text(config["players"]["default"])
 			self.audioPlayerCombo.append_text( config["players"]["default"] ) 
+
 	def GetSettings(self):
 		return {
 			"transfers": {
+				"shownotification" : self.ShowNotification.get_active(),
 				"afterfinish": self.AfterDownload.get_text(),
 				"afterfolder": self.AfterFolder.get_text(),
 				
diff -Naur --exclude='*.pyc' -x '*.bak' /home/fito/bin/nicotine+-1.2.7.1/pynicotine/transfers.py nicotine+-1.2.7.1/pynicotine/transfers.py
--- /home/fito/bin/nicotine+-1.2.7.1/pynicotine/transfers.py	2007-03-06 22:26:20.000000000 +0100
+++ nicotine+-1.2.7.1/pynicotine/transfers.py	2007-06-02 14:35:48.000000000 +0200
@@ -22,6 +22,7 @@
 from utils import _
 from gtkgui.utils import recode2
 
+
 class Transfer:
 	""" This class holds information about a single transfer. """
 	def __init__(self, conn = None, user = None, filename = None, path = None, status = None, req=None, size = None, file = None, starttime = None, offset = None, currentbytes = None, speed = None,timeelapsed = None, timeleft = None, timequeued = None, transfertimer = None, requestconn = None, modifier = None, place = 0):
@@ -105,6 +106,15 @@
 				self.geoip = _GeoIP.new(_GeoIP.GEOIP_STANDARD)
 			except:
 				self.geoip = None
+				
+				
+		try:
+			import pynotify
+			pynotify.init("Nicotine+")
+			self.pynotify = pynotify
+		except ImportError:
+			self.pynotify = None
+
  
 	def setTransferPanels(self, downloads, uploads):
 		self.downloadspanel = downloads
@@ -762,6 +772,13 @@
 					self.eventprocessor.sendNumSharedFoldersFiles()
 					self.SaveDownloads()
 					self.downloadspanel.update(i)
+					if self.eventprocessor.config.sections["transfers"]["shownotification"] and self.pynotify != None:
+						n = self.pynotify.Notification("Nicotine+", _("%s downloaded" % newname))
+						n.set_icon_from_pixbuf(self.eventprocessor.frame.images["n"])
+						try: n.attach_to_widget(self.eventprocessor.frame.trayicon)
+						except: pass
+						n.show()
+						
 					if self.eventprocessor.config.sections["transfers"]["afterfinish"]:
 						command = self.eventprocessor.config.sections["transfers"]["afterfinish"].replace("$", utils.escapeCommand(newname))
 						os.system(command)
