← Back to team overview

cairo-dock-team team mailing list archive

[Merge] lp:~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.4.0-1 into lp:ubuntu/cairo-dock-plug-ins

 

Matthieu Baerts has proposed merging lp:~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.4.0-1 into lp:ubuntu/cairo-dock-plug-ins.

Requested reviews:
  Ubuntu Sponsors Team (ubuntu-sponsors)
Related bugs:
  Bug #626782 in cairo-dock (Ubuntu): "Cairo-Dock: switcher applet doesn't respect desktop numbers"
  https://bugs.launchpad.net/ubuntu/+source/cairo-dock/+bug/626782
  Bug #658681 in cairo-dock (Ubuntu): "empty trash from the trashcan does not delete files from usb harddisks"
  https://bugs.launchpad.net/ubuntu/+source/cairo-dock/+bug/658681
  Bug #859984 in cairo-dock-plug-ins (Ubuntu): "Please update Cairo-Dock Plug-Ins to 2.4.0~1 version (bugs fixed version)"
  https://bugs.launchpad.net/ubuntu/+source/cairo-dock-plug-ins/+bug/859984

For more details, see:
https://code.launchpad.net/~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.4.0-1/+merge/77046

Hello,

The Cairo-Dock team proposes a new version of its Cairo-Dock packages.

This is the Upstream (short) ChangeLog:
 * Upstream (short) ChangeLog (2.4.0~0beta2 -> 2.4.0~1):
   - Powermanager: correctly release the reference on the device object
   - logout: now works if there is no session-manager
   - Status-Notifier: fixed a small bug
      (wrong callback in cairo_dock_stop_watching_dbus_name_owner)
   - Folders: fixed the positionning of the new icon
      and the dialog when dropping a folder inside the dock
      and fixed the icon-rendering
   - Dustbin: use the default theme if no icon is found
   - Impulse: the default context seems to be ok and not an error
   - Status-Notifier: On Ubuntu Oneiric (with indicator-0.4)
      the ApplicationAdded signal has changed and has a new parameter
   - Disable MeMenu on Oneiric (no longer available with indicator-0.4)
   - CMakeLists.txt: Improved output messages
   - Slide view: fixed a small offset in vertical view
   - musicPlayer:
    + split MPRIS 1.0 and 2.0 to help debugging and finding the right
       name of the bug.
    + 'rhythmbox-client' tool is no longer available: used MPRIS
    + Disable Amazon service (it no longer work)
    + Cover: fixed corrupted icons: some players (e.g. the latest version
       of RB) copy covers on their cache forlder but it takes a few time.
    + Fixed the update the icon and its name if the player is stopped.
    + Prevent a crash if the name given by MPRIS is NULL
   - Powermanager: try to prevent to have a few dialogues at the same time
   - PowerManager and AlsaMixer: hidden gnome2 or 3 apps if not available
   - Messaging-Menu: Updated for Natty and Oneiric
      (dbus-menu gives us GVariant instead of GValue objects)
   - Alsamixer: fixed a small bug on reload
   - Dbus: Bash interface: Fixed a typo with emblem positions
   - Sys-monitor: fixed a bug which prevented from getting
      the CPU temperature in some cases
   - Compiz (0.9): type filter: replaced type=utility by type=Utility
   - Updated the version of all applets that have gauges
     in order to use the right directory
   - Wifi: Fixed the status if we are not connected
   - Dbus: removed a conflict with the Help applet
   - Messaging-Menu: updated applet-menu.c => Memory leaks on pixbufs
   - Dbus: Fixed a crash when changing dock theme if a 'third-party' applet
      is running
   - Netspeed: in /proc/net/dev, there are 8 values to drop after the card id
      except if there is whitespaces just after this ':' character
      and fixed order and value for ON_ICON display
   - dock-rendering/toto: removed a useless file
   - Clipper: fixed the loading of the remembered items
      (they had the wrong type) and fixed a bug if we reduce the list of items
   - Folders, dustbin, Network-Monitor: tried to not use cast if it's possible
   - Code cleaned and re-organised a few functions
     (e.g. emblem references has been renamed)
   - Removed useless files: powermanager-dbus*
   - Updating translations
   - Fixed a few warnings at the compilation
   - Removed a few useless output messages
   - Fixed these LP bugs:
    + Empty trash from the trashcan does not delete files
       from usb harddisks: LP: #658681
    + Switcher applet doesn't respect desktop numbers LP: #626782

Note that this is the stable version of the 2.4 branch. It fixes a lot of bugs of the previous version (2.4.0~0beta2).

This branch should be ready to be pushed on lp:ubuntu/cairo-dock-plug-ins (except the UNRELEASED version in debian/changelog)

Thank you for your help! :)

PS: Don't forget to upload this package AND THE CORE ( LP: #859982 )
-- 
The attached diff has been truncated due to its size.
https://code.launchpad.net/~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.4.0-1/+merge/77046
Your team Cairo-Dock Team is subscribed to branch lp:~cairo-dock-team/ubuntu/oneiric/cairo-dock-plug-ins/2.4.0-1.
=== modified file 'Animated-icons/src/applet-unfold.c'
--- Animated-icons/src/applet-unfold.c	2011-04-20 20:46:51 +0000
+++ Animated-icons/src/applet-unfold.c	2011-09-26 20:21:33 +0000
@@ -29,7 +29,7 @@
 {
 	g_return_if_fail (pIcon->pSubDock != NULL && pIcon->pIconBuffer != NULL);
 	int w, h;
-	cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pDock), &w, &h);
+	cairo_dock_get_icon_extent (pIcon, &w, &h);
 	double f = 1. - pIcon->pSubDock->fFoldingFactor;
 	double fMaxScale = cairo_dock_get_max_scale (CAIRO_CONTAINER (pDock));
 	double z = pIcon->fScale / fMaxScale * pDock->container.fRatio;
@@ -149,7 +149,7 @@
 {
 	g_return_if_fail (pIcon->pSubDock != NULL);
 	int w, h;
-	cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pDock), &w, &h);
+	cairo_dock_get_icon_extent (pIcon, &w, &h);
 	double f = 1. - pIcon->pSubDock->fFoldingFactor;
 	double fMaxScale = cairo_dock_get_max_scale (CAIRO_CONTAINER (pDock));
 	double z = pIcon->fScale / fMaxScale * pDock->container.fRatio;

=== modified file 'Applets.stable' (properties changed: +x to -x)
--- Applets.stable	2011-04-20 20:46:51 +0000
+++ Applets.stable	2011-09-26 20:21:33 +0000
@@ -23,7 +23,7 @@
 terminal
 Cairo-Penguin
 showDesktop
-compiz-icon
+# compiz-icon # removed in v2.4.0
 slider
 Clipper
 GMenu
@@ -44,7 +44,7 @@
 ###Last addition of v2.1.0 :
 System-Monitor
 dnd2share
-Music-Player
+musicPlayer
 mail
 ###Added in v2.1.3
 RSSReader
@@ -57,6 +57,12 @@
 Remote-Control
 Recent-Events
 Status-Notifier
+###Added in v2.4.0
+Composite-Manager
+Impulse
 ###All other applets are considered to be either not enough functionnal, buggy/untested, or under heavy development.
 #Scooby-Do
 #Network-Monitor
+#Disks
+#Doncky
+#KDE experimental

=== modified file 'CMakeLists.txt'
--- CMakeLists.txt	2011-08-09 19:51:45 +0000
+++ CMakeLists.txt	2011-09-26 20:21:33 +0000
@@ -10,9 +10,9 @@
 ########### project ###############
 
 project ("cairo-dock-plugins")
-set (VERSION "2.4.0~0beta2")
+set (VERSION "2.4.0~1")
 
-add_definitions (-std=c99 -Wstrict-prototypes -Wextra -Wwrite-strings -Wuninitialized -Werror-implicit-function-declaration) #-Wunreachable-code -Wno-unused-parameter -Wall
+add_definitions (-std=c99 -Wextra -Wwrite-strings -Wuninitialized -Werror-implicit-function-declaration) # removed for stable versions: -Wstrict-prototypes #-Wunreachable-code -Wno-unused-parameter -Wall
 if (NOT ${CMAKE_BUILD_TYPE})
 	add_definitions (-O3)
 endif()
@@ -130,7 +130,7 @@
 		set (MODULES_MISSING "${MODULES_MISSING} alsa")
 	else()
 		set (GETTEXT_ALSA_MIXER ${GETTEXT_PLUGINS})
-		set (VERSION_ALSA_MIXER "1.0.13")
+		set (VERSION_ALSA_MIXER "1.1.1")
 		set (PACKAGE_ALSA_MIXER "cd-AlsaMixer")
 		set (with_alsa "yes")
 		set (alsa_mixerdatadir "${pluginsdatadir}/AlsaMixer")
@@ -178,7 +178,7 @@
 	set (MODULES_MISSING "${MODULES_MISSING} libical")
 endif()
 set (GETTEXT_CLOCK ${GETTEXT_PLUGINS})
-set (VERSION_CLOCK "2.1.3")
+set (VERSION_CLOCK "2.1.4")
 set (PACKAGE_CLOCK "cd-clock")
 set (clockuserdirname "clock")
 set (clockdatadir "${pluginsdatadir}/clock")
@@ -186,7 +186,7 @@
 add_subdirectory (clock)
 
 ############# COMPOSITE_MANAGER #################
-message (STATUS "> Coposite Manager:")
+message (STATUS "> Composite Manager:")
 set (GETTEXT_COMPOSITE_MANAGER ${GETTEXT_PLUGINS})
 set (VERSION_COMPOSITE_MANAGER "1.0.0")
 set (PACKAGE_COMPOSITE_MANAGER "cd-Composite-Manager")
@@ -196,7 +196,7 @@
 
 ############# DBUS #################
 message (STATUS "> DBus:")
-message (STATUS "* Python:")
+message (STATUS " * Python:")
 find_program (PYTHON_EXECUTABLE python)
 EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import sys; print sys.version" OUTPUT_VARIABLE PYTHON_VERSION)
 if ("${PYTHON_VERSION}" STREQUAL "")
@@ -206,22 +206,22 @@
 	set (with_python "no")
 else()
 	STRING (REGEX REPLACE "\n" "" PYTHON_VERSION ${PYTHON_VERSION})
-	message (STATUS "Python Version: ${PYTHON_VERSION}")
+	message (STATUS "   Python Version: ${PYTHON_VERSION}")
 	GET_FILENAME_COMPONENT(DEBIAN_VERSION /etc/debian_version ABSOLUTE)
 	if (EXISTS ${DEBIAN_VERSION})
-		message (STATUS "  will use '--install-layout deb' with 'python setup.py install'")
+		message (STATUS "   will use '--install-layout deb' with 'python setup.py install'")
 		set (DEBIAN_INSTALL_LAYOUT "--install-layout deb")
 	endif()
 	set (PYTHON_FOUND "TRUE")
 	set (with_python "yes")
 endif()
 
-message (STATUS "* Ruby:")
+message (STATUS " * Ruby:")
 # find_package(Ruby) found libs of ruby-dev but we only need a directory where we can install ruby libs.
 find_program (RUBY_EXECUTABLE ruby)
 EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['rubylibdir']"
 	OUTPUT_VARIABLE RUBY_LIB_DIR)
-message (STATUS "RUBY_LIBRARY: ${RUBY_LIB_DIR}")
+message (STATUS "   Ruby library dir: ${RUBY_LIB_DIR}")
 if ("${RUBY_LIB_DIR}" STREQUAL "" OR "${RUBY_LIB_DIR}" STREQUAL "nil")
 	message (STATUS "Could not find ruby libs, won't install Ruby interface.")
 	message (WARNING "This program is required to compile DBus applet with Ruby interface: ruby")
@@ -231,12 +231,12 @@
 	string (REGEX REPLACE "lib/ruby/[0-9].[0-9]" "" RUBY_LIB_DIR_INSTALL "${RUBY_LIB_DIR}")
 	string (REGEX REPLACE "${RUBY_LIB_DIR_INSTALL}" "" RUBY_LIB_DIR_INSTALL "${RUBY_LIB_DIR}")
 	set (RUBY_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${RUBY_LIB_DIR_INSTALL}")
-	message (STATUS "  will be installed in: ${RUBY_LIB_DIR}")
+	message (STATUS "   will be installed in: ${RUBY_LIB_DIR}")
 	set (RUBY_FOUND "TRUE")
 	set (with_ruby "yes")
 endif()
 
-message (STATUS "* Mono:")
+message (STATUS " * Mono:")
 #find_package (Mono)
 find_program (GMCS_EXECUTABLE gmcs)
 if ("${GMCS_EXECUTABLE}" STREQUAL "" OR NOT EXISTS ${GMCS_EXECUTABLE})
@@ -255,13 +255,13 @@
 	endif()
 endif()
 
-message (STATUS "* Vala:")
+message (STATUS " * Vala:")
 # Valac is only riquired to convert vala files to C files.
 #  So we can directly use produced files (c, h, vapi) without using valac.
 set (with_vala "yes")
 set (with_valac "no")
 find_program (VALAC_EXE valac)
-message (STATUS "VALAC_EXE: ${VALAC_EXE}")
+message (STATUS "   Path to valac: ${VALAC_EXE}")
 
 if ("${WITH_VALA}" STREQUAL "no")
 	set (with_vala "no")
@@ -273,7 +273,7 @@
 		OUTPUT_VARIABLE "VALA_VERSION")
 	string(REPLACE "Vala" "" "VALA_VERSION" ${VALA_VERSION})
 	string(STRIP ${VALA_VERSION} "VALA_VERSION")
-	message (STATUS "VALA_VERSION: ${VALA_VERSION}")
+	message (STATUS "   Vala version: ${VALA_VERSION}")
 
 	STRING (REGEX REPLACE "\\..*" "" VALA_MAJOR "${VALA_VERSION}")
 	# message (STATUS "VALA_MAJOR : ${VALA_MAJOR}")
@@ -288,11 +288,11 @@
 
 	if (${VALA_MAJOR} GREATER 0 OR ${VALA_MINOR} GREATER 9) # vala >= 0.10 
 		# AND (${VALA_MAJOR} LESS 1 AND ${VALA_MINOR} LESS 13)) # and <= 0.12
-		message (STATUS " Vala compiler OK (>= 0.10).")# and <= 0.12).")
+		message (STATUS "   Vala compiler OK (>= 0.10).")# and <= 0.12).")
 		set (VALAC_FOUND "TRUE")
 		set (with_valac "yes")
 	else()
-		message (STATUS "Vala compiler is too old (0.10 required) or too new (> 0.12), won't build Vala interface.")
+		message (STATUS "   Vala compiler is too old (0.10 required) or too new (> 0.12), won't build Vala interface.")
 	endif()
 else()
 	message (STATUS "Could not find ValaC, won't build Vala interface with the version of your distribution.")
@@ -471,22 +471,20 @@
 
 ############# IMPULSE #################
 set (with_impulse "no")
-if ("${enable-impulse}" STREQUAL "yes")
-	message (STATUS "> Impulse:")
-	pkg_check_modules (IMPULSE_PACKAGES libpulse fftw3)
-	if ("${IMPULSE_PACKAGES_FOUND}" STREQUAL "")
-		message (STATUS "Could not find libpulse; Cairo-Dock won't be built with Impulse applet.")
-		message (WARNING "These modules are required to compile Impulse applet: libpulse fftw3")
-		set (MODULES_MISSING "${MODULES_MISSING} libpulse fftw3")
-	else()
-		set (GETTEXT_IMPULSE ${GETTEXT_PLUGINS})
-		set (VERSION_IMPULSE "0.0.3")
-		set (PACKAGE_IMPULSE "cd-Impulse")
-		set (with_impulse "yes")
-		set (impulsedatadir "${pluginsdatadir}/Impulse")
-		configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Impulse/data/Impulse.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Impulse/data/Impulse.conf)
-		add_subdirectory (Impulse)
-	endif()
+message (STATUS "> Impulse:")
+pkg_check_modules (IMPULSE_PACKAGES libpulse fftw3)
+if ("${IMPULSE_PACKAGES_FOUND}" STREQUAL "")
+	message (STATUS "Could not find libpulse; Cairo-Dock won't be built with Impulse applet.")
+	message (WARNING "These modules are required to compile Impulse applet: libpulse fftw3")
+	set (MODULES_MISSING "${MODULES_MISSING} libpulse fftw3")
+else()
+	set (GETTEXT_IMPULSE ${GETTEXT_PLUGINS})
+	set (VERSION_IMPULSE "0.0.3")
+	set (PACKAGE_IMPULSE "cd-Impulse")
+	set (with_impulse "yes")
+	set (impulsedatadir "${pluginsdatadir}/Impulse")
+	configure_file (${CMAKE_CURRENT_SOURCE_DIR}/Impulse/data/Impulse.conf.in ${CMAKE_CURRENT_BINARY_DIR}/Impulse/data/Impulse.conf)
+	add_subdirectory (Impulse)
 endif()
 
 ############# INDICATOR-APPLET #################
@@ -507,8 +505,10 @@
 endif()
 if ("${INDICATOR_04_FOUND}" STREQUAL "1")
 	pkg_check_modules (INDICATOR_APPLET indicator-0.4 libido-0.1)
+	set (INDICATOR_APPLICATIONADDED_HAS_HINT 1) # now the ApplicationAdded signal (Status-Notifier) has a new parameter (hint) => https://code.launchpad.net/~ted/indicator-application/name-hints/+merge/67213
 else()
 	pkg_check_modules (INDICATOR_APPLET indicator libido-0.1)
+	set (INDICATOR_APPLICATIONADDED_HAS_HINT 0)
 endif()
 
 if ("${INDICATOR_APPLET_FOUND}" STREQUAL "1" AND "${DBUSMENU_FOUND}" STREQUAL "1" AND "${DBUSMENU_GTK_FOUND}" STREQUAL "1")
@@ -601,7 +601,7 @@
 		 AND KIO_INCLUDE_DIR
 		 AND KIO_LIBRARY
 		 AND KDE_INCLUDE_DIR)
-		message (STATUS "KDE: OK")
+		message (STATUS "  KDE: OK")
 		set (VERSION_KDE_INTEGRATION "0.0.3")
 		set (PACKAGE_KDE_INTEGRATION "cd_kde-integration")
 		set (with_kde_integration2 "yes")
@@ -614,7 +614,7 @@
 	endif()
 elseif (NOT "${enable-kde-integration}" STREQUAL "no")
 	pkg_check_modules (KDE_INTEGRATION gio-2.0)
-	message (STATUS "KDE_INTEGRATION_FOUND: ${KDE_INTEGRATION_FOUND}")
+	message (STATUS "  KDE_INTEGRATION_FOUND: ${KDE_INTEGRATION_FOUND}")
 	if (NOT KDE_INTEGRATION_FOUND)
 		message (STATUS "Could not find gio; Cairo-Dock won't be built with KDE support.")
 		message (STATUS "This module is required to compile KDE-Integration applet: gio-2.0")
@@ -698,10 +698,10 @@
 	message (WARNING "This module is required to compile Mail applet: libetpan")
 	set (PROGRAMS_MISSING "${PROGRAMS_MISSING} libetpan-config")
 else()
-	message (STATUS "libetpan found. Using the following options:")
-	message (STATUS "  Include directories: ${MAIL_PACKAGE_INCLUDE_DIRS}")
-	message (STATUS "  Link directories: ${MAIL_PACKAGE_LIBRARY_DIRS}")
-	message (STATUS "  Link libraries: ${MAIL_PACKAGE_LIBRARIES}")
+	message (STATUS "  libetpan found. Using the following options:")
+	message (STATUS "   Include directories: ${MAIL_PACKAGE_INCLUDE_DIRS}")
+	message (STATUS "   Link directories: ${MAIL_PACKAGE_LIBRARY_DIRS}")
+	message (STATUS "   Link libraries: ${MAIL_PACKAGE_LIBRARIES}")
 	set (GETTEXT_MAIL ${GETTEXT_PLUGINS})
 	set (VERSION_MAIL "1.0.9")
 	set (PACKAGE_MAIL "cd-mail")
@@ -751,7 +751,7 @@
 endif()
 
 if (NOT "${DISTRO_ID}" STREQUAL "")
-	message (STATUS "DISTRO_ID: ${DISTRO_ID}, DISTRO_RELEASE: ${DISTRO_RELEASE}")
+	message (STATUS "  DISTRO_ID: ${DISTRO_ID}, DISTRO_RELEASE: ${DISTRO_RELEASE}")
 endif()
 
 ############# INDICATOR_NAME #################
@@ -759,19 +759,21 @@
 set (INDICATOR_OLD_NAMES 0)
 if ("${force_old_indicator_names}" STREQUAL "yes")
 	set (INDICATOR_OLD_NAMES 1)
-	message (STATUS "Indicators: use old Ayatana Dbus names (forced)")
+	message (STATUS "  Indicators: use old Ayatana Dbus names (forced)")
 elseif ("${DISTRO_ID}" STREQUAL "Ubuntu")
 	STRING (REGEX REPLACE "\\..*" "" DISTRO_RELEASE_MAJOR ${DISTRO_RELEASE})
 	# message (STATUS "DISTRO_RELEASE_MAJOR: ${DISTRO_RELEASE_MAJOR}")
 	if (${DISTRO_RELEASE_MAJOR} LESS 11)  # from 11.04, new names are used.
 		set (INDICATOR_OLD_NAMES 1)
-		message (STATUS "Indicators: use old Ayatana Dbus names")
+		message (STATUS "  Indicators: use old Ayatana Dbus names")
 	endif()
 endif()
 
 ############# MEMENU #################
 set (with_me_menu "no")
-if ("${with_indicator}" STREQUAL "yes")
+if ("${INDICATOR_04_FOUND}" STREQUAL "1")
+	message (STATUS "> MeMenu: this applet has been automatically merged with Messaging-Menu")
+elseif ("${with_indicator}" STREQUAL "yes")
 	message (STATUS "> MeMenu:")
 	set (GETTEXT_MEMENU ${GETTEXT_PLUGINS})
 	set (VERSION_MEMENU "1.0.2")
@@ -784,7 +786,7 @@
 
 ############# MESSAGING_MENU #################
 set (with_messaging_menu "no")
-if ("${with_indicator}" STREQUAL "yes")
+if ("${with_indicator}" STREQUAL "yes") 
 	message (STATUS "> Messaging-Menu:")
 	set (GETTEXT_MESSAGING_MENU ${GETTEXT_PLUGINS})
 	set (VERSION_MESSAGING_MENU "1.0.2")
@@ -807,7 +809,7 @@
 ############# MUSICPLAYER #################
 message (STATUS "> MusicPlayer:")
 set (GETTEXT_MUSICPLAYER ${GETTEXT_PLUGINS})
-set (VERSION_MUSICPLAYER "1.0.8")
+set (VERSION_MUSICPLAYER "1.1.0")
 set (PACKAGE_MUSICPLAYER "cd-musicPlayer")
 set (musicplayerdatadir "${pluginsdatadir}/musicPlayer")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/musicPlayer/data/musicPlayer.conf.in ${CMAKE_CURRENT_BINARY_DIR}/musicPlayer/data/musicPlayer.conf)
@@ -816,7 +818,7 @@
 ############# NETSPEED #################
 message (STATUS "> NetSpeed:")
 set (GETTEXT_NETSPEED ${GETTEXT_PLUGINS})
-set (VERSION_NETSPEED "1.2.6")
+set (VERSION_NETSPEED "1.2.7")
 set (PACKAGE_NETSPEED "cd-netspeed")
 set (netspeeddatadir "${pluginsdatadir}/netspeed")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/netspeed/data/netspeed.conf.in ${CMAKE_CURRENT_BINARY_DIR}/netspeed/data/netspeed.conf)
@@ -827,7 +829,7 @@
 if ("${enable-network-monitor}" STREQUAL "yes")
 	message (STATUS "> Network Monitor:")
 	set (GETTEXT_NETWORK_MONITOR ${GETTEXT_PLUGINS})
-	set (VERSION_NETWORK_MONITOR "0.2.4")
+	set (VERSION_NETWORK_MONITOR "0.2.5")
 	set (PACKAGE_NETWORK_MONITOR "cd-network-monitor")
 	set (with_network_monitor "yes")
 	set (network_monitordatadir "${pluginsdatadir}/Network-Monitor")
@@ -838,7 +840,7 @@
 ############# POWERMANAGER #################
 message (STATUS "> PowerManager:")
 set (GETTEXT_POWERMANAGER ${GETTEXT_PLUGINS})
-set (VERSION_POWERMANAGER "1.3.5")
+set (VERSION_POWERMANAGER "1.3.7")
 set (PACKAGE_POWERMANAGER "cd-powermanager")
 set (powermanagerdatadir "${pluginsdatadir}/powermanager")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/powermanager/data/powermanager.conf.in ${CMAKE_CURRENT_BINARY_DIR}/powermanager/data/powermanager.conf)
@@ -952,7 +954,7 @@
 	set (with_exif "no")
 endif()
 set (GETTEXT_SLIDER ${GETTEXT_PLUGINS})
-set (VERSION_SLIDER "2.0.9")
+set (VERSION_SLIDER "2.0.10")
 set (PACKAGE_SLIDER "cd-slider")
 set (sliderdatadir "${pluginsdatadir}/slider")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/slider/data/slider.conf.in ${CMAKE_CURRENT_BINARY_DIR}/slider/data/slider.conf)
@@ -975,6 +977,12 @@
 	# set (MODULES_MISSING "${MODULES_MISSING} dbusmenu-gtk(-0.4)") # it should already be in the list.
 	set (with_status_notifier "no")
 else()
+	if ("${force_indicator_applicationadded_have_hint}" STREQUAL "yes")
+		set (INDICATOR_APPLICATIONADDED_HAS_HINT 1)
+	elseif ("${force_indicator_applicationadded_have_hint}" STREQUAL "no")
+		set (INDICATOR_APPLICATIONADDED_HAS_HINT 0)
+	endif()
+	message (STATUS "  ApplicationAdded signal has 'Hint' = ${INDICATOR_APPLICATIONADDED_HAS_HINT}")
 	set (GETTEXT_STATUS_NOTIFIER ${GETTEXT_PLUGINS})
 	set (VERSION_STATUS_NOTIFIER "0.1.4")
 	set (PACKAGE_STATUS_NOTIFIER "cd-status-notifier")
@@ -1004,7 +1012,7 @@
 	set (with_sensors "no")
 endif()
 set (GETTEXT_SYSTEM_MONITOR ${GETTEXT_PLUGINS})
-set (VERSION_SYSTEM_MONITOR "1.0.7")
+set (VERSION_SYSTEM_MONITOR "1.0.9")
 set (PACKAGE_SYSTEM_MONITOR "cd-system-monitor")
 set (system_monitordatadir "${pluginsdatadir}/System-monitor")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/System-Monitor/data/System-Monitor.conf.in ${CMAKE_CURRENT_BINARY_DIR}/System-Monitor/data/System-Monitor.conf)
@@ -1049,7 +1057,7 @@
 ############# TOONS #################
 message (STATUS "> Toons:")
 set (GETTEXT_TOONS ${GETTEXT_PLUGINS})
-set (VERSION_TOONS "1.0.9")
+set (VERSION_TOONS "1.0.10")
 set (PACKAGE_TOONS "cd-Toons")
 set (toonsdatadir "${pluginsdatadir}/Toons")
 set (toonsuserdirname "Toons")
@@ -1089,7 +1097,7 @@
 ############# WIFI #################
 message (STATUS "> WiFi:")
 set (GETTEXT_WIFI ${GETTEXT_PLUGINS})
-set (VERSION_WIFI "1.2.7")
+set (VERSION_WIFI "1.2.9")
 set (PACKAGE_WIFI "cd-wifi")
 set (wifidatadir "${pluginsdatadir}/wifi")
 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/wifi/data/wifi.conf.in ${CMAKE_CURRENT_BINARY_DIR}/wifi/data/wifi.conf)
@@ -1145,15 +1153,20 @@
 message (STATUS "===============")
 message ("")
 message (STATUS "Stable:")
+message (STATUS " Integration plug-ins:")
+message (STATUS " - with Gnome support:             ${with_gnome_integration}")
+message (STATUS " - with KDE support:               ${with_kde_integration}")
+message (STATUS " - with XFCE support:              ${with_xfce_integration}")
+message (STATUS " Plug-ins:")
 message (STATUS " - with Alsa-Mixer applet:         ${with_alsa}")
 message (STATUS " - with iCal support:              ${with_ical}")
 message (STATUS " - with GMenu applet:              ${with_gmenu}")
-message (STATUS " - with Gnome support:             ${with_gnome_integration}")
-message (STATUS " - with KDE support:               ${with_kde_integration}")
-message (STATUS " - with XFCE support:              ${with_xfce_integration}")
+message (STATUS " - with Impulse applet:            ${with_impulse}")
 message (STATUS " - with Keyboard-indicator applet: ${with_keyboard_indicator}")
 message (STATUS " - with Mail applet:               ${with_mail}")
+if (NOT "${INDICATOR_04_FOUND}" STREQUAL "1")
 message (STATUS " - with Me-Menu applet:            ${with_me_menu}")
+endif()
 message (STATUS " - with Messaging-Menu:            ${with_messaging_menu}")
 message (STATUS " - with Screen Resolution support: ${with_xrandr}")
 message (STATUS " - with Status-Notifier applet:    ${with_status_notifier}")
@@ -1171,7 +1184,6 @@
 message (STATUS "Unstable:")
 message (STATUS " - with Disks applet:              ${with_disks}")
 message (STATUS " - with Doncky applet:             ${with_doncky}")
-message (STATUS " - with Impulse applet:            ${with_impulse}")
 message (STATUS " - with KDE experimental support:  ${with_kde_integration2}")
 message (STATUS " - with Network-Monitor applet:    ${with_network_monitor}")
 message (STATUS " - with Scooby-Do applet:          ${with_scooby_do}")

=== modified file 'Cairo-Penguin/src/applet-animation.c'
--- Cairo-Penguin/src/applet-animation.c	2011-04-20 20:46:51 +0000
+++ Cairo-Penguin/src/applet-animation.c	2011-09-26 20:21:33 +0000
@@ -89,7 +89,7 @@
 {
 	g_return_if_fail (pAnimation->iTexture != 0);
 	int iIconWidth, iIconHeight;
-	cairo_dock_get_icon_extent (myIcon, myContainer, &iIconWidth, &iIconHeight);
+	CD_APPLET_GET_MY_ICON_EXTENT (&iIconWidth, &iIconHeight);
 	
 	_cairo_dock_enable_texture ();
 	_cairo_dock_set_blend_alpha ();
@@ -198,7 +198,7 @@
 		CD_APPLET_START_DRAWING_MY_ICON_OR_RETURN ();
 		
 		int iIconWidth, iIconHeight;
-		cairo_dock_get_icon_extent (myIcon, myContainer, &iIconWidth, &iIconHeight);
+		CD_APPLET_GET_MY_ICON_EXTENT (&iIconWidth, &iIconHeight);
 		
 		g_return_if_fail (pAnimation->iTexture != 0);
 		double f = (1 + myIconsParam.fAmplitude) / fScale;

=== modified file 'Clipper/data/Clipper.conf.in'
--- Clipper/data/Clipper.conf.in	2011-08-09 18:08:08 +0000
+++ Clipper/data/Clipper.conf.in	2011-09-26 20:21:33 +0000
@@ -16,7 +16,7 @@
 
 #S+ Image filename:
 #{Leave empty to use the default one.}
-icon=accessories-text-editor.svg
+icon=accessories-text-editor
 
 #j+[0;128] Desired icon size for this applet
 #{Set to 0 to use the default applet size}
@@ -60,7 +60,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Clipper/src/applet-clipboard.c'
--- Clipper/src/applet-clipboard.c	2011-08-09 18:08:08 +0000
+++ Clipper/src/applet-clipboard.c	2011-09-26 20:21:33 +0000
@@ -25,6 +25,8 @@
 
 const gchar *cEnvName[4] = {"other", "gnome", "kde", "xfce"};  // "other" allows to handle all the other DE (put your own actions into the corresponding file).
 
+// TODO idea: cairo_dock_cut_string => g_strstrip + cut X first char, then add '...', then the X last char + removed '\n'
+
 static int _cd_clipper_compare_item (CDClipperItem *pItem1, CDClipperItem *pItem2)
 {
 	if (pItem1->iType < pItem2->iType)  // on insere en 1er les items de la primary.
@@ -35,7 +37,7 @@
 		return 0;
 }
 
-static GList *_cd_clipper_get_last_item (CDClipperItemType iItemType)
+GList *cd_clipper_get_last_item (CDClipperItemType iItemType)
 {
 	CDClipperItem *pItem = NULL;
 	GList *pElement;
@@ -136,10 +138,10 @@
 		myData.pItems = g_list_delete_link (myData.pItems, pElement);
 		myData.iNbItems[pItem->iType] --;
 		
-		if (pItem->iType != iType && myData.iNbItems[iType] == myConfig.iNbItems[iType])
+		if (pItem->iType != iType && myData.iNbItems[iType] >= myConfig.iNbItems[iType])
 		{
 			cd_debug ("Clipper : %s remplace le dernier de l'autre selection", text);
-			pElement = _cd_clipper_get_last_item (iType);
+			pElement = cd_clipper_get_last_item (iType);
 			CD_APPLET_LEAVE_IF_FAIL (pElement != NULL);
 			cd_clipper_free_item (pElement->data);
 			myData.pItems = g_list_delete_link (myData.pItems, pElement);
@@ -152,10 +154,10 @@
 	{
 		bExistingItem = FALSE;
 		cd_debug ("%d items / %d", myData.iNbItems[iType], myConfig.iNbItems[iType]);
-		if (myData.iNbItems[iType] == myConfig.iNbItems[iType])
+		if (myData.iNbItems[iType] >= myConfig.iNbItems[iType])
 		{
 			cd_debug ("Clipper : %s remplace le dernier", text);
-			pElement = _cd_clipper_get_last_item (iType);
+			pElement = cd_clipper_get_last_item (iType);
 			CD_APPLET_LEAVE_IF_FAIL (pElement != NULL);
 			cd_clipper_free_item (pElement->data);
 			myData.pItems = g_list_delete_link (myData.pItems, pElement);
@@ -168,7 +170,7 @@
 		pItem = g_new0 (CDClipperItem, 1);
 		pItem->iType = iType;
 		pItem->cText = g_strdup (text);
-		pItem->cDisplayedText = cairo_dock_cut_string (text, 50);
+		pItem->cDisplayedText = cairo_dock_cut_string (g_strstrip (g_strdup (text)), 50); // g_strstrip: Removes leading and trailing whitespace from a string
 	}
 	myData.pItems = g_list_insert_sorted (myData.pItems, pItem, (GCompareFunc)_cd_clipper_compare_item);
 	myData.iNbItems[pItem->iType] ++;
@@ -613,16 +615,20 @@
 void cd_clipper_load_items (const gchar *cItems)
 {
 	CDClipperItem *pItem;
+	int iClipperItemType = myConfig.bSeparateSelections ? CD_CLIPPER_CLIPBOARD : CD_CLIPPER_BOTH;
 	gchar **cItemList = g_strsplit (cItems, CD_ITEMS_DELIMITER, -1);
 	int i;
 	for (i = 0; cItemList[i] != NULL; i ++)
 	{
+		// if we have reduced the number of items to display
+		if (i == myConfig.iNbItems[iClipperItemType])
+			break;
 		pItem = g_new0 (CDClipperItem, 1);
-		pItem->iType = CD_CLIPPER_CLIPBOARD;
+		pItem->iType = iClipperItemType;
 		pItem->cText = cItemList[i];
-		pItem->cDisplayedText = cairo_dock_cut_string (pItem->cText, 50);
+		pItem->cDisplayedText = cairo_dock_cut_string (g_strstrip (pItem->cText), 50); // g_strstrip: Removes leading and trailing whitespace from a string
 		myData.pItems = g_list_insert_sorted (myData.pItems, pItem, (GCompareFunc)_cd_clipper_compare_item);
-		myData.iNbItems[pItem->iType] ++;
+		myData.iNbItems[iClipperItemType] ++;
 	}
 	g_free (cItemList);
 }

=== modified file 'Clipper/src/applet-clipboard.h'
--- Clipper/src/applet-clipboard.h	2010-08-10 00:05:57 +0000
+++ Clipper/src/applet-clipboard.h	2011-09-26 20:21:33 +0000
@@ -25,6 +25,7 @@
 #include <cairo-dock.h>
 #include "applet-struct.h"
 
+GList *cd_clipper_get_last_item (CDClipperItemType iItemType);
 
 void _on_text_received (GtkClipboard *pClipBoard, const gchar *text, gpointer user_data); // temporairement declaree ici.
 

=== modified file 'Clipper/src/applet-init.c'
--- Clipper/src/applet-init.c	2010-09-07 02:38:17 +0000
+++ Clipper/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -166,5 +166,19 @@
 			g_free (myConfig.cRememberedItems);
 			myConfig.cRememberedItems = NULL;
 		}
+		// if myConfig.iNbItems[X] has decreased...
+		int i;
+		for (i = 0; i < 4; i++)
+		{
+			while (myData.iNbItems[i] > myConfig.iNbItems[i])
+			{
+				GList *pElement = cd_clipper_get_last_item (i);
+				if (pElement == NULL)
+					continue;
+				cd_clipper_free_item (pElement->data);
+				myData.pItems = g_list_delete_link (myData.pItems, pElement);
+				myData.iNbItems[i] --;
+			}
+		}
 	}
 CD_APPLET_RELOAD_END

=== modified file 'Composite-Manager/data/Composite-Manager.conf.in'
--- Composite-Manager/data/Composite-Manager.conf.in	2011-08-09 18:08:08 +0000
+++ Composite-Manager/data/Composite-Manager.conf.in	2011-09-26 20:21:33 +0000
@@ -58,7 +58,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Composite-Manager/src/applet-composite-manager.c'
--- Composite-Manager/src/applet-composite-manager.c	2011-08-09 18:08:08 +0000
+++ Composite-Manager/src/applet-composite-manager.c	2011-09-26 20:21:33 +0000
@@ -171,7 +171,7 @@
 
 static CDWM *_get_prefered_wmc (CDWMIndex iCurrentWm)
 {
-	g_print ("%s (%s, %d)\n", __func__, myConfig.cWmCompositor, iCurrentWm);
+	cd_debug ("%s (%s, %d)", __func__, myConfig.cWmCompositor, iCurrentWm);
 	CDWM *wm;
 	if (myConfig.cWmCompositor != NULL)  // a composite WM is defined.
 	{
@@ -218,7 +218,7 @@
 	for (i = 0; i < NB_COMPOSITE_WM; i ++)
 	{
 		wm = _get_wm_by_index (index[i]);
-		g_print (" %d) %s, %d\n", index[i], wm->cName, wm->bIsAvailable);
+		cd_debug (" %d) %s, %d", index[i], wm->cName, wm->bIsAvailable);
 		if (wm->bIsAvailable)
 			return wm;
 	}
@@ -227,7 +227,7 @@
 
 static CDWM *_get_prefered_wmfb (CDWMIndex iCurrentWm)
 {
-	g_print ("%s (%s, %d)\n", __func__, myConfig.cWmFallback, iCurrentWm);
+	cd_debug ("%s (%s, %d)", __func__, myConfig.cWmFallback, iCurrentWm);
 	CDWM *wm;
 	if (myConfig.cWmFallback != NULL)  // a fallback WM is defined.
 	{
@@ -249,7 +249,7 @@
 		if (!myData.bIsComposited)  // and it is a fallback => let's take it!
 		{
 			wm = _get_wm_by_index (iCurrentWm);
-			g_print ("current wm: %d, %d\n", iCurrentWm, wm->bIsAvailable);
+			cd_debug ("current wm: %d, %d", iCurrentWm, wm->bIsAvailable);
 			if (wm->bIsAvailable)  // just to be sure.
 				return wm;
 		}
@@ -277,7 +277,7 @@
 	for (i = 0; i < NB_FALLBACK_WM; i ++)
 	{
 		wm = _get_wm_by_index (index[i]);
-		g_print ("  %s (%d)\n", wm->cName, wm->bIsAvailable);
+		cd_debug ("  %s (%d)", wm->cName, wm->bIsAvailable);
 		if (wm->bIsAvailable)
 			return wm;
 	}
@@ -294,7 +294,7 @@
 	CDWMIndex iCurrentWm = _check_current_wm (cPs);
 	myData.wmc = _get_prefered_wmc (iCurrentWm);
 	myData.wmfb = _get_prefered_wmfb (iCurrentWm);
-	g_print ("***** WM: %s / %s\n", myData.wmc?myData.wmc->cName:NULL, myData.wmfb?myData.wmfb->cName:NULL);
+	cd_debug ("***** WM: %s / %s", myData.wmc?myData.wmc->cName:NULL, myData.wmfb?myData.wmfb->cName:NULL);
 }
 void cd_define_prefered_wms (void)
 {
@@ -369,7 +369,7 @@
 
 void cd_draw_current_state (void)
 {
-	g_print ("%s (%d)\n", __func__, myData.bIsComposited);
+	cd_debug ("%s (%d)", __func__, myData.bIsComposited);
 	if (myData.bIsComposited)
 		CD_APPLET_SET_USER_IMAGE_ON_MY_ICON (myConfig.cIconCompositeON, "composite-on.png");
 	else

=== modified file 'Dbus/demos/demo_bash/demo_bash.conf'
--- Dbus/demos/demo_bash/demo_bash.conf	2011-04-20 20:46:51 +0000
+++ Dbus/demos/demo_bash/demo_bash.conf	2011-09-26 20:21:33 +0000
@@ -39,7 +39,7 @@
 #b Is detached from the dock ?
 initially detached=false
 #l[Normal;Keep above;Keep below;On Widget Layer;Reserve space] Accessibility :
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops ?
 sticky=true

=== modified file 'Dbus/demos/demo_mono/auto-load.conf'
--- Dbus/demos/demo_mono/auto-load.conf	2010-08-10 00:05:57 +0000
+++ Dbus/demos/demo_mono/auto-load.conf	2011-09-26 20:21:33 +0000
@@ -10,4 +10,4 @@
 category = 5
 
 # Version of the applet; change it everytime you change something in the config file. Don't forget to update the version both in this file and in the config file.
-version = 0.0.2
+version = 0.0.3

=== modified file 'Dbus/demos/demo_mono/demo_mono.conf'
--- Dbus/demos/demo_mono/demo_mono.conf	2011-04-20 20:46:51 +0000
+++ Dbus/demos/demo_mono/demo_mono.conf	2011-09-26 20:21:33 +0000
@@ -1,4 +1,4 @@
-#!en;0.0.2
+#!en;0.0.3
 
 #[gtk-about]
 [Icon]
@@ -39,7 +39,7 @@
 #b Is detached from the dock ?
 initially detached=false
 #l[Normal;Keep above;Keep below;On Widget Layer;Reserve space] Accessibility :
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops ?
 sticky=true
@@ -90,7 +90,7 @@
 #[gtk-preferences]
 [Configuration]
 
-#h+[/usr/share/cairo-dock/gauges;gauges;gauges] Choose one of the available themes :/
+#h+[/usr/share/cairo-dock/gauges;gauges;gauges3] Choose one of the available themes :/
 theme = Turbo-night
 
 #i[10;100] Max value :

=== modified file 'Dbus/demos/demo_python/auto-load.conf'
--- Dbus/demos/demo_python/auto-load.conf	2011-04-20 20:46:51 +0000
+++ Dbus/demos/demo_python/auto-load.conf	2011-09-26 20:21:33 +0000
@@ -10,10 +10,10 @@
 category = 5
 
 # Version of the applet; change it everytime you change something in the config file. Don't forget to update the version both in this file and in the config file.
-version = 0.0.2
+version = 0.0.3
 
 # Default icon to use if no icon has been defined by the user. If not specified, or if the file is not found, the "icon" file will be used.
 icon = 
 
 # Whether the applet can be instanciated several times or not.
-multi-instance = true
\ No newline at end of file
+multi-instance = true

=== modified file 'Dbus/demos/demo_python/demo_python.conf'
--- Dbus/demos/demo_python/demo_python.conf	2011-04-20 20:46:51 +0000
+++ Dbus/demos/demo_python/demo_python.conf	2011-09-26 20:21:33 +0000
@@ -1,4 +1,4 @@
-#!en;0.0.2
+#!en;0.0.3
 
 #[gtk-about]
 [Icon]
@@ -39,7 +39,7 @@
 #b Is detached from the dock ?
 initially detached=false
 #l[Normal;Keep above;Keep below;On Widget Layer;Reserve space] Accessibility :
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops ?
 sticky=true
@@ -90,7 +90,7 @@
 #[gtk-preferences]
 [Configuration]
 
-#h+[/usr/share/cairo-dock/gauges;gauges;gauges] Choose one of the available themes :/
+#h+[/usr/share/cairo-dock/gauges;gauges;gauges3] Choose one of the available themes :/
 theme = Turbo-night
 
 #i[10;100] Max value :

=== modified file 'Dbus/demos/demo_ruby/auto-load.conf'
--- Dbus/demos/demo_ruby/auto-load.conf	2011-04-20 20:46:51 +0000
+++ Dbus/demos/demo_ruby/auto-load.conf	2011-09-26 20:21:33 +0000
@@ -10,7 +10,7 @@
 category = 5
 
 # Version of the applet; change it everytime you change something in the config file. Don't forget to update the version both in this file and in the config file.
-version = 0.0.1
+version = 0.0.2
 
 # Default icon to use if no icon has been defined by the user. If not specified, or if the file is not found, the "icon" file will be used.
 icon = 

=== modified file 'Dbus/demos/demo_ruby/demo_ruby.conf'
--- Dbus/demos/demo_ruby/demo_ruby.conf	2011-04-20 20:46:51 +0000
+++ Dbus/demos/demo_ruby/demo_ruby.conf	2011-09-26 20:21:33 +0000
@@ -1,4 +1,4 @@
-#!en;0.0.1
+#!en;0.0.2
 
 #[gtk-about]
 [Icon]
@@ -39,7 +39,7 @@
 #b Is detached from the dock ?
 initially detached=false
 #l[Normal;Keep above;Keep below;On Widget Layer;Reserve space] Accessibility :
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops ?
 sticky=true
@@ -90,7 +90,7 @@
 #[gtk-preferences]
 [Configuration]
 
-#h+[/usr/share/cairo-dock/gauges;gauges;gauges] Choose one of the available themes :/
+#h+[/usr/share/cairo-dock/gauges;gauges;gauges3] Choose one of the available themes :/
 theme = Turbo-night
 
 #i[10;100] Max value :

=== modified file 'Dbus/demos/demo_vala/auto-load.conf'
--- Dbus/demos/demo_vala/auto-load.conf	2010-08-10 00:05:57 +0000
+++ Dbus/demos/demo_vala/auto-load.conf	2011-09-26 20:21:33 +0000
@@ -10,4 +10,4 @@
 category = 5
 
 # Version of the applet; change it everytime you change something in the config file. Don't forget to update the version both in this file and in the config file.
-version = 0.0.2
+version = 0.0.3

=== modified file 'Dbus/demos/demo_vala/demo_vala.conf'
--- Dbus/demos/demo_vala/demo_vala.conf	2011-08-09 18:08:08 +0000
+++ Dbus/demos/demo_vala/demo_vala.conf	2011-09-26 20:21:33 +0000
@@ -1,4 +1,4 @@
-#!en;0.0.2
+#!en;0.0.3
 
 #[gtk-about]
 [Icon]
@@ -39,7 +39,7 @@
 #b Is detached from the dock ?
 initially detached=false
 #l[Normal;Keep above;Keep below;On Widget Layer;Reserve space] Accessibility :
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops ?
 sticky=true
@@ -90,7 +90,7 @@
 #[gtk-preferences]
 [Configuration]
 
-#h+[/usr/share/cairo-dock/gauges;gauges;gauges] Choose one of the available themes :/
+#h+[/usr/share/cairo-dock/gauges;gauges;gauges3] Choose one of the available themes :/
 theme = Turbo-night
 
 #i[10;100] Max value :

=== modified file 'Dbus/interfaces/bash/CDBashApplet.sh'
--- Dbus/interfaces/bash/CDBashApplet.sh	2011-04-20 20:46:51 +0000
+++ Dbus/interfaces/bash/CDBashApplet.sh	2011-09-26 20:21:33 +0000
@@ -36,11 +36,15 @@
 LEFT=3
 DOCK=0
 DESKLET=1
-UPPER_LEFT=0
-LOWER_RIGHT=1
-LOWER_LEFT=2
-UPPER_RIGHT=3
-MIDDLE=4
+EMBLEM_TOP_LEFT=0
+EMBLEM_BOTTOM_RIGHT=1
+EMBLEM_BOTTOM_LEFT=2
+EMBLEM_TOP_RIGHT=3
+EMBLEM_MIDDLE=4
+EMBLEM_BOTTOM=5
+EMBLEM_TOP=6
+EMBLEM_RIGHT=7
+EMBLEM_LEFT=8
 MENU_ENTRY=0
 MENU_SUB_MENU=1
 MENU_SEPARATOR=2

=== modified file 'Dbus/interfaces/mono/CDApplet.cs'
--- Dbus/interfaces/mono/CDApplet.cs	2011-04-20 20:46:51 +0000
+++ Dbus/interfaces/mono/CDApplet.cs	2011-09-26 20:21:33 +0000
@@ -56,11 +56,15 @@
 		DESKLET
 	}
 	public enum EmblemPosition {
-		UPPER_LEFT = 0,
-		LOWER_RIGHT,
-		LOWER_LEFT,
-		UPPER_RIGHT,
-		MIDDLE
+		EMBLEM_TOP_LEFT = 0,
+		EMBLEM_BOTTOM_RIGHT,
+		EMBLEM_BOTTOM_LEFT,
+		EMBLEM_TOP_RIGHT,
+		EMBLEM_MIDDLE,
+		EMBLEM_BOTTOM,
+		EMBLEM_TOP,
+		EMBLEM_RIGHT,
+		EMBLEM_LEFT
 	}
 	public enum MenuItemType {
 		MENU_ENTRY = 0,

=== modified file 'Dbus/interfaces/python/CDApplet.py'
--- Dbus/interfaces/python/CDApplet.py	2011-08-09 18:08:08 +0000
+++ Dbus/interfaces/python/CDApplet.py	2011-09-26 20:21:33 +0000
@@ -56,11 +56,15 @@
 	DOCK    = 0
 	DESKLET = 1
 	# emblem position
-	UPPER_LEFT  = 0
-	LOWER_RIGHT = 1
-	LOWER_LEFT  = 2
-	UPPER_RIGHT = 3
-	MIDDLE      = 4
+	EMBLEM_TOP_LEFT     = 0
+	EMBLEM_BOTTOM_RIGHT = 1
+	EMBLEM_BOTTOM_LEFT  = 2
+	EMBLEM_TOP_RIGHT    = 3
+	EMBLEM_MIDDLE       = 4
+	EMBLEM_BOTTOM       = 5
+	EMBLEM_TOP          = 6
+	EMBLEM_RIGHT        = 7
+	EMBLEM_LEFT         = 8
 	# menu item types
 	MENU_ENTRY        = 0
 	MENU_SUB_MENU     = 1

=== modified file 'Dbus/interfaces/python/CairoDock.py'
--- Dbus/interfaces/python/CairoDock.py	2011-08-09 18:08:08 +0000
+++ Dbus/interfaces/python/CairoDock.py	2011-09-26 20:21:33 +0000
@@ -42,11 +42,15 @@
 	DOCK    = "Dock"
 	DESKLET = "Desklet"
 	# emblem position
-	UPPER_LEFT  = 0
-	LOWER_RIGHT = 1
-	LOWER_LEFT  = 2
-	UPPER_RIGHT = 3
-	MIDDLE      = 4
+	EMBLEM_TOP_LEFT     = 0
+	EMBLEM_BOTTOM_RIGHT = 1
+	EMBLEM_BOTTOM_LEFT  = 2
+	EMBLEM_TOP_RIGHT    = 3
+	EMBLEM_MIDDLE       = 4
+	EMBLEM_BOTTOM       = 5
+	EMBLEM_TOP          = 6
+	EMBLEM_RIGHT        = 7
+	EMBLEM_LEFT         = 8
 	# module category
 	CATEGORY_BEHAVIOR         = 0
 	CATEGORY_THEME            = 1

=== modified file 'Dbus/interfaces/ruby/CDApplet.rb'
--- Dbus/interfaces/ruby/CDApplet.rb	2011-04-20 20:46:51 +0000
+++ Dbus/interfaces/ruby/CDApplet.rb	2011-09-26 20:21:33 +0000
@@ -35,11 +35,15 @@
 	DOCK    = 0
 	DESKLET = 1
 	
-	UPPER_LEFT  = 0
-	LOWER_RIGHT = 1
-	LOWER_LEFT  = 2
-	UPPER_RIGHT = 3
-	MIDDLE      = 4
+	EMBLEM_TOP_LEFT     = 0
+	EMBLEM_BOTTOM_RIGHT = 1
+	EMBLEM_BOTTOM_LEFT  = 2
+	EMBLEM_TOP_RIGHT    = 3
+	EMBLEM_MIDDLE       = 4
+	EMBLEM_BOTTOM       = 5
+	EMBLEM_TOP          = 6
+	EMBLEM_RIGHT        = 7
+	EMBLEM_LEFT         = 8
 	
 	MENU_ENTRY        = 0
 	MENU_SUB_MENU     = 1

=== modified file 'Dbus/interfaces/vala/CDApplet.vala'
--- Dbus/interfaces/vala/CDApplet.vala	2011-04-20 20:46:51 +0000
+++ Dbus/interfaces/vala/CDApplet.vala	2011-09-26 20:21:33 +0000
@@ -97,11 +97,15 @@
 		DESKLET
 	}
 	public enum EmblemPosition {
-		UPPER_LEFT = 0,
-		LOWER_RIGHT,
-		LOWER_LEFT,
-		UPPER_RIGHT,
-		MIDDLE
+		EMBLEM_TOP_LEFT = 0,
+		EMBLEM_BOTTOM_RIGHT,
+		EMBLEM_BOTTOM_LEFT,
+		EMBLEM_TOP_RIGHT,
+		EMBLEM_MIDDLE,
+		EMBLEM_BOTTOM,
+		EMBLEM_TOP,
+		EMBLEM_RIGHT,
+		EMBLEM_LEFT
 	}
 	public enum MenuItemType {
 		MENU_ENTRY = 0,
@@ -254,10 +258,10 @@
 	}
 	private void _on_reload(bool bConfigHasChanged)
 	{
-		print (">>> our module is reloaded");
+		print (">>> our module is reloaded\n");
 		if (bConfigHasChanged)
 		{
-			print (">>>  and our config has changed");
+			print (">>>  and our config has changed\n");
 			this._get_config();
 			this.reload();
 		}
@@ -294,7 +298,7 @@
 		}
 		catch (IOError e)
 		{
-			GLib.error (">>> module '%s' can't be found on the bus, exit.\nError was: %s", this.cAppletName, e.message);
+			GLib.error (">>> module '%s' can't be found on the bus, exit.\nError was: %s\n", this.cAppletName, e.message);
 		}
 		try
 		{
@@ -304,7 +308,7 @@
 		}
 		catch (IOError e)
 		{
-			GLib.error (">>> module '%s' can't be found on the bus, exit.\nError was: %s", this.cAppletName, e.message);
+			GLib.error (">>> module '%s' can't be found on the bus, exit.\nError was: %s\n", this.cAppletName, e.message);
 		}
 		this.icon.on_click.connect(on_click);  // when the user left-clicks on our icon.
 		this.icon.on_middle_click.connect(on_middle_click);  // when the user middle-clicks on our icon.

=== modified file 'Dbus/interfaces/vala/src/CDApplet.h'
--- Dbus/interfaces/vala/src/CDApplet.h	2011-04-20 20:46:51 +0000
+++ Dbus/interfaces/vala/src/CDApplet.h	2011-09-26 20:21:33 +0000
@@ -138,11 +138,15 @@
 } CairoDockAppletCDAppletContainerType;
 
 typedef enum  {
-	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_LEFT = 0,
-	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_RIGHT,
-	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_LOWER_LEFT,
-	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_UPPER_RIGHT,
-	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_MIDDLE
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_TOP_LEFT = 0,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_BOTTOM_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_BOTTOM_LEFT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_TOP_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_MIDDLE,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_BOTTOM,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_TOP,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_RIGHT,
+	CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_EMBLEM_LEFT
 } CairoDockAppletCDAppletEmblemPosition;
 
 typedef enum  {

=== modified file 'Dbus/interfaces/vala/src/CDApplet.vapi'
--- Dbus/interfaces/vala/src/CDApplet.vapi	2011-04-20 20:46:51 +0000
+++ Dbus/interfaces/vala/src/CDApplet.vapi	2011-09-26 20:21:33 +0000
@@ -18,11 +18,15 @@
 			}
 			[CCode (cprefix = "CAIRO_DOCK_APPLET_CD_APPLET_EMBLEM_POSITION_", cheader_filename = "CDApplet.h")]
 			public enum EmblemPosition {
-				UPPER_LEFT,
-				LOWER_RIGHT,
-				LOWER_LEFT,
-				UPPER_RIGHT,
-				MIDDLE
+				EMBLEM_TOP_LEFT,
+				EMBLEM_BOTTOM_RIGHT,
+				EMBLEM_BOTTOM_LEFT,
+				EMBLEM_TOP_RIGHT,
+				EMBLEM_MIDDLE,
+				EMBLEM_BOTTOM,
+				EMBLEM_TOP,
+				EMBLEM_RIGHT,
+				EMBLEM_LEFT
 			}
 			[CCode (cprefix = "CAIRO_DOCK_APPLET_CD_APPLET_MENU_ITEM_ID_", cheader_filename = "CDApplet.h")]
 			public enum MenuItemId {

=== modified file 'Dbus/src/applet-struct.h'
--- Dbus/src/applet-struct.h	2011-04-20 20:46:51 +0000
+++ Dbus/src/applet-struct.h	2011-09-26 20:21:33 +0000
@@ -105,7 +105,6 @@
 	dbusMainObject *pMainObject;
 	const gchar *cProgName;
 	gchar *cBasePath;
-	GList *pAppletList;
 	GtkWidget *pModuleSubMenu;
 	GtkWidget *pModuleMainMenu;
 	dbusApplet *pCurrentMenuDbusApplet;

=== modified file 'Dbus/src/interface-applet-methods.c'
--- Dbus/src/interface-applet-methods.c	2011-08-09 18:08:08 +0000
+++ Dbus/src/interface-applet-methods.c	2011-09-26 20:21:33 +0000
@@ -131,10 +131,18 @@
 	
 	g_return_val_if_fail (pIcon->pIconBuffer != NULL, FALSE);
 	
-	CairoEmblem *pEmblem = cairo_dock_make_emblem (cImage, pIcon, pContainer);
+	if (cImage == NULL || *cImage == '\0' || strcmp (cImage, "none") == 0)
+	{
+		cairo_dock_remove_overlay_at_position (pIcon, iPosition);
+	}
+	else
+	{
+		cairo_dock_add_overlay_from_image (pIcon, cImage, iPosition);
+	}
+	/**CairoEmblem *pEmblem = cairo_dock_make_emblem (cImage, pIcon);
 	pEmblem->iPosition = iPosition;
 	cairo_dock_draw_emblem_on_icon (pEmblem, pIcon, pContainer);
-	cairo_dock_free_emblem (pEmblem);
+	cairo_dock_free_emblem (pEmblem);*/
 	
 	cairo_dock_redraw_icon (pIcon, pContainer);
 	return TRUE;
@@ -371,7 +379,7 @@
 					}
 					if (iNbCharsMax != 0)
 					{
-						gchar *cLabel = g_strdup_printf ("<b>%d</b>", cInitialText ? strlen (cInitialText) : 0);
+						gchar *cLabel = g_strdup_printf ("<b>%ld</b>", cInitialText ? strlen (cInitialText) : 0);
 						GtkWidget *pLabel = gtk_label_new (cLabel);
 						g_free (cLabel);
 						gtk_label_set_use_markup (GTK_LABEL (pLabel), TRUE);
@@ -842,7 +850,9 @@
 		memset (&attr, 0, sizeof (CairoGraphAttribute));
 		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
 		pRenderAttr->cModelName = "graph";
-		pRenderAttr->iMemorySize = (pIcon->fWidth > 1 ? pIcon->fWidth : 32);  // fWidht peut etre <= 1 en mode desklet au chargement.
+		int w, h;
+		cairo_dock_get_icon_extent (pIcon, &w, &h);
+		pRenderAttr->iMemorySize = (w > 1 ? w : 32);
 		// Line;Plain;Bar;Circle;Plain Circle
 		if (cTheme == NULL || strcmp (cTheme, "Line") == 0)
 			attr.iType = CAIRO_DOCK_GRAPH_LINE;
@@ -854,7 +864,6 @@
 			attr.iType = CAIRO_DOCK_GRAPH_CIRCLE;
 		else if (strcmp (cTheme, "Plain Circle") == 0)
 			attr.iType = CAIRO_DOCK_GRAPH_CIRCLE_PLAIN;
-		attr.iRadius = 10;
 		attr.bMixGraphs = FALSE;
 		double *fHighColor = g_new (double, iNbValues*3);
 		double *fLowColor = g_new (double, iNbValues*3);
@@ -1286,7 +1295,7 @@
 	else if (strcmp (cProperty, "width") == 0)
 	{
 		int iWidth, iHeight;
-		cairo_dock_get_icon_extent (pIcon, pContainer, &iWidth, &iHeight);
+		cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 		if (pInstance->pDock)
 		{
 			double a = cairo_dock_get_max_scale (pContainer);
@@ -1299,7 +1308,7 @@
 	else if (strcmp (cProperty, "height") == 0)
 	{
 		int iWidth, iHeight;
-		cairo_dock_get_icon_extent (pIcon, pContainer, &iWidth, &iHeight);
+		cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 		if (pInstance->pDock)
 		{
 			double a = cairo_dock_get_max_scale (pContainer);
@@ -1354,7 +1363,7 @@
 	}
 	CairoDockPositionType iScreenBorder = ((! pContainer->bIsHorizontal) << 1) | (! pContainer->bDirectionUp);
 	int iWidth, iHeight;
-	cairo_dock_get_icon_extent (pIcon, pContainer, &iWidth, &iHeight);
+	cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 	if (pInstance->pDock)
 	{
 		double a = cairo_dock_get_max_scale (pContainer);

=== modified file 'Dbus/src/interface-applet-object.c'
--- Dbus/src/interface-applet-object.c	2011-04-20 20:46:51 +0000
+++ Dbus/src/interface-applet-object.c	2011-09-26 20:21:33 +0000
@@ -29,6 +29,7 @@
 #include "interface-applet-object.h"
 
 static int s_iModuleId = 1;
+static GList *s_pAppletList = NULL;
 
 static void cd_dbus_applet_dispose (GObject *object);
 static void cd_dbus_applet_finalize (GObject *object);
@@ -93,7 +94,7 @@
 {
 	dbusApplet *pDbusApplet = NULL;
 	GList *a;
-	for (a = myData.pAppletList; a != NULL; a = a->next)
+	for (a = s_pAppletList; a != NULL; a = a->next)
 	{
 		pDbusApplet = a->data;
 		if (pDbusApplet->pModuleInstance == pModuleInstance)
@@ -103,7 +104,7 @@
 }
 
 
-#define _applet_list_is_empty() (myData.pAppletList == NULL)
+#define _applet_list_is_empty() (s_pAppletList == NULL)
 
 dbusApplet *cd_dbus_create_remote_applet_object (CairoDockModuleInstance *pModuleInstance)
 {
@@ -182,13 +183,13 @@
 		myData.xActiveWindow = cairo_dock_get_current_active_window ();
 	}
 	
-	myData.pAppletList = g_list_prepend (myData.pAppletList, pDbusApplet);
+	s_pAppletList = g_list_prepend (s_pAppletList, pDbusApplet);
 	return pDbusApplet;
 }
 
 void cd_dbus_delete_remote_applet_object (dbusApplet *pDbusApplet)
 {
-	myData.pAppletList = g_list_remove (myData.pAppletList, pDbusApplet);
+	s_pAppletList = g_list_remove (s_pAppletList, pDbusApplet);
 	
 	if (_applet_list_is_empty ())  // si plus d'applet dbus, inutile de garder les notifications actives.
 	{

=== modified file 'Dbus/src/interface-applet-signals.c'
--- Dbus/src/interface-applet-signals.c	2011-08-09 18:08:08 +0000
+++ Dbus/src/interface-applet-signals.c	2011-09-26 20:21:33 +0000
@@ -258,7 +258,7 @@
 	}
 }
 
-#define CAIRO_DOCK_IS_EXTERNAL_APPLET(pIcon) (CAIRO_DOCK_IS_APPLET (pIcon) && pIcon->pModuleInstance->pModule->cSoFilePath == NULL)
+#define CAIRO_DOCK_IS_EXTERNAL_APPLET(pIcon) (CAIRO_DOCK_IS_APPLET (pIcon) && pIcon->pModuleInstance->pModule->cSoFilePath == NULL && pIcon->pModuleInstance->pModule->pInterface->stopModule == cd_dbus_emit_on_stop_module)
 
 static inline Icon *_get_main_icon_from_clicked_icon (Icon *pIcon, CairoContainer *pContainer)
 {

=== modified file 'Dbus/src/interface-main-methods.c'
--- Dbus/src/interface-main-methods.c	2011-08-09 18:08:08 +0000
+++ Dbus/src/interface-main-methods.c	2011-09-26 20:21:33 +0000
@@ -777,7 +777,7 @@
 	g_value_set_boolean (v, pModule->pVisitCard->bMultiInstance);
 	g_hash_table_insert (h, g_strdup ("is-multi-instance"), v);
 	
-	g_print ("list instances ...\n");
+	cd_debug ("list instances ...");
 	gchar **pInstances = g_new0 (gchar*, g_list_length (pModule->pInstancesList)+1);
 	CairoDockModuleInstance *pInstance;
 	int i = 0;
@@ -787,12 +787,12 @@
 		pInstance = mi->data;
 		pInstances[i++] = g_strdup (pInstance->cConfFilePath);
 	}
-	g_print ("write instances ...\n");
+	cd_debug ("write instances ...");
 	v = g_new0 (GValue, 1);
 	g_value_init (v, G_TYPE_STRV);
 	g_value_set_boxed (v, pInstances);
 	g_hash_table_insert (h, g_strdup ("instances"), v);
-	g_print ("done.\n");
+	cd_debug ("done.");
 	return TRUE;  // continue
 }
 gboolean cd_dbus_main_get_module_properties (dbusMainObject *pDbusCallback, const gchar *cName, GPtrArray **pAttributes, GError **error)
@@ -1013,7 +1013,7 @@
 			NULL,
 			fOrder);
 		pIcon->iTrueType = CAIRO_DOCK_ICON_TYPE_CONTAINER;
-		pIcon->iSubdockViewType = iSubdockViewType;
+		cairo_dock_set_subdock_content_renderer (pIcon, iSubdockViewType);
 		pIcon->pSubDock = cairo_dock_create_subdock_from_scratch (NULL, pIcon->cName, pParentDock);  // NULL <=> default sub-docks view.
 	}
 	else if (strcmp (cType, "Separator") == 0)
@@ -1281,14 +1281,22 @@
 		if (pContainer == NULL)
 			continue;
 		
-		cairo_t *pIconContext = cairo_create (pIcon->pIconBuffer);
-	
-		CairoEmblem *pEmblem = cairo_dock_make_emblem (cImage, pIcon, pContainer);
+		if (cImage == NULL || *cImage == '\0' || strcmp (cImage, "none") == 0)
+		{
+			cairo_dock_remove_overlay_at_position (pIcon, iPosition);
+		}
+		else
+		{
+			if (iPosition < 0)  // [-N, -1]
+				cairo_dock_print_overlay_on_icon (pIcon, pContainer, cImage, - iPosition - 1);
+			else  // [0, N-1]
+				cairo_dock_add_overlay_from_image (pIcon, cImage, iPosition);
+		}
+		/**CairoEmblem *pEmblem = cairo_dock_make_emblem (cImage, pIcon);
 		pEmblem->iPosition = iPosition;
 		cairo_dock_draw_emblem_on_icon (pEmblem, pIcon, pContainer);
-		cairo_dock_free_emblem (pEmblem);
+		cairo_dock_free_emblem (pEmblem);*/
 
-		cairo_destroy (pIconContext);
 		cairo_dock_redraw_icon (pIcon, pContainer);
 	}
 	

=== modified file 'Disks/data/Disks.conf.in'
--- Disks/data/Disks.conf.in	2011-08-09 18:08:08 +0000
+++ Disks/data/Disks.conf.in	2011-09-26 20:21:33 +0000
@@ -42,7 +42,7 @@
 size = 96;96
 
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 
 #b Should be visible on all desktops?
@@ -116,9 +116,12 @@
 #X[Gauge;gtk-dialog-info]
 frame_gauge=
 
-#h+[@gaugesdir@;gauges;gauges] Choose one of the available themes:/
+#h+[@gaugesdir@;gauges;gauges3] Choose one of the available themes:/
 theme = Turbo-night-fuel
 
+#l+[No;With dock orientation;Yes] Rotate applet theme :
+rotate theme = No
+
 
 #X[Graph;gtk-dialog-info]
 frame_graph=

=== modified file 'Disks/src/applet-config.c'
--- Disks/src/applet-config.c	2011-08-09 18:08:08 +0000
+++ Disks/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -35,6 +35,7 @@
 
 	///\_________________ Gauge
 	myConfig.cGThemePath = CD_CONFIG_GET_GAUGE_THEME ("Configuration", "theme");
+	myConfig.iRotateTheme = CD_CONFIG_GET_INTEGER ("Configuration", "rotate theme");
 		
 	///\_________________ Graph
 	myConfig.iGraphType = CD_CONFIG_GET_INTEGER ("Configuration", "graphic type");

=== modified file 'Disks/src/applet-disks.c'
--- Disks/src/applet-disks.c	2011-08-09 18:08:08 +0000
+++ Disks/src/applet-disks.c	2011-09-26 20:21:33 +0000
@@ -331,6 +331,7 @@
 		g_list_free_full (myData.lParts, g_free);
 #else
 		g_list_foreach (myData.lParts, (GFunc) _reset_parts_list, NULL);
+		g_list_free (myData.lParts);
 #endif
 		myData.lParts = NULL;
 	}

=== modified file 'Disks/src/applet-init.c'
--- Disks/src/applet-init.c	2011-08-09 18:08:08 +0000
+++ Disks/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -67,6 +67,7 @@
 		memset (&attr, 0, sizeof (CairoGaugeAttribute));
 		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
 		pRenderAttr->cModelName = "gauge";
+		pRenderAttr->iRotateTheme = myConfig.iRotateTheme;
 		attr.cThemePath = myConfig.cGThemePath;
 	}
 	else if (myConfig.iDisplayType == CD_DISKS_GRAPH)
@@ -75,7 +76,7 @@
 		memset (&attr, 0, sizeof (CairoGraphAttribute));
 		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
 		pRenderAttr->cModelName = "graph";
-		pRenderAttr->iMemorySize = (myIcon->fWidth > 1 ? myIcon->fWidth : 32);  // fWidht peut etre <= 1 en mode desklet au chargement.
+		pRenderAttr->iMemorySize = (myIcon->fWidth > 1 ? myIcon->fWidth : 32);  // fWidth peut etre <= 1 en mode desklet au chargement.
 		attr.iType = myConfig.iGraphType;
 		attr.iRadius = 10;
 		attr.bMixGraphs = myConfig.bMixGraph;
@@ -202,7 +203,10 @@
 		}
 		if (myConfig.iInfoDisplay != CAIRO_DOCK_INFO_ON_LABEL)
 		{
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			if (myConfig.defaultTitle) // has another default name
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			else
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
 		}
 		
 		cairo_dock_relaunch_task_immediately (myData.pPeriodicTask, myConfig.iCheckInterval);

=== modified file 'Disks/src/applet-struct.h'
--- Disks/src/applet-struct.h	2011-08-09 18:08:08 +0000
+++ Disks/src/applet-struct.h	2011-09-26 20:21:33 +0000
@@ -47,6 +47,7 @@
 struct _AppletConfig {
 	gchar *defaultTitle;
 	gchar *cGThemePath;
+	RendererRotateTheme iRotateTheme;
 	gchar *cWatermarkImagePath;  // delete ?
 	gdouble fAlpha;
 	

=== modified file 'Doncky/data/Doncky.conf.in'
--- Doncky/data/Doncky.conf.in	2011-08-09 18:08:08 +0000
+++ Doncky/data/Doncky.conf.in	2011-09-26 20:21:33 +0000
@@ -54,7 +54,7 @@
 #b Is detached from the dock
 initially detached=true
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Folders/data/CMakeLists.txt'
--- Folders/data/CMakeLists.txt	2010-08-10 00:05:57 +0000
+++ Folders/data/CMakeLists.txt	2011-09-26 20:21:33 +0000
@@ -5,6 +5,6 @@
 
 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/Folders.conf
 	preview.jpg
-	icon.svg
+	icon.png
 	DESTINATION ${foldersdatadir})
 

=== modified file 'Folders/data/Folders.conf.in'
--- Folders/data/Folders.conf.in	2011-08-09 18:08:08 +0000
+++ Folders/data/Folders.conf.in	2011-09-26 20:21:33 +0000
@@ -66,7 +66,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Folders/data/icon.png' (properties changed: +x to -x)
Binary files Folders/data/icon.png	2010-08-10 00:05:57 +0000 and Folders/data/icon.png	2011-09-26 20:21:33 +0000 differ
=== removed file 'Folders/data/icon.svg'
--- Folders/data/icon.svg	2010-08-10 00:05:57 +0000
+++ Folders/data/icon.svg	1970-01-01 00:00:00 +0000
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd";>
-<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="128.00000pt" id="svg1" inkscape:version="0.39cvs" sodipodi:docbase="/home/andy/Desktop/etiquette-icons-0.4/scalable/filesystems" sodipodi:docname="gnome-fs-home.svg" sodipodi:version="0.32" width="128.00000pt" xmlns="http://www.w3.org/2000/svg"; xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"; xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"; xmlns:xlink="http://www.w3.org/1999/xlink";>
-  <metadata>
-    <rdf:RDF xmlns:cc="http://web.resource.org/cc/"; xmlns:dc="http://purl.org/dc/elements/1.1/"; xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";>
-      <cc:Work rdf:about="">
-        <dc:title>Etiquette Icons</dc:title>
-        <dc:description></dc:description>
-        <dc:subject>
-          <rdf:Bag>
-            <rdf:li>hash</rdf:li>
-            <rdf:li></rdf:li>
-            <rdf:li>filesystem</rdf:li>
-            <rdf:li>computer</rdf:li>
-            <rdf:li>icons</rdf:li>
-            <rdf:li>folder</rdf:li>
-          </rdf:Bag>
-        </dc:subject>
-        <dc:publisher>
-          <cc:Agent rdf:about="http://www.openclipart.org";>
-            <dc:title>Andy Fitzsimon</dc:title>
-          </cc:Agent>
-        </dc:publisher>
-        <dc:creator>
-          <cc:Agent>
-            <dc:title>Andy Fitzsimon</dc:title>
-          </cc:Agent>
-        </dc:creator>
-        <dc:rights>
-          <cc:Agent>
-            <dc:title>Andy Fitzsimon</dc:title>
-          </cc:Agent>
-        </dc:rights>
-        <dc:date></dc:date>
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
-        <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
-        <dc:language>en</dc:language>
-      </cc:Work>
-      <cc:License rdf:about="http://web.resource.org/cc/PublicDomain";>
-        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
-        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
-        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
-      </cc:License>
-    </rdf:RDF>
-  </metadata>
-  <defs id="defs3">
-    <linearGradient id="linearGradient2102">
-      <stop id="stop2103" offset="0.0000000" style="stop-color:#bab5ab;stop-opacity:1.0000000;"/>
-      <stop id="stop2104" offset="1.0000000" style="stop-color:#eae8e3;stop-opacity:1.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1520">
-      <stop id="stop1522" offset="0.0000000" style="stop-color:#7590ae;stop-opacity:1.0000000;"/>
-      <stop id="stop1523" offset="1.0000000" style="stop-color:#314e6c;stop-opacity:1.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1806">
-      <stop id="stop1807" offset="0.0000000" style="stop-color:#000000;stop-opacity:0.40677965;"/>
-      <stop id="stop3276" offset="0.64777780" style="stop-color:#000000;stop-opacity:0.073446326;"/>
-      <stop id="stop1808" offset="1.0000000" style="stop-color:#000000;stop-opacity:0.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1517">
-      <stop id="stop1518" offset="0.0000000" style="stop-color:#ffffff;stop-opacity:0.0000000;"/>
-      <stop id="stop1519" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1504">
-      <stop id="stop1505" offset="0.0000000" style="stop-color:#a3a3a3;stop-opacity:1.0000000;"/>
-      <stop id="stop1506" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1792">
-      <stop id="stop1793" offset="0.0000000" style="stop-color:#000000;stop-opacity:0.084745765;"/>
-      <stop id="stop1795" offset="0.63222224" style="stop-color:#000000;stop-opacity:0.38418078;"/>
-      <stop id="stop1794" offset="1.0000000" style="stop-color:#000000;stop-opacity:0.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1511">
-      <stop id="stop1512" offset="0.0000000" style="stop-color:#4b6983;stop-opacity:1.0000000;"/>
-      <stop id="stop1513" offset="1.0000000" style="stop-color:#9db8d2;stop-opacity:1.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1501">
-      <stop id="stop1502" offset="0.0000000" style="stop-color:#ffffff;stop-opacity:1.0000000;"/>
-      <stop id="stop1504" offset="1.0000000" style="stop-color:#ffffff;stop-opacity:0.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1499" x1="0.85826772" x2="0.062992126" xlink:href="#linearGradient1501" y1="0.14062500" y2="0.54687500"/>
-    <linearGradient id="linearGradient1492">
-      <stop id="stop1493" offset="0.0000000" style="stop-color:#c0c0c0;stop-opacity:1.0000000;"/>
-      <stop id="stop1496" offset="0.34923077" style="stop-color:#f1f1f1;stop-opacity:1.0000000;"/>
-      <stop id="stop1494" offset="1.0000000" style="stop-color:#f0f0f0;stop-opacity:1.0000000;"/>
-    </linearGradient>
-    <linearGradient id="linearGradient1495" x1="0.88034189" x2="0.085470088" xlink:href="#linearGradient1492" y1="0.21093750" y2="1.1796875"/>
-    <linearGradient id="linearGradient1506" x1="0.68278474" x2="0.68278474" xlink:href="#linearGradient2102" y1="0.18663210" y2="1.0092229"/>
-    <radialGradient cx="0.49032259" cy="0.50649351" fx="0.50977784" fy="0.15800871" id="radialGradient1505" r="0.46014288" xlink:href="#linearGradient1806"/>
-    <radialGradient cx="0.49032259" cy="0.50649351" fx="0.49027237" fy="0.095238097" id="radialGradient1502" r="0.46014288" xlink:href="#linearGradient1806"/>
-    <linearGradient id="linearGradient1518">
-      <stop id="stop1520" offset="0.0000000" style="stop-color:#000000;stop-opacity:1.0000000;"/>
-      <stop id="stop1521" offset="1.0000000" style="stop-color:#ebebeb;stop-opacity:1.0000000;"/>
-    </linearGradient>
-    <linearGradient gradientTransform="scale(1.385990,0.721506)" gradientUnits="userSpaceOnUse" id="linearGradient1507" x1="68.708969" x2="68.708969" xlink:href="#linearGradient1511" y1="111.90047" y2="191.01146"/>
-    <linearGradient id="linearGradient1510" x1="0.55371535" x2="0.48209488" xlink:href="#linearGradient1806" y1="0.27680120" y2="1.4089690"/>
-    <linearGradient id="linearGradient1514" x1="0.49707603" x2="0.49707603" xlink:href="#linearGradient1520" y1="0.053910151" y2="0.40625000"/>
-    <radialGradient id="radialGradient1515" xlink:href="#linearGradient1511"/>
-    <linearGradient id="linearGradient1516" x1="0.51567942" x2="0.53310102" xlink:href="#linearGradient1517" y1="0.76666665" y2="-0.10000000"/>
-    <linearGradient id="linearGradient1521" xlink:href="#linearGradient1792"/>
-    <radialGradient cx="0.50522649" cy="0.54545456" fx="0.50871080" fy="0.26136363" id="radialGradient1950" r="0.38421080" xlink:href="#linearGradient1792"/>
-    <linearGradient id="linearGradient1522" xlink:href="#linearGradient1518"/>
-    <linearGradient id="linearGradient1599" xlink:href="#linearGradient1792"/>
-    <linearGradient id="linearGradient2352" x1="0.50522649" x2="0.50522649" xlink:href="#linearGradient1792" y1="1.8974513" y2="0.32051283"/>
-    <linearGradient id="linearGradient1497" xlink:href="#linearGradient1492"/>
-  </defs>
-  <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" gridspacingx="2.5000000mm" gridspacingy="2.5000000mm" id="base" inkscape:cx="156.35533" inkscape:cy="126.76260" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="501" inkscape:window-width="599" inkscape:window-x="265" inkscape:window-y="122" inkscape:zoom="1.2011993" pagecolor="#ffffff" showgrid="false" snaptogrid="false"/>
-  <g id="g1621" style="fill:#ffffff;fill-opacity:0.20430107;" transform="matrix(1.056550,0.000000,0.000000,1.056550,-132.2439,88.48814)">
-    <path d="M 158.06250,-77.656250 C 150.33842,-77.636797 145.44083,-69.199281 146.50263,-62.129272 C 146.31518,-52.347100 146.19816,-42.563767 146.03125,-32.781250 C 138.77736,-30.499103 134.85098,-22.678344 135.57329,-15.403545 C 136.11802,-3.9029094 138.14866,7.4720113 139.48318,18.898801 C 140.44347,23.963266 140.47980,29.388446 142.56319,34.132790 C 145.86543,39.628238 152.90598,40.529305 158.71739,39.905842 C 191.41553,40.062947 224.11447,40.054030 256.81250,39.875000 C 263.43388,36.980208 264.71813,29.043726 265.34933,22.646580 C 267.37683,9.1198459 269.91467,-4.3342879 271.45758,-17.930690 C 272.16212,-25.113770 265.70267,-29.565231 262.06495,-33.893679 C 261.15574,-40.218455 262.05399,-46.652921 261.36659,-53.015204 C 261.21848,-57.975877 260.14178,-64.521742 254.20179,-65.459786 C 248.53755,-66.553586 242.71560,-65.584010 236.98918,-66.020283 C 228.39904,-66.107275 219.80889,-66.194261 211.21875,-66.281250 C 205.29983,-69.099380 203.03646,-77.639836 195.72328,-77.801518 C 183.17051,-77.714934 170.61219,-78.111226 158.06250,-77.656250 z " id="path1559" style="fill-rule:evenodd;stroke-width:1.2500000;stroke-opacity:0.33962265;fill:#ffffff;fill-opacity:0.20430107;"/>
-    <path d="M 159.18750,-80.218750 C 150.48428,-80.838790 144.00999,-72.453178 144.11020,-64.254369 C 143.11939,-55.185354 144.07536,-45.992549 143.13363,-36.949168 C 138.04231,-29.926366 131.27934,-22.686941 133.07476,-12.723316 C 134.58995,2.5737368 136.91553,17.787633 138.90625,33.031250 C 142.42615,40.907408 151.49988,43.202015 159.36983,42.121944 C 192.40096,42.492716 225.43715,42.739921 258.46875,42.281250 C 268.88857,35.112424 267.93871,21.299242 270.00049,10.231906 C 271.27288,0.13302302 273.18321,-9.9475589 274.00945,-20.064209 C 273.34232,-28.182409 263.86174,-32.418893 264.47218,-40.850023 C 263.32975,-48.961625 265.74021,-59.212401 259.49201,-65.446312 C 251.23151,-70.897196 240.86542,-68.061580 231.59153,-68.904519 C 224.70096,-69.921717 216.33317,-67.112713 210.48638,-70.821698 C 205.17991,-76.745140 198.04305,-81.781910 189.67793,-80.269272 C 179.51446,-80.252431 169.35098,-80.235590 159.18750,-80.218750 z " id="path1573" style="fill-rule:evenodd;stroke-width:1.2500000;stroke-opacity:0.33962265;fill:#ffffff;fill-opacity:0.20430107;"/>
-    <path d="M 156.93750,-83.562500 C 148.47071,-82.628394 142.18560,-74.798771 141.31127,-66.614619 C 139.07719,-56.752443 141.26926,-46.463541 138.85705,-36.626083 C 134.93015,-31.182966 129.58151,-25.850344 130.46544,-18.524671 C 129.41574,-1.3542399 133.74672,15.485198 135.37623,32.475224 C 137.36469,40.898949 146.69001,45.462856 154.80951,45.128239 C 189.72134,45.756729 224.65378,45.974423 259.56595,45.137760 C 266.07960,42.104129 268.38738,34.444245 270.55919,28.161738 C 273.09625,17.158816 273.74056,5.8327491 275.69048,-5.2771292 C 276.35213,-10.552361 277.59576,-15.859126 277.51471,-21.164194 C 275.70845,-28.558585 268.28594,-33.767452 268.63587,-41.841151 C 267.68176,-49.393992 266.59069,-56.934002 265.12500,-64.406250 C 259.46495,-71.651339 249.49887,-72.170690 241.05096,-72.017609 C 232.16938,-72.365906 223.28782,-72.714204 214.40625,-73.062500 C 207.47201,-78.235969 199.93554,-84.650382 190.64723,-83.525120 C 179.41274,-83.790111 168.17272,-83.774900 156.93750,-83.562500 z " id="path1598" style="fill-rule:evenodd;stroke-width:1.2500000;stroke-opacity:0.33962265;fill:#ffffff;fill-opacity:0.20430107;"/>
-    <path d="M 159.46272,-75.628403 C 153.85497,-76.048570 148.97039,-71.364778 148.62954,-65.851779 C 148.25942,-55.724937 148.56005,-45.569167 148.46272,-35.430609 C 148.46272,-33.631955 148.46272,-31.833305 148.46272,-30.034653 C 143.53163,-30.746685 139.41403,-26.674828 138.27616,-22.143527 C 136.47571,-16.039411 138.47800,-9.7664554 138.93438,-3.6075384 C 140.32356,7.5515122 141.60903,18.725959 143.06334,29.875343 C 144.13526,34.611006 148.72294,38.398739 153.65729,37.652848 C 187.87052,37.614680 222.09048,37.729192 256.29952,37.595574 C 261.11343,35.982903 261.89033,30.225661 262.56719,25.827146 C 264.81056,11.935128 267.21895,-1.9342997 269.35756,-15.840659 C 269.90093,-21.665120 266.95201,-29.247111 260.42397,-30.011895 C 258.08379,-29.526034 259.62007,-32.828725 259.18146,-34.208072 C 259.10812,-41.961371 259.33115,-49.729480 259.06442,-57.473146 C 258.71232,-61.170556 255.30273,-64.138338 251.57460,-63.472152 C 238.06086,-63.495388 224.54474,-63.425673 211.03249,-63.507025 C 204.05055,-64.543769 203.56239,-74.556784 196.58046,-75.593530 C 184.20985,-75.674630 171.83483,-75.605353 159.46272,-75.628403 z " id="path963" style="fill-rule:evenodd;stroke-width:1.2500000;stroke-opacity:0.33962265;fill:#ffffff;fill-opacity:0.20430107;"/>
-  </g>
-  <path d="M 27.173984,98.211833 L 27.173984,26.986457 C 27.173984,19.788368 30.722756,14.591369 38.179233,14.591369 L 74.626759,14.591369 C 82.083245,14.591369 82.987870,26.749499 90.444357,26.749499 L 131.96554,26.749499 C 135.33208,26.749499 137.89713,30.231840 137.89713,34.233174 L 137.89713,98.211833 L 27.173984,98.211833 z " id="path1502" sodipodi:nodetypes="cczzzzzcc" style="fill:url(#linearGradient1514);fill-rule:evenodd;stroke:#565248;stroke-width:1.2500000;stroke-opacity:0.33962265;"/>
-  <path d="M 82.055313 175.83524 A 56.143108 56.143108 0 1 0 -30.230904,175.83524 A 56.143108 56.143108 0 1 0 82.055313 175.83524 z" id="path1809" sodipodi:cx="25.912205" sodipodi:cy="175.83524" sodipodi:rx="56.143108" sodipodi:ry="56.143108" sodipodi:type="arc" style="fill:url(#radialGradient1505);fill-opacity:1;fill-rule:evenodd;stroke-width:1.0000000pt;" transform="matrix(1.442331,0.000000,0.000000,0.353388,43.56779,62.11168)"/>
-  <g id="g1527" style="fill-opacity:0.037735824;" transform="matrix(0.926940,0.000000,0.000000,1.039779,-57.30231,-49.08006)">
-    <path d="M 77.776110,171.71342 L 83.600639,155.83612 C 84.135181,154.37897 88.524659,152.72237 92.914636,152.72237 L 207.01118,152.72237 C 210.89125,152.72237 213.36492,154.55589 213.99669,155.83612 L 221.83189,171.71342 C 223.23784,174.56248 218.51026,177.42373 211.59415,177.42373 L 88.013849,177.42373 C 81.097741,177.42373 76.724895,174.57895 77.776110,171.71342 z " id="path2363" sodipodi:nodetypes="czzzzzzzz" style="fill-rule:evenodd;stroke-width:1.2259742;stroke-opacity:0.28272250;"/>
-    <path d="M 81.210337,170.03356 L 86.757335,155.99569 C 87.266408,154.70737 91.446733,153.24269 95.627534,153.24269 L 204.28755,153.24269 C 207.98274,153.24269 210.33854,154.86378 210.94020,155.99569 L 218.40207,170.03356 C 219.74103,172.55255 215.23871,175.08232 208.65215,175.08232 L 90.960262,175.08232 C 84.373697,175.08232 80.209211,172.56711 81.210337,170.03356 z " id="path1525" sodipodi:nodetypes="czzzzzzzz" style="fill-rule:evenodd;stroke-width:1.2259742;stroke-opacity:0.28272250;"/>
-    <path d="M 88.078791,168.67401 L 93.070728,156.64279 C 93.528861,155.53862 97.290882,154.28331 101.05333,154.28331 L 198.84028,154.28331 C 202.16571,154.28331 204.28577,155.67268 204.82723,156.64279 L 211.54243,168.67401 C 212.74740,170.83292 208.69561,173.00107 202.76813,173.00107 L 96.853089,173.00107 C 90.925609,173.00107 87.177842,170.84540 88.078791,168.67401 z " id="path1526" sodipodi:nodetypes="czzzzzzzz" style="fill-rule:evenodd;stroke-width:1.2259742;stroke-opacity:0.28272250;"/>
-  </g>
-  <path d="M 117.78716,36.773767 L 117.78716,75.722650 L 117.78716,95.197088 L 117.78716,114.67154 L 100.01510,114.67154 L 82.243034,114.67154 L 64.470973,114.67154 L 46.698909,114.67154 L 46.698909,95.197088 L 46.698909,75.722650 L 46.775671,36.773767 L 82.243034,36.773767 L 117.78716,36.773767 z " id="rect900" sodipodi:nodetypes="ccccccccccccc" style="fill:url(#linearGradient1495);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.22607063;stroke-opacity:0.36477986;"/>
-  <path d="M 301.30655,174.90867 L 299.27069,628.90434 L 743.08709,628.90434 L 743.34157,516.67783 C 733.41677,520.49506 633.15091,378.49417 506.92790,384.60173 C 380.59029,390.71484 413.27857,193.23136 301.30655,174.90867 z " id="path1500" sodipodi:nodetypes="cccczc" style="fill:url(#linearGradient1499);fill-opacity:1;fill-rule:evenodd;stroke-width:1.0000000pt;" transform="matrix(0.157267,0.000000,0.000000,0.157267,-0.685311,17.09000)"/>
-  <path d="M 16.340118,75.850997 L 21.660243,119.35397 C 22.148493,123.34642 26.157842,127.88541 30.167647,127.88541 L 134.38341,127.88541 C 137.92746,127.88541 140.18692,122.86168 140.76397,119.35397 L 147.92063,75.850997 C 149.20483,68.044749 144.88666,60.205100 138.56949,60.205100 L 25.691267,60.205100 C 19.374096,60.205100 15.379940,67.999588 16.340118,75.850997 z " id="path1501" sodipodi:nodetypes="czzzzzzzz" style="fill:url(#linearGradient1507);fill-rule:evenodd;stroke:url(#linearGradient1521);stroke-width:1.2519596;stroke-opacity:0.33962265;"/>
-  <path d="M 17.363760,74.771310 C 17.144790,75.718777 21.236974,66.419549 28.174951,66.419549 L 134.15847,66.419549 C 142.69349,66.419549 145.42542,75.718777 145.64440,74.771310 C 145.86338,73.823852 150.22438,60.734754 134.33482,60.734754 L 28.673341,60.734754 C 15.227487,60.734754 17.582722,73.823852 17.363760,74.771310 z " id="path1503" sodipodi:nodetypes="czzzzzz" style="fill:url(#linearGradient1516);fill-rule:evenodd;stroke-width:0.90415878pt;"/>
-</svg>

=== modified file 'Folders/src/CMakeLists.txt'
--- Folders/src/CMakeLists.txt	2010-08-10 00:05:57 +0000
+++ Folders/src/CMakeLists.txt	2011-09-26 20:21:33 +0000
@@ -19,7 +19,7 @@
 add_definitions (-DMY_APPLET_VERSION="${VERSION_FOLDERS}")
 add_definitions (-DMY_APPLET_GETTEXT_DOMAIN="${GETTEXT_FOLDERS}")
 add_definitions (-DMY_APPLET_DOCK_VERSION="${dock_version}")
-add_definitions (-DMY_APPLET_ICON_FILE="icon.svg")
+add_definitions (-DMY_APPLET_ICON_FILE="icon.png")
 add_definitions (-DCD_APPLET_MULTI_INSTANCE="1")
 ### uncomment the following line to allow extended OpenGL drawing.
 #add_definitions (-DGL_GLEXT_PROTOTYPES="1")

=== modified file 'Folders/src/applet-config.c'
--- Folders/src/applet-config.c	2011-08-09 18:08:08 +0000
+++ Folders/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -28,9 +28,9 @@
 //\_________________ Here you have to get all your parameters from the conf file. Use the macros CD_CONFIG_GET_BOOLEAN, CD_CONFIG_GET_INTEGER, CD_CONFIG_GET_STRING, etc. myConfig has been reseted to 0 at this point. This function is called at the beginning of init and reload.
 CD_APPLET_GET_CONFIG_BEGIN
 	myConfig.cDefaultTitle = CD_CONFIG_GET_STRING ("Icon", "name");
-	///myConfig.cImageFile = CD_CONFIG_GET_STRING ("Icon", "image file");
+	myConfig.cImageFile = CD_CONFIG_GET_STRING ("Icon", "image file");
 	myConfig.cDirPath = CD_CONFIG_GET_STRING ("Configuration", "dir path");
-	if (myConfig.cDirPath)
+	if (myConfig.cDirPath)  // transform the pah into an URI.
 	{
 		if (*myConfig.cDirPath == '~')
 		{
@@ -47,7 +47,6 @@
 	}
 	myConfig.bShowFiles = CD_CONFIG_GET_BOOLEAN_WITH_DEFAULT ("Configuration", "show files", TRUE);
 	myConfig.cRenderer = CD_CONFIG_GET_STRING ("Configuration", "renderer");
-	//myConfig.iNbIcons = CD_CONFIG_GET_INTEGER ("Configuration", "nb icons");
 	myConfig.iSortType = CD_CONFIG_GET_INTEGER ("Configuration", "sort type");
 	myConfig.bFoldersFirst = CD_CONFIG_GET_BOOLEAN ("Configuration", "folders first");
 	myConfig.bShowHiddenFiles = CD_CONFIG_GET_BOOLEAN ("Configuration", "show hidden");
@@ -60,7 +59,7 @@
 
 //\_________________ Here you have to free all ressources allocated for myConfig. This one will be reseted to 0 at the end of this function. This function is called right before you get the applet's config, and when your applet is stopped, in the end.
 CD_APPLET_RESET_CONFIG_BEGIN
-	///g_free (myConfig.cImageFile);
+	g_free (myConfig.cImageFile);
 	g_free (myConfig.cDefaultTitle);
 	
 	if (myConfig.cDirPath)

=== modified file 'Folders/src/applet-init.c'
--- Folders/src/applet-init.c	2011-08-09 18:08:08 +0000
+++ Folders/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -80,24 +80,42 @@
 
 //\___________ Here is where you initiate your applet. myConfig is already set at this point, and also myIcon, myContainer, myDock, myDesklet (and myDrawContext if you're in dock mode). The macro CD_APPLET_MY_CONF_FILE and CD_APPLET_MY_KEY_FILE can give you access to the applet's conf-file and its corresponding key-file (also available during reload). If you're in desklet mode, myDrawContext is still NULL, and myIcon's buffers has not been filled, because you may not need them then (idem when reloading).
 CD_APPLET_INIT_BEGIN
-	
-	//\_______________ On definit le dessin de l'icone principale.
-	_set_icon_label (myApplet);
-	
-	myIcon->iSubdockViewType = myConfig.iSubdockViewType;
-	if (myDock && myConfig.iSubdockViewType == 0)
-		CD_APPLET_SET_DEFAULT_IMAGE_ON_MY_ICON_IF_NONE;
-		///CD_APPLET_SET_USER_IMAGE_ON_MY_ICON (myConfig.cImageFile, MY_APPLET_ICON_FILE);
-	
-	//\_______________ On lance la tache recuperation des fichiers.
-	_set_comparaison_func (myApplet);
-	if (myConfig.bShowFiles)
+
+	if (myConfig.cDirPath == NULL)
 	{
-		cd_folders_start (myApplet);
+		CD_APPLET_SET_IMAGE_ON_MY_ICON (myConfig.cImageFile);
+		cairo_dock_show_temporary_dialog_with_icon (D_("Open the configuration of the applet to choose a folder to import."),
+			myIcon, myContainer,
+			8000.,
+			myConfig.iSubdockViewType == 0 ? "same icon" : MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE);
 	}
-	else if (myDesklet)  // comme on ne charge pas les icones, on met un renderer "simple" sur notre desklet.
+	else
 	{
-		CD_APPLET_SET_DESKLET_RENDERER ("Simple");
+		//\_______________ On lance la tache recuperation des fichiers.
+		_set_comparaison_func (myApplet);
+		if (myConfig.bShowFiles)
+		{
+			cd_folders_start (myApplet);
+		}
+
+		//\_______________ set the icon rendering
+		if (myDock)  // dock mode: set the image or the sub-dock renderer
+		{
+			cairo_dock_set_subdock_content_renderer (myIcon, myConfig.iSubdockViewType);
+			if (myConfig.iSubdockViewType == 0)
+				CD_APPLET_SET_IMAGE_ON_MY_ICON (myConfig.cImageFile);
+		}
+		else  // desklet mode: set the image if we don't show the files.
+		{
+			if (! myConfig.bShowFiles)
+			{
+				CD_APPLET_SET_DESKLET_RENDERER ("Simple");
+				CD_APPLET_SET_IMAGE_ON_MY_ICON (myConfig.cImageFile);
+			}
+		}
+		
+		//\_______________ set the label
+		_set_icon_label (myApplet);
 	}
 	
 	//\_______________ On enregistre nos notifications.
@@ -125,29 +143,47 @@
 	{
 		//\_______________ On detruit les icones des fichiers.
 		cd_folders_free_all_data (myApplet);
-		
-		//\_______________ On met a jour l'icone principale.
-		_set_icon_label (myApplet);
-		
-		myIcon->iSubdockViewType = myConfig.iSubdockViewType;
-		if (myDock && myConfig.iSubdockViewType == 0)
-			CD_APPLET_SET_DEFAULT_IMAGE_ON_MY_ICON_IF_NONE;
-			///CD_APPLET_SET_USER_IMAGE_ON_MY_ICON (myConfig.cImageFile, MY_APPLET_ICON_FILE);
-		
-		//\_______________ On charge les icones dans un sous-dock.
-		_set_comparaison_func (myApplet);
-		if (myConfig.bShowFiles)
-		{
-			cd_folders_start (myApplet);
-		}
-		else if (myDock && myIcon->pSubDock)  // on veut un comportement de type lanceur, donc on ne veut pas d'un sous-dock vide.
-		{
-			cairo_dock_destroy_dock (myIcon->pSubDock, myIcon->cName);
-			myIcon->pSubDock = NULL;
-		}
-		else if (myDesklet)
-		{
-			CD_APPLET_SET_DESKLET_RENDERER ("Simple");
+
+		if (myConfig.cDirPath == NULL)
+		{
+			CD_APPLET_SET_IMAGE_ON_MY_ICON (myConfig.cImageFile);
+			cairo_dock_show_temporary_dialog_with_icon (D_("Open the configuration of the applet to choose a folder to import."),
+				myIcon, myContainer,
+				8000.,
+				myConfig.iSubdockViewType == 0 ? "same icon" : MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE);
+		}
+		else
+		{
+			//\_______________ On charge les icones dans un sous-dock.
+			_set_comparaison_func (myApplet);
+			if (myConfig.bShowFiles)
+			{
+				cd_folders_start (myApplet);
+			}
+			else if (myDock && myIcon->pSubDock)  // dans ce cas on veut un comportement de type lanceur, donc on ne veut pas d'un sous-dock vide.
+			{
+				cairo_dock_destroy_dock (myIcon->pSubDock, myIcon->cName);
+				myIcon->pSubDock = NULL;
+			}
+			
+			//\_______________ set the icon rendering
+			if (myDock)  // dock mode: set the image or the sub-dock renderer
+			{
+				cairo_dock_set_subdock_content_renderer (myIcon, myConfig.iSubdockViewType);
+				if (myConfig.iSubdockViewType == 0)
+					CD_APPLET_SET_IMAGE_ON_MY_ICON (myConfig.cImageFile);
+			}
+			else  // desklet mode: set the image if we don't show the files.
+			{
+				if (! myConfig.bShowFiles)
+				{
+					CD_APPLET_SET_DESKLET_RENDERER ("Simple");
+					CD_APPLET_SET_IMAGE_ON_MY_ICON (myConfig.cImageFile);
+				}
+			}
+			
+			//\_______________ set the label
+			_set_icon_label (myApplet);
 		}
 	}
 CD_APPLET_RELOAD_END

=== modified file 'Folders/src/applet-notifications.c'
--- Folders/src/applet-notifications.c	2011-08-09 18:08:08 +0000
+++ Folders/src/applet-notifications.c	2011-09-26 20:21:33 +0000
@@ -132,7 +132,7 @@
 
 		pLabel = gtk_label_new (NULL);
 		gtk_label_set_use_markup (GTK_LABEL (pLabel), TRUE);
-		g_string_printf (sInfo, "<u>Size</u> : %lld bytes", iSize);
+		g_string_printf (sInfo, "<u>Size</u> : %lu bytes", iSize);
 		if (iSize > 1024*1024)
 			g_string_append_printf (sInfo, " (%.1f Mo)", 1. * iSize / 1024 / 1024);
 		else if (iSize > 1024)
@@ -428,11 +428,19 @@
 CD_APPLET_ON_BUILD_MENU_END
 
 
-static void _on_answer_import (int iClickedButton, GtkWidget *pInteractiveWidget, const gchar *cReceivedData, CairoDialog *pDialog)
+typedef struct {
+	gchar *cReceivedData;
+	double fOrder;
+} CDDropData;
+
+static void _on_answer_import (int iClickedButton, GtkWidget *pInteractiveWidget, CDDropData *data, CairoDialog *pDialog)
 {
 	cd_debug ("%s (%d)", __func__, iClickedButton);
+	const gchar *cReceivedData = data->cReceivedData;
+	double fOrder = data->fOrder;
 	gboolean bImportFiles = (iClickedButton == 0 || iClickedButton == -1);  // ok or Enter.
 	
+	// add a new conf file for the "Folders" module, with proper values.
 	CairoDockModule *pModule = cairo_dock_find_module_from_name ("Folders");
 	g_return_if_fail (pModule != NULL);
 
@@ -440,29 +448,37 @@
 	cairo_dock_update_conf_file (cConfFilePath,
 		G_TYPE_STRING, "Configuration", "dir path", cReceivedData,
 		G_TYPE_BOOLEAN, "Configuration", "show files", bImportFiles,
+		G_TYPE_DOUBLE, "Icon", "order", fOrder,
 		G_TYPE_INVALID);
-
+	
+	// instanciate the module from this conf file.
 	CairoDockModuleInstance *pNewInstance = cairo_dock_instanciate_module (pModule, cConfFilePath);  // prend le 'cConfFilePath'.
 	if (pNewInstance != NULL && pNewInstance->pDock)
 	{
 		cairo_dock_update_dock_size (pNewInstance->pDock);
 	}
-
+	
+	// show a success message on the new icon.
 	if (pNewInstance != NULL)
 		cairo_dock_show_temporary_dialog_with_icon (D_("The folder has been imported."),
 			pNewInstance->pIcon, pNewInstance->pContainer,
 			5000,
 			MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE);  // not "same icon" because the icon may not be loaded yet (eg. stack or emblem icon).
-
+	
+	// if the module has just been activated for the first time, write it down so that it is loaded on the next startup.
 	if (pModule->pInstancesList && pModule->pInstancesList->next == NULL)  // module nouvellement active.
 	{
 		cairo_dock_write_active_modules ();
 	}
 }
+static void _free_dialog_data (CDDropData *data)
+{
+	g_free (data->cReceivedData);
+	g_free (data);
+}
 gboolean cd_folders_on_drop_data (gpointer data, const gchar *cReceivedData, Icon *icon, double fOrder, CairoContainer *pContainer)
 {
 	//g_print ("Folders received '%s'\n", cReceivedData);
-	
 	if (icon != NULL || fOrder == CAIRO_DOCK_LAST_ORDER)  // drop on an icon or outside of icons.
 		return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 	
@@ -474,22 +490,42 @@
 	
 	if (g_file_test (cPath, G_FILE_TEST_IS_DIR))  // it's a folder, let's add a new instance of the applet that will handle it.
 	{
-		//g_print (" ajout d'un repertoire...\n");
-		if (icon == NULL)
+		// search the closest icon to the drop point (we want to place the dialog on it).
+		GList *pIconsList = NULL, *ic;
+		if (CAIRO_DOCK_IS_DOCK (pContainer))
+			pIconsList = CAIRO_DOCK (pContainer)->icons;
+		else if (CAIRO_DOCK_IS_DESKLET (pContainer))
+			pIconsList = CAIRO_DESKLET (pContainer)->icons;
+		Icon *pIcon = NULL;
+		for (ic = pIconsList; ic != NULL; ic = ic->next)
+		{
+			icon = ic->data;
+			if (icon->fOrder > fOrder)
+			{
+				pIcon = icon;
+				break;
+			}
+		}
+		if (pIcon == NULL)
 		{
 			if (CAIRO_DOCK_IS_DOCK (pContainer))
-				icon = cairo_dock_get_dialogless_icon_full (CAIRO_DOCK (pContainer));
+				pIcon = cairo_dock_get_dialogless_icon_full (CAIRO_DOCK (pContainer));
 			else
-				icon = cairo_dock_get_dialogless_icon ();
+				pIcon = cairo_dock_get_dialogless_icon ();
 		}
+		
+		// ask the user whether (s)he wants to import the folder's content.
+		CDDropData *data = g_new0 (CDDropData, 1);
+		data->cReceivedData = g_strdup (cReceivedData);
+		data->fOrder = fOrder;
 		cairo_dock_show_dialog_full (D_("Do you want to import the content of the folder too?"),
-			icon, pContainer,
+			pIcon, pContainer,
 			0,
 			MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE,
 			NULL,
 			(CairoDockActionOnAnswerFunc) _on_answer_import,
-			g_strdup (cReceivedData),
-			(GFreeFunc)g_free);
+			data,
+			(GFreeFunc)_free_dialog_data);
 		
 		return CAIRO_DOCK_INTERCEPT_NOTIFICATION;
 	}

=== modified file 'Folders/src/applet-struct.h'
--- Folders/src/applet-struct.h	2011-08-09 18:08:08 +0000
+++ Folders/src/applet-struct.h	2011-09-26 20:21:33 +0000
@@ -25,7 +25,7 @@
 
 //\___________ structure containing the applet's configuration parameters.
 struct _AppletConfig {
-	///gchar *cImageFile;
+	gchar *cImageFile;
 	gchar *cDefaultTitle;
 	gchar *cDirPath;
 	gboolean bShowFiles;

=== modified file 'GMenu/data/GMenu.conf.in'
--- GMenu/data/GMenu.conf.in	2011-08-09 18:08:08 +0000
+++ GMenu/data/GMenu.conf.in	2011-09-26 20:21:33 +0000
@@ -59,7 +59,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Impulse/data/Impulse.conf.in'
--- Impulse/data/Impulse.conf.in	2011-08-09 18:08:08 +0000
+++ Impulse/data/Impulse.conf.in	2011-09-26 20:21:33 +0000
@@ -58,7 +58,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Impulse/src/Impulse.c'
--- Impulse/src/Impulse.c	2011-08-09 18:08:08 +0000
+++ Impulse/src/Impulse.c	2011-09-26 20:21:33 +0000
@@ -180,14 +180,14 @@
 
 	switch (pa_context_get_state (context))
 	{
+		case PA_CONTEXT_TERMINATED:
+		case PA_CONTEXT_FAILED:
+			return IM_FAILED;
 		case PA_CONTEXT_CONNECTING:
 		case PA_CONTEXT_AUTHORIZING:
 		case PA_CONTEXT_SETTING_NAME:
+		default: // default seems to be ok...
 			return IM_SUCCESS;
-		case PA_CONTEXT_TERMINATED:
-		case PA_CONTEXT_FAILED:
-		default:
-			return IM_FAILED;
 	}
 }
 

=== modified file 'Impulse/src/applet-config.c'
--- Impulse/src/applet-config.c	2011-08-09 18:08:08 +0000
+++ Impulse/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -27,6 +27,8 @@
 //\_________________ Here you have to get all your parameters from the conf file. Use the macros CD_CONFIG_GET_BOOLEAN, CD_CONFIG_GET_INTEGER, CD_CONFIG_GET_STRING, etc. myConfig has been reseted to 0 at this point. This function is called at the beginning of init and reload.
 CD_APPLET_GET_CONFIG_BEGIN
 	myConfig.cIconAnimation = CD_CONFIG_GET_STRING ("Configuration", "animation");
+	if (myConfig.cIconAnimation == NULL)
+		myConfig.cIconAnimation = g_strdup ("default");
 	myConfig.fMinValueToAnim = CD_CONFIG_GET_DOUBLE_WITH_DEFAULT ("Configuration", "sensitivity", 0.25) / 3; // PER 3
 	myConfig.iNbAnimations = CD_CONFIG_GET_INTEGER_WITH_DEFAULT ("Configuration", "nb animations", 1);
 	myConfig.iLoopTime = CD_CONFIG_GET_INTEGER_WITH_DEFAULT ("Configuration", "refresh", 250);

=== modified file 'Indicator-applet/indicator-applet.c'
--- Indicator-applet/indicator-applet.c	2011-04-20 20:46:51 +0000
+++ Indicator-applet/indicator-applet.c	2011-09-26 20:21:33 +0000
@@ -33,7 +33,7 @@
 {
 	if (pIndicator->pMenu == NULL)
 	{
-		pIndicator->pMenu = dbusmenu_gtkmenu_new (pIndicator->cBusName, pIndicator->cMenuObject);
+		pIndicator->pMenu = dbusmenu_gtkmenu_new (g_strdup (pIndicator->cBusName), g_strdup (pIndicator->cMenuObject));
 		if (pIndicator->pMenu != NULL)
 		{
 			DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client (pIndicator->pMenu);
@@ -111,7 +111,7 @@
 	pIndicator->cServiceInterface = cServiceInterface;
 	pIndicator->cMenuObject = cMenuObject;
 	
-	pIndicator->service = indicator_service_manager_new_version (cBusName, INDICATOR_APPLET_DBUS_VERSION);
+	pIndicator->service = indicator_service_manager_new_version (g_strdup (cBusName), INDICATOR_APPLET_DBUS_VERSION);
 	g_signal_connect (G_OBJECT(pIndicator->service), INDICATOR_SERVICE_MANAGER_SIGNAL_CONNECTION_CHANGE, G_CALLBACK(connection_changed), pIndicator);  // on sera appele une fois la connexion etablie.
 	
 	return pIndicator;
@@ -168,7 +168,12 @@
 	}
 	
 	cd_debug ("set %s", cIconPathFallback ? cIconPathFallback : cIconName);
-	CD_APPLET_SET_IMAGE_ON_MY_ICON (cIconPathFallback ? cIconPathFallback : cIconName);
+	//CD_APPLET_SET_IMAGE_ON_MY_ICON (cIconPathFallback ? cIconPathFallback : cIconName);
+	cairo_dock_set_image_on_icon_with_default (myDrawContext,
+		cIconPathFallback ? cIconPathFallback : cIconName,
+		myIcon,
+		myContainer,
+		myApplet->pModule->pVisitCard->cIconFilePath);
 	
 	g_free (tmp_icon_name);
 	g_free (cIconPath);

=== modified file 'MeMenu/data/MeMenu.conf.in'
--- MeMenu/data/MeMenu.conf.in	2011-08-09 18:08:08 +0000
+++ MeMenu/data/MeMenu.conf.in	2011-09-26 20:21:33 +0000
@@ -56,7 +56,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Messaging-Menu/data/Messaging-Menu.conf.in'
--- Messaging-Menu/data/Messaging-Menu.conf.in	2011-08-09 18:08:08 +0000
+++ Messaging-Menu/data/Messaging-Menu.conf.in	2011-09-26 20:21:33 +0000
@@ -57,7 +57,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Messaging-Menu/src/applet-config.c'
--- Messaging-Menu/src/applet-config.c	2010-08-10 00:05:57 +0000
+++ Messaging-Menu/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -33,13 +33,10 @@
 
 //\_________________ Here you have to free all ressources allocated for myConfig. This one will be reseted to 0 at the end of this function. This function is called right before you get the applet's config, and when your applet is stopped, in the end.
 CD_APPLET_RESET_CONFIG_BEGIN
-	g_free (myConfig.cAnimationName);
 	
 CD_APPLET_RESET_CONFIG_END
 
-
 //\_________________ Here you have to free all ressources allocated for myData. This one will be reseted to 0 at the end of this function. This function is called when your applet is stopped, in the very end.
 CD_APPLET_RESET_DATA_BEGIN
 	
-	
 CD_APPLET_RESET_DATA_END

=== modified file 'Messaging-Menu/src/applet-menu.c'
--- Messaging-Menu/src/applet-menu.c	2011-08-09 18:08:08 +0000
+++ Messaging-Menu/src/applet-menu.c	2011-09-26 20:21:33 +0000
@@ -41,12 +41,20 @@
 
 /* Sets the icon when it changes. */
 static void
+#if (INDICATOR_OLD_NAMES == 0)
+application_icon_change_cb (DbusmenuMenuitem * mi, gchar * prop, GVariant * value, gpointer user_data)
+#else
 application_icon_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, gpointer user_data)
+#endif
 {
 	if (!g_strcmp0(prop, APPLICATION_MENUITEM_PROP_ICON)) {
 		/* Set the main icon */
 		if (GTK_IS_IMAGE(user_data)) {
+#if (INDICATOR_OLD_NAMES == 0)
+			gtk_image_set_from_icon_name(GTK_IMAGE(user_data), g_variant_get_string(value, NULL), GTK_ICON_SIZE_MENU);
+#else
 			gtk_image_set_from_icon_name(GTK_IMAGE(user_data), g_value_get_string(value), GTK_ICON_SIZE_MENU);
+#endif
 		}
 	}
 
@@ -55,12 +63,20 @@
 
 /* Sets the label when it changes. */
 static void
+#if (INDICATOR_OLD_NAMES == 0)
+application_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GVariant * value, gpointer user_data)
+#else
 application_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, gpointer user_data)
+#endif
 {
 	if (!g_strcmp0(prop, APPLICATION_MENUITEM_PROP_NAME)) {
 		/* Set the main label */
 		if (GTK_IS_LABEL(user_data)) {
+#if (INDICATOR_OLD_NAMES == 0)
+			gtk_label_set_text(GTK_LABEL(user_data), g_variant_get_string(value, NULL));
+#else
 			gtk_label_set_text(GTK_LABEL(user_data), g_value_get_string(value));
+#endif
 		}
 	}
 
@@ -191,18 +207,24 @@
 static gboolean
 new_application_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client)
 {
-	g_debug ("%s (\"%s\")", __func__, dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_NAME));
+	gchar *cName = g_strdup (dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_NAME));
+
+	cd_debug ("%s (\"%s\")", __func__, cName);
+
+#if (INDICATOR_OLD_NAMES == 0)
+	if (newitem == NULL || !dbusmenu_menuitem_property_get_bool(newitem, DBUSMENU_MENUITEM_PROP_VISIBLE))
+	{
+		cd_debug ("Not visible: %s", cName);
+		g_free (cName);
+		return TRUE;
+	}
+#endif
 
 	GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_image_menu_item_new());
 #if (GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION >= 16)
 	gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(gmi), TRUE);
 #endif
 
-	gint padding = 4;
-	gtk_widget_style_get(GTK_WIDGET(gmi), "horizontal-padding", &padding, NULL);
-
-	GtkWidget * hbox = gtk_hbox_new(FALSE, 0);
-
 	/* Set the minimum size, we always want it to take space */
 	gint width, height;
 	gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
@@ -220,14 +242,12 @@
 	gtk_widget_show(icon);
 
 	/* Application name in a label */
-	GtkWidget * label = gtk_label_new(dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_NAME));
+	GtkWidget * label = gtk_label_new(cName);
 	gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-	gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, padding);
 	gtk_widget_show(label);
 
 	/* Insert the hbox */
-	gtk_container_add(GTK_CONTAINER(gmi), hbox);
-	gtk_widget_show(hbox);
+	gtk_container_add(GTK_CONTAINER(gmi), label);
 
 	/* Attach some of the standard GTK stuff */
 	dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent);
@@ -254,14 +274,32 @@
 /* Whenever we have a property change on a DbusmenuMenuitem
    we need to be responsive to that. */
 static void
+#if (INDICATOR_OLD_NAMES == 0)
+indicator_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GVariant * value, indicator_item_t * mi_data)
+#else
 indicator_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, indicator_item_t * mi_data)
+#endif
 {
+#if (INDICATOR_OLD_NAMES == 0)
+	cd_debug ("%s (\"%s\": %s)", __func__, prop, g_variant_get_string(value, NULL));
+#else
+	cd_debug ("%s (\"%s\": %s)", __func__, prop, g_value_get_string(value));
+#endif
+
 	if (!g_strcmp0(prop, INDICATOR_MENUITEM_PROP_LABEL)) {
 		/* Set the main label */
+#if (INDICATOR_OLD_NAMES == 0)
+		gtk_label_set_text(GTK_LABEL(mi_data->label), g_variant_get_string(value, NULL));
+#else
 		gtk_label_set_text(GTK_LABEL(mi_data->label), g_value_get_string(value));
+#endif
 	} else if (!g_strcmp0(prop, INDICATOR_MENUITEM_PROP_RIGHT)) {
 		/* Set the right label */
+#if (INDICATOR_OLD_NAMES == 0)
+		gtk_label_set_text(GTK_LABEL(mi_data->right), g_variant_get_string(value, NULL));
+#else
 		gtk_label_set_text(GTK_LABEL(mi_data->right), g_value_get_string(value));
+#endif
 	} else if (!g_strcmp0(prop, INDICATOR_MENUITEM_PROP_ICON)) {
 		/* We don't use the value here, which is probably less efficient, 
 		   but it's easier to use the easy function.  And since th value
@@ -275,22 +313,20 @@
 			gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
 			if (gdk_pixbuf_get_width(pixbuf) > width ||
 					gdk_pixbuf_get_height(pixbuf) > height) {
-				g_debug("Resizing icon from %dx%d to %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf), width, height);
+				cd_debug("Resizing icon from %dx%d to %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf), width, height);
 				resized_pixbuf = gdk_pixbuf_scale_simple(pixbuf,
 				                                         width,
 				                                         height,
 				                                         GDK_INTERP_BILINEAR);
+				g_object_unref(pixbuf);
 			} else {
-				g_debug("Happy with icon sized %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf));
+				cd_debug("Happy with icon sized %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf));
 				resized_pixbuf = pixbuf;
 			}
 	  
 			gtk_image_set_from_pixbuf(GTK_IMAGE(mi_data->icon), resized_pixbuf);
 
-			/* The other pixbuf should be free'd by the dbusmenu. */
-			if (resized_pixbuf != pixbuf) {
-				g_object_unref(resized_pixbuf);
-			}
+			g_object_unref(resized_pixbuf);
 
 			gtk_widget_show(mi_data->icon);
 		} else {
@@ -312,6 +348,16 @@
 	g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE);
 	/* Note: not checking parent, it's reasonable for it to be NULL */
 
+	cd_debug ("%s (\"%s\")", __func__, dbusmenu_menuitem_property_get(newitem, INDICATOR_MENUITEM_PROP_LABEL));
+
+#if (INDICATOR_OLD_NAMES == 0)
+	if (newitem == NULL || !dbusmenu_menuitem_property_get_bool(newitem, DBUSMENU_MENUITEM_PROP_VISIBLE))
+	{
+		cd_debug ("Not visible: %s", dbusmenu_menuitem_property_get(newitem, INDICATOR_MENUITEM_PROP_LABEL));
+		return TRUE;
+	}
+#endif
+
 	indicator_item_t * mi_data = g_new0(indicator_item_t, 1);
 
 	GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_menu_item_new());
@@ -337,22 +383,20 @@
 		GdkPixbuf * resized_pixbuf;
 		if (gdk_pixbuf_get_width(pixbuf) > width ||
 		        gdk_pixbuf_get_height(pixbuf) > height) {
-			g_debug("Resizing icon from %dx%d to %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf), width, height);
+			cd_debug("Resizing icon from %dx%d to %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf), width, height);
 			resized_pixbuf = gdk_pixbuf_scale_simple(pixbuf,
 			                                         width,
 			                                         height,
 			                                         GDK_INTERP_BILINEAR);
+			g_object_unref(pixbuf);
 		} else {
-			g_debug("Happy with icon sized %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf));
+			cd_debug("Happy with icon sized %dx%d", gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf));
 			resized_pixbuf = pixbuf;
 		}
   
 		gtk_image_set_from_pixbuf(GTK_IMAGE(mi_data->icon), resized_pixbuf);
 
-		/* The other pixbuf should be free'd by the dbusmenu. */
-		if (resized_pixbuf != pixbuf) {
-			g_object_unref(resized_pixbuf);
-		}
+		g_object_unref(pixbuf);
 	}
 	gtk_misc_set_alignment(GTK_MISC(mi_data->icon), 0.0, 0.5);
 	gtk_box_pack_start(GTK_BOX(hbox), mi_data->icon, FALSE, FALSE, padding);
@@ -398,6 +442,6 @@
 {
 	indicator_right_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 	
-	dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), INDICATOR_MENUITEM_TYPE, new_indicator_item);
-	dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), APPLICATION_MENUITEM_TYPE, new_application_item);
+	dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), INDICATOR_MENUITEM_TYPE, (DbusmenuClientTypeHandler) new_indicator_item);
+	dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), APPLICATION_MENUITEM_TYPE, (DbusmenuClientTypeHandler) new_application_item);
 }

=== modified file 'Messaging-Menu/src/applet-messaging.c'
--- Messaging-Menu/src/applet-messaging.c	2011-04-20 20:46:51 +0000
+++ Messaging-Menu/src/applet-messaging.c	2011-09-26 20:21:33 +0000
@@ -57,7 +57,7 @@
 static void
 icon_changed_cb (DBusGProxy * proxy, gboolean hidden, CairoDockModuleInstance *myApplet)
 {
-	//g_print ("%s (hidden : %d)\n", __func__, hidden);
+	cd_debug ("%s (hidden : %d)", __func__, hidden);
 	if (hidden)
 	{
 		myIcon->fAlpha = .5;
@@ -74,7 +74,7 @@
 attention_cb (DBusGProxy * proxy, gboolean dot, GError * error, CairoDockModuleInstance *myApplet)
 {
 	if (error != NULL) {
-		g_warning("Unable to get attention status: %s", error->message);
+		cd_warning ("Unable to get attention status: %s", error->message);
 		g_error_free(error);
 		return;
 	}
@@ -87,7 +87,7 @@
 icon_cb (DBusGProxy * proxy, gboolean hidden, GError * error, CairoDockModuleInstance *myApplet)
 {
 	if (error != NULL) {
-		g_warning("Unable to get icon visibility: %s", error->message);
+		cd_warning ("Unable to get icon visibility: %s", error->message);
 		g_error_free(error);
 		return;
 	}

=== added file 'Messaging-Menu/src/make-dbus-headers.sh'
--- Messaging-Menu/src/make-dbus-headers.sh	1970-01-01 00:00:00 +0000
+++ Messaging-Menu/src/make-dbus-headers.sh	2011-09-26 20:21:33 +0000
@@ -0,0 +1,2 @@
+#!/bin/sh
+dbus-binding-tool --prefix=_ --mode=glib-client  --output=messages-service-client.h messages-service.xml

=== removed file 'Messaging-Menu/src/make-dbus-heaers.sh'
--- Messaging-Menu/src/make-dbus-heaers.sh	2010-08-10 00:05:57 +0000
+++ Messaging-Menu/src/make-dbus-heaers.sh	1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-#!/bin/sh
-dbus-binding-tool --prefix=_ --mode=glib-client  --output=messages-service-client.h messages-service.xml

=== modified file 'Messaging-Menu/src/messages-service.xml'
--- Messaging-Menu/src/messages-service.xml	2010-08-10 00:05:57 +0000
+++ Messaging-Menu/src/messages-service.xml	2011-09-26 20:21:33 +0000
@@ -1,17 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <node name="/">
-	<interface name="org.ayatana.indicator.messages.service">
+	<interface name="com.canonical.indicator.messages.service">
 
 <!-- Methods -->
-		<method name="Watch">
-			<annotation name="org.freedesktop.DBus.GLib.Async" value="true" />
-		</method>
 		<method name="AttentionRequested">
 			<arg type="b" name="dot" direction="out" />
 		</method>
 		<method name="IconShown">
 			<arg type="b" name="hidden" direction="out" />
 		</method>
+		<method name="ClearAttention" />
 
 <!-- Signals -->
 		<signal name="AttentionChanged">

=== modified file 'Network-Monitor/data/Network-Monitor.conf.in'
--- Network-Monitor/data/Network-Monitor.conf.in	2011-08-09 18:08:08 +0000
+++ Network-Monitor/data/Network-Monitor.conf.in	2011-09-26 20:21:33 +0000
@@ -21,9 +21,12 @@
 #{Set to 0 to use the default applet size}
 icon size = 0;0
 
-#b Always display the icon, even when the dock is hidden?
+#B Always display the icon, even when the dock is hidden?
 always visi = false
 
+#C+ Background color to add in this case
+bg color = .8;.8;.8;.5
+
 order=
 
 #F[Applet's Handbook]
@@ -60,7 +63,7 @@
 #b+ Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true
@@ -147,7 +150,7 @@
 #X[Gauge;gtk-dialog-info]
 frame_gauge=
 
-#h+[@gaugesdir@;gauges;gauges2] Choose one of the available themes:/
+#h+[@gaugesdir@;gauges;gauges3;wifi] Choose one of the available themes:/
 theme = turbo-night-fuel
 
 #X[Graph;gtk-dialog-info]
@@ -186,7 +189,7 @@
 #X[Gauge;gtk-dialog-info]
 frame_gauge=
 
-#h+[@gaugesdir@;gauges;gauges2] Choose one of the available themes:/
+#h+[@gaugesdir@;gauges;gauges3;wifi] Choose one of the available themes:/
 theme = turbo-night-fuel
 
 

=== modified file 'Network-Monitor/src/applet-connections.c'
--- Network-Monitor/src/applet-connections.c	2010-08-10 00:05:57 +0000
+++ Network-Monitor/src/applet-connections.c	2011-09-26 20:21:33 +0000
@@ -92,7 +92,7 @@
 	cd_debug ("%d devices\n", paDevices->len);
 	DBusGProxy *dbus_proxy_Device, *dbus_proxy_Device_prop;
 	gchar *cDevice;
-	int i;
+	uint i;
 	for (i = 0; i < paDevices->len; i++)
 	{
 		// on recupere le device.
@@ -217,7 +217,7 @@
 	
 	//\_____________ On en choisit une.
 	gchar *cConnection;
-	int i;
+	uint i;
 	for (i = 0; i < paConnections->len; i++)
 	{
 		cConnection = (gchar *)g_ptr_array_index(paConnections, i);
@@ -257,8 +257,8 @@
 	DBusGProxy *dbus_proxy_ActiveAccessPoint_prop = NULL;
 	GError *erreur = NULL;
 	
-	gint j,k;
-	GValue value = { 0 };
+	uint j,k;
+	GValue value = { 0, { { 0 } } };
 	GPtrArray *paActiveConnections = NULL;
 	GPtrArray *paDevices = NULL;
 	gchar *cActiveConnection, *cDevice, *cAccessPointPath, *cConnection;
@@ -267,7 +267,7 @@
 	//\_____________ On recupere la liste des connexions actives (ce sont les configs tout-en-un de NM qui sont actuellement utilisees).
 	paActiveConnections = (GPtrArray*) cairo_dock_dbus_get_property_as_boxed (myData.dbus_proxy_NM_prop, "org.freedesktop.NetworkManager", "ActiveConnections");
 	cd_debug ("%d connections\n", paActiveConnections->len);
-	for (j=0; j<paActiveConnections->len; j++)
+	for (j=0;  j < paActiveConnections->len; j++)
 	{
 		cActiveConnection = (gchar *)g_ptr_array_index(paActiveConnections,j);
 		cd_debug ("Network-Monitor : Active Connection path : %s\n", cActiveConnection);
@@ -328,7 +328,7 @@
 		{
 			GPtrArray *paDevices = g_value_get_boxed (v);
 			cd_debug (" %d devices\n", paDevices->len);
-			for (k=0; k<paDevices->len; k++)
+			for (k=0;  k < paDevices->len; k++)
 			{
 				// on recupere le device.
 				cDevice = (gchar *)g_ptr_array_index(paDevices,k);
@@ -595,7 +595,7 @@
 	{
 		GByteArray *a = g_value_get_boxed (v);
 		myData.cESSID = g_new0 (gchar, a->len+1);
-		for (int i = 0; i < a->len; i ++)
+		for (uint i = 0; i < a->len; i ++)
 		{
 			myData.cESSID[i] = a->data[i];
 		}

=== modified file 'Network-Monitor/src/applet-dbus-callbacks.c'
--- Network-Monitor/src/applet-dbus-callbacks.c	2010-08-10 00:05:57 +0000
+++ Network-Monitor/src/applet-dbus-callbacks.c	2011-09-26 20:21:33 +0000
@@ -73,7 +73,7 @@
 			
 			case 2:  // NM_STATE_CONNECTING
 				cairo_dock_show_temporary_dialog_with_icon (D_("Connecting..."), myIcon, myContainer, 4000, "same icon");
-				cairo_dock_request_icon_animation (myIcon, myContainer, myConfig.cAnimation, 1e3);
+				cairo_dock_request_icon_animation (myIcon, CAIRO_DOCK (myContainer), myConfig.cAnimation, 1e3);
 				myData.iPreviousQuality = 0;
 				cd_NetworkMonitor_draw_icon ();
 			break;

=== modified file 'Network-Monitor/src/applet-draw.c'
--- Network-Monitor/src/applet-draw.c	2011-04-20 20:46:51 +0000
+++ Network-Monitor/src/applet-draw.c	2011-09-26 20:21:33 +0000
@@ -34,7 +34,10 @@
 	if (myData.iPreviousQuality != myData.iQuality)
 	{
 		myData.iPreviousQuality = myData.iQuality;
-		CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+		if (myConfig.defaultTitle) // has another default name
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+		else
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
 		CD_APPLET_SET_QUICK_INFO_ON_MY_ICON ("N/A");
 		cd_NetworkMonitor_draw_icon_with_effect (WIFI_QUALITY_NO_SIGNAL);
 		

=== modified file 'Network-Monitor/src/applet-menu.c'
--- Network-Monitor/src/applet-menu.c	2010-08-10 00:05:57 +0000
+++ Network-Monitor/src/applet-menu.c	2011-09-26 20:21:33 +0000
@@ -32,7 +32,7 @@
 	gchar *cConnection;
 	GHashTable *pSettings, *pSubSettings;
 	GValue *v;
-	int i;
+	uint i;
 	for (i = 0; i < paConnections->len; i++)
 	{
 		cConnection = (gchar *)g_ptr_array_index(paConnections, i);
@@ -119,7 +119,7 @@
 	GList *pConnList = NULL;
 	//\_____________ On cherche une connection qui ait le meme type (wifi ou filaire), et soit le meme SSID, soit la meme interface.
 	gchar *cConnection;
-	int i;
+	uint i;
 	for (i = 0; i < paConnections->len; i++)
 	{
 		cConnection = (gchar *)g_ptr_array_index(paConnections, i);
@@ -141,22 +141,30 @@
 		GHashTable *pSettings = g_hash_table_new_full (g_str_hash,
 			g_str_equal,
 			g_free,
-			g_hash_table_destroy);
+			(GDestroyNotify) g_hash_table_destroy);
 		
 		GHashTable *pSubSettings = g_hash_table_new_full (g_str_hash,
 			g_str_equal,
 			g_free,
 			g_free);
-		g_hash_table_insert (pSettings, "connection", pSubSettings);
-		g_hash_table_insert (pSubSettings, "type", g_strdup ("802-11-wireless"));
-		g_hash_table_insert (pSettings, "id", g_strdup_printf ("CD - %s", pItemData->cSsid));
+		const gchar *cConnectionTxt = "connection";
+		const gchar *cTypeTxt = "type";
+		const gchar *cWirelessTxt = "802-11-wireless";
+		const gchar *cIdTxt = "id";
+		const gchar *cSsidTxt = "ssid";
+		const gchar *cModeTxt = "mode";
+		const gchar *cInfrastructureTxt = "infrastructure";
+		const gchar *cCSsidTxt = g_strdup_printf ("CD - %s", pItemData->cSsid);
+		g_hash_table_insert (pSettings, &cConnectionTxt, pSubSettings);
+		g_hash_table_insert (pSubSettings, &cTypeTxt, &cWirelessTxt);
+		g_hash_table_insert (pSettings, &cIdTxt, &cCSsidTxt);
 		
 		pSubSettings = g_hash_table_new_full (g_str_hash,
 			g_str_equal,
 			g_free,
 			g_free);
-		g_hash_table_insert (pSubSettings, "ssid", g_strdup (pItemData->cSsid));
-		g_hash_table_insert (pSubSettings, "mode", g_strdup ("infrastructure"));
+		g_hash_table_insert (pSubSettings, &cSsidTxt, &pItemData->cSsid);
+		g_hash_table_insert (pSubSettings, &cModeTxt, &cInfrastructureTxt);
 		
 		// AddConnection
 		DBusGProxy *dbus_proxy_Settings = cairo_dock_create_new_system_proxy (
@@ -191,7 +199,7 @@
 		
 		//ActivateConnection ( s: service_name, o: connection, o: device, o: specific_object )o
 		GError *erreur = NULL;
-		GValue active_connection_path = {0};
+		GValue active_connection_path = { 0, { { 0 } } };
 		g_value_init (&active_connection_path, DBUS_TYPE_G_OBJECT_PATH);
 		
 		gchar *cNewActiveConnectionPath = NULL;
@@ -233,7 +241,7 @@
 		DBusGProxy *dbus_proxy_ConnectionSettings;
 		GError *erreur = NULL;
 		GHashTable *pSettingsTable;
-		int i;
+		uint i;
 		for (i = 0; i < paConnections->len; i++)
 		{
 			cConnection = (gchar *)g_ptr_array_index(paConnections, i);
@@ -281,13 +289,13 @@
 	gchar *cAccessPointPath;
 	GHashTable *hProperties;
 	GValue *v;
-	guint iPercent;
-	gchar *cSsid;
+	gint iPercent;
+	gchar *cSsid = NULL;
 	const gchar *cHwAddress;
 	int iMode, iWirelessCapabilities;
 	CDMenuItemData *pItemData;
 	GtkWidget *pHBox;
-	int i, j;
+	uint i, j;
 	for (i = 0; i < paDevices->len; i++)
 	{
 		// on recupere le device.
@@ -387,7 +395,7 @@
 				v = (GValue *)g_hash_table_lookup (hProperties, "Strength");
 				if (v != NULL && G_VALUE_HOLDS_UCHAR (v))
 				{
-					iPercent = (gint) g_value_get_uchar (v);
+					iPercent = g_value_get_uchar (v);
 				}
 				
 				v = (GValue *)g_hash_table_lookup (hProperties, "Ssid");
@@ -437,7 +445,7 @@
 				
 				cd_debug ("%d) %s : %s (%s, %d%%)\n", j, cSsid, cAccessPointPath, cHwAddress, iPercent);
 				
-				gchar *cImage = NULL;
+				const gchar *cImage = NULL;
 				if (iPercent > 80)
 					cImage = MY_APPLET_SHARE_DATA_DIR"/link-5.svg";
 				else if (iPercent > 60)
@@ -480,7 +488,7 @@
 						int n = GPOINTER_TO_INT (pConnList->data);
 						pItemData->cConnection = g_strdup (g_ptr_array_index (paConnections, n));
 					}
-					cairo_dock_add_in_menu_with_stock_and_data (cSsid, cImage, _on_select_access_point, pMenu, pItemData);
+					cairo_dock_add_in_menu_with_stock_and_data (cSsid, cImage, (GFunc) _on_select_access_point, pMenu, pItemData);
 				}
 				else
 				{
@@ -505,7 +513,7 @@
 							pItemData->cDevice = g_strdup (cDevice);
 							pItemData->cAccessPoint = g_strdup (cAccessPointPath);
 							
-							cairo_dock_add_in_menu_with_stock_and_data (cID, NULL, _on_select_access_point, pSubMenu, GINT_TO_POINTER (n));
+							cairo_dock_add_in_menu_with_stock_and_data (cID, NULL, (GFunc) _on_select_access_point, pSubMenu, GINT_TO_POINTER (n));
 						}
 					}
 				}

=== modified file 'Network-Monitor/src/applet-notifications.c'
--- Network-Monitor/src/applet-notifications.c	2011-04-20 20:46:51 +0000
+++ Network-Monitor/src/applet-notifications.c	2011-09-26 20:21:33 +0000
@@ -91,9 +91,10 @@
 	else if (g_iDesktopEnv == CAIRO_DOCK_KDE) { //Ajouter les lignes de KDE
 		//cCommand = 
 	}*/
-        cCommand = "nm-connection-editor";  // network-admin n'est plus present depuis Intrepid, et nm-connection-editor marche aussi sous KDE.
+        cCommand = g_strdup ("nm-connection-editor");  // network-admin n'est plus present depuis Intrepid, et nm-connection-editor marche aussi sous KDE.
 	
 	cairo_dock_launch_command (cCommand);
+	g_free (cCommand);
 }
 CD_APPLET_ON_BUILD_MENU_BEGIN
 	GtkWidget *pSubMenu = CD_APPLET_CREATE_MY_SUB_MENU ();

=== modified file 'Network-Monitor/src/applet-wifi.c'
--- Network-Monitor/src/applet-wifi.c	2010-08-10 00:05:57 +0000
+++ Network-Monitor/src/applet-wifi.c	2011-09-26 20:21:33 +0000
@@ -122,7 +122,7 @@
 	gchar **cInfopipesList = g_strsplit (cResult, "\n", -1);
 	g_free (cResult);
 	gchar *cOneInfopipe, *str, *str2;
-	int i, iMaxValue;
+	int i, iMaxValue = 0;
 	for (i = 0; cInfopipesList[i] != NULL; i ++)
 	{
 		cOneInfopipe = cInfopipesList[i];
@@ -163,10 +163,10 @@
 		{
 			_pick_string ("Access Point", myData.wifi._cAccessPoint);
 		}
-		
-		if (myData.wifi._iQuality == -1)  // Link Quality=54/100 Signal level=-76 dBm Noise level=-78 dBm OU Link Quality:5  Signal level:219  Noise level:177
+
+		uint iQuality = -1;
+		if (myData.wifi._iQuality == iQuality)  // Link Quality=54/100 Signal level=-76 dBm Noise level=-78 dBm OU Link Quality:5  Signal level:219  Noise level:177
 		{
-			iMaxValue = 0;
 			_pick_value ("Link Quality", myData.wifi._iQuality, iMaxValue);
 			if (iMaxValue != 0)  // vieille version, qualite indiquee en %
 			{

=== modified file 'RSSreader/data/RSSreader.conf.in'
--- RSSreader/data/RSSreader.conf.in	2011-08-09 18:08:08 +0000
+++ RSSreader/data/RSSreader.conf.in	2011-09-26 20:21:33 +0000
@@ -60,7 +60,7 @@
 #b Is detached from the dock
 initially detached=true
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Recent-Events/data/Recent-Events.conf.in'
--- Recent-Events/data/Recent-Events.conf.in	2011-08-09 18:08:08 +0000
+++ Recent-Events/data/Recent-Events.conf.in	2011-09-26 20:21:33 +0000
@@ -60,7 +60,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Recent-Events/src/applet-dialog.c'
--- Recent-Events/src/applet-dialog.c	2011-08-09 18:08:08 +0000
+++ Recent-Events/src/applet-dialog.c	2011-09-26 20:21:33 +0000
@@ -81,13 +81,13 @@
 	gint64 iTimeStamp;
 	const gchar *cEventURI;
 	guint id;
-	gchar *cName = NULL, *cURI = NULL, *cIconName = NULL, *cPath = NULL;
+	gchar *cName = NULL, *cURI = NULL, *cIconName = NULL, *cIconPath, *cPath = NULL;
 	double fOrder;
 	int iVolumeID;
 	gboolean bIsDirectory;
 	GdkPixbuf *pixbuf;
 	GtkTreeIter iter;
-	GHashTable *pHashTable = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);
+	GHashTable *pHashTable = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);  // used to prevent doubles
 	
 	//\_____________ parse all the events.
 	while (zeitgeist_result_set_has_next (pEvents))
@@ -121,11 +121,13 @@
 			else
 			{
 				cairo_dock_fm_get_file_info (cEventURI, &cName, &cURI, &cIconName, &bIsDirectory, &iVolumeID, &fOrder, CAIRO_DOCK_FM_SORT_BY_DATE);
-				g_free (cName);
-				g_free (cURI);
 			}
 			if (cIconName != NULL)
-				pixbuf = gdk_pixbuf_new_from_file_at_size (cIconName, 32, 32, NULL);
+			{
+				cIconPath = cairo_dock_search_icon_s_path (cIconName);
+				pixbuf = gdk_pixbuf_new_from_file_at_size (cIconPath, 32, 32, NULL);
+				g_free (cIconPath);
+			}
 			else
 				pixbuf = NULL;
 			
@@ -166,7 +168,13 @@
 				CD_MODEL_ICON, pixbuf,
 				CD_MODEL_DATE, iTimeStamp,
 				CD_MODEL_ID, id, -1);
+			
 			g_free (cIconName);
+			cIconName = NULL;
+			g_free (cName);
+			cName = NULL;
+			g_free (cURI);
+			cURI = NULL;
 			if (pixbuf)
 				g_object_unref (pixbuf);
 			g_free (cPath);
@@ -467,11 +475,11 @@
 		// establish the connection to Zeitgesit.
 		if (myData.pLog == NULL)  // first search.
 		{
-			g_print ("first search\n");
+			cd_debug ("first search");
 			myData.pLog = zeitgeist_log_new ();  // may launch the Zeitgeist daemon if it's not yet running.
 			if (! zeitgeist_log_is_connected (myData.pLog))  // the connection may not be immediate (even if the daemon is already running), in this case come back in 1s.
 			{
-				g_print ("come back in 1s...\n");
+				cd_debug ("come back in 1s...");
 				g_timeout_add_seconds (1, _show_dialog_delayed, NULL);
 				return;
 			}

=== modified file 'Recent-Events/src/applet-notifications.c'
--- Recent-Events/src/applet-notifications.c	2011-04-20 20:46:51 +0000
+++ Recent-Events/src/applet-notifications.c	2011-09-26 20:21:33 +0000
@@ -101,7 +101,7 @@
 	gint                i,n;
 	GtkWidget *pMenuItem = NULL, *pSubMenu = NULL;
 	const gchar *cEventURI;
-	gchar *cName = NULL, *cURI = NULL, *cIconName = NULL;
+	gchar *cName = NULL, *cURI = NULL, *cIconName = NULL, *cIconPath;
 	gchar *cCommand;
 	double fOrder;
 	int iVolumeID;
@@ -119,16 +119,21 @@
 			cd_debug (" + %s", cEventURI);
 			
 			cairo_dock_fm_get_file_info (cEventURI, &cName, &cURI, &cIconName, &bIsDirectory, &iVolumeID, &fOrder, 0);
-			//g_free (cName);
-			//g_free (cURI);
 			
 			gchar *cPath = g_filename_from_uri (cEventURI, NULL, NULL);  // some programs dont support URI, so we feed them with path.
 			cCommand = g_strdup_printf ("%s \"%s\"", pIcon->cCommand, cPath);
 			g_free (cPath);
 			s_pEventList = g_list_prepend (s_pEventList, cCommand);
 			
-			CD_APPLET_ADD_IN_MENU_WITH_STOCK_AND_DATA (zeitgeist_subject_get_text (subject), cIconName, _open_file, pSubMenu, cCommand);
-			//g_free (cIconName);
+			cIconPath = cairo_dock_search_icon_s_path (cIconName);
+			CD_APPLET_ADD_IN_MENU_WITH_STOCK_AND_DATA (zeitgeist_subject_get_text (subject), cIconPath, _open_file, pSubMenu, cCommand);
+			g_free (cIconPath);
+			g_free (cIconName);
+			cIconName = NULL;
+			g_free (cName);
+			cName = NULL;
+			g_free (cURI);
+			cURI = NULL;
 		}
 	}
 	if (pSubMenu)

=== modified file 'Recent-Events/src/applet-search.c'
--- Recent-Events/src/applet-search.c	2011-08-09 18:08:08 +0000
+++ Recent-Events/src/applet-search.c	2011-09-26 20:21:33 +0000
@@ -417,7 +417,6 @@
 	if (iNbDays > 0)
 	{
 		// find events IDs of less than 'iNbDays' days
-		GArray *event_ids;
 		time_t t = (time_t) time (NULL);
 		gint64 now = t * 1e3;  // msec
 		ZeitgeistTimeRange *time_range = zeitgeist_time_range_new (now - iNbDays*24*3600*1e3, now);

=== modified file 'Scooby-Do/src/applet-draw.c'
--- Scooby-Do/src/applet-draw.c	2011-04-20 20:46:51 +0000
+++ Scooby-Do/src/applet-draw.c	2011-09-26 20:21:33 +0000
@@ -45,7 +45,7 @@
 		if (pIcon->pIconBuffer == NULL && pIcon->iIconTexture == 0)  // icone pas encore chargee.
 			continue;
 		pParentDock = cairo_dock_search_dock_from_name (pIcon->cParentDockName);
-		cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pParentDock), &iWidth, &iHeight);
+		cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 		if (iHeight != 0)
 		{
 			fZoom = (double) g_pMainDock->container.iHeight/2 / iHeight;
@@ -71,7 +71,7 @@
 		if (pIcon->pIconBuffer == NULL && pIcon->iIconTexture == 0)  // icone pas encore chargee.
 			continue;
 		pParentDock = cairo_dock_search_dock_from_name (pIcon->cParentDockName);
-		cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pParentDock), &iWidth, &iHeight);
+		cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 		if (iHeight != 0)
 		{
 			fZoom = (double) g_pMainDock->container.iHeight/2 / iHeight;
@@ -161,7 +161,7 @@
 				if (pIcon->pIconBuffer == NULL)  // icone pas encore chargee.
 					continue;
 				pParentDock = cairo_dock_search_dock_from_name (pIcon->cParentDockName);
-				cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pParentDock), &iWidth, &iHeight);
+				cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 				fZoom = fIconScale * pMainDock->container.iHeight/2 / iHeight * (myData.pCurrentMatchingElement == ic ? 1. : 1.);
 				cairo_save (pCairoContext);
 				
@@ -346,7 +346,7 @@
 				if (pIcon->iIconTexture == 0)  // icone pas encore chargee.
 					continue;
 				pParentDock = cairo_dock_search_dock_from_name (pIcon->cParentDockName);
-				cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pParentDock), &iWidth, &iHeight);
+				cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 				fZoom = (double) pMainDock->container.iHeight/2 / iHeight * (myData.pCurrentMatchingElement == ic ? 1. : 1.);
 				glPushMatrix ();
 				

=== modified file 'Scooby-Do/src/applet-icon-finder.c'
--- Scooby-Do/src/applet-icon-finder.c	2010-09-18 14:20:27 +0000
+++ Scooby-Do/src/applet-icon-finder.c	2011-09-26 20:21:33 +0000
@@ -159,7 +159,7 @@
 		myData.iPreviousMatchingOffset = myData.iCurrentMatchingOffset;  // on part du point courant.
 		CairoDock *pParentDock = cairo_dock_search_dock_from_name (pIcon->cParentDockName);
 		int iWidth, iHeight;
-		cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pParentDock), &iWidth, &iHeight);
+		cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 		if (iHeight != 0)
 		{
 			double fZoom = (double) g_pMainDock->container.iHeight/2 / iHeight;

=== modified file 'Status-Notifier/data/Status-Notifier.conf.in'
--- Status-Notifier/data/Status-Notifier.conf.in	2011-08-09 18:08:08 +0000
+++ Status-Notifier/data/Status-Notifier.conf.in	2011-09-26 20:21:33 +0000
@@ -60,7 +60,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Status-Notifier/src/CMakeLists.txt'
--- Status-Notifier/src/CMakeLists.txt	2011-08-09 18:08:08 +0000
+++ Status-Notifier/src/CMakeLists.txt	2011-09-26 20:21:33 +0000
@@ -25,6 +25,7 @@
 add_definitions (-DMY_APPLET_DOCK_VERSION="${dock_version}")
 add_definitions (-DMY_APPLET_ICON_FILE="icon.png")
 add_definitions (-DINDICATOR_OLD_NAMES=${INDICATOR_OLD_NAMES})
+add_definitions (-DINDICATOR_APPLICATIONADDED_HAS_HINT=${INDICATOR_APPLICATIONADDED_HAS_HINT})
 add_definitions (-DCD_PLUGINS_DIR="${pluginsdir}")
 
 include_directories (

=== modified file 'Status-Notifier/src/applet-host-ias.c'
--- Status-Notifier/src/applet-host-ias.c	2011-08-09 18:08:08 +0000
+++ Status-Notifier/src/applet-host-ias.c	2011-09-26 20:21:33 +0000
@@ -94,7 +94,12 @@
 		data2);
 }
 #else  // Natty
-static void _cd_cclosure_marshal_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING (GClosure *closure,
+#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+static void _cd_cclosure_marshal_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING_STRING (
+#else
+static void _cd_cclosure_marshal_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING (
+#endif
+	GClosure *closure,
 	GValue *return_value G_GNUC_UNUSED,
 	guint n_param_values,
 	const GValue *param_values,
@@ -102,7 +107,11 @@
 	gpointer marshal_data)
 {
 	//cd_debug ("=== %s ()\n", __func__);
+	#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+	typedef void (*GMarshalFunc_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING_STRING) (
+	#else
 	typedef void (*GMarshalFunc_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING) (
+	#endif
 		gpointer     data1,
 		gchar      *arg_1,
 		gint        arg_2,
@@ -112,11 +121,23 @@
 		gchar      *arg_6,
 		gchar      *arg_7,
 		gchar      *arg_8,
+		#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+		gchar      *arg_9,
+		#endif
 		gpointer     data2);
+	#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+	register GMarshalFunc_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING_STRING callback;
+	#else
 	register GMarshalFunc_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING callback;
+	#endif
 	register GCClosure *cc = (GCClosure*) closure;
 	register gpointer data1, data2;
-	g_return_if_fail (n_param_values == 9);  // return_value est NULL ici, car la callback ne renvoit rien.
+	// return_value est NULL ici, car la callback ne renvoit rien.
+	#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+	g_return_if_fail (n_param_values == 10);
+	#else
+	g_return_if_fail (n_param_values == 9);
+	#endif
 
 	if (G_CCLOSURE_SWAP_DATA (closure))
 	{
@@ -128,7 +149,12 @@
 		data1 = g_value_peek_pointer (param_values + 0);
 		data2 = closure->data;
 	}
-	callback = (GMarshalFunc_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING) (marshal_data ? marshal_data : cc->callback);
+	#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+	callback = (GMarshalFunc_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING_STRING)
+	#else
+	callback = (GMarshalFunc_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING)
+	#endif
+		(marshal_data ? marshal_data : cc->callback);
 
 	callback (data1,
 		(char*) g_value_get_string (param_values + 1),
@@ -139,6 +165,9 @@
 		(char*) g_value_get_string (param_values + 6),
 		(char*) g_value_get_string (param_values + 7),
 		(char*) g_value_get_string (param_values + 8),
+		#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+		(char*) g_value_get_string (param_values + 9),
+		#endif
 		data2);
 }
 #endif
@@ -150,6 +179,9 @@
 static void on_new_application (DBusGProxy *proxy_watcher, const gchar *cIconName, gint iPosition, const gchar *cAdress, const gchar *cObjectPath, const gchar *cIconThemePath, const gchar *cLabel, const gchar *cLabelGuide,
 #if (INDICATOR_OLD_NAMES == 0)  // Natty
 const gchar *cAccessbleDesc,  // WTF is this new param ??
+#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+const gchar *cHint,
+#endif
 #endif
 CairoDockModuleInstance *myApplet)
 {
@@ -157,6 +189,9 @@
 	cd_debug ("=== %s (%s, %s, %s, %s, %d)", __func__, cAdress, cObjectPath, cIconName, cIconThemePath, iPosition);
 	#if (INDICATOR_OLD_NAMES == 0)  // Natty
 	cd_debug ("    %s", cAccessbleDesc);
+	#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+	cd_debug ("    %s", cHint);
+	#endif
 	#endif
 	
 	// position +1 for items placed after this one.
@@ -275,7 +310,7 @@
 		if (v && G_VALUE_HOLDS_BOXED (v))
 			cObjectPath = (gchar*)g_value_get_boxed (v);
 
-		/*g_print ("=== cObjectPath : %s\n", cObjectPath);
+		/*cd_debug ("=== cObjectPath : %s", cObjectPath);
 		if (cObjectPath != NULL && strncmp (cObjectPath, CD_INDICATOR_APPLICATION_ITEM_OBJ, strlen (CD_INDICATOR_APPLICATION_ITEM_OBJ)) == 0)
 		{
 			gchar *str = strrchr (cObjectPath, '/');  // I think this is because this path is actually the menu path, and fortunately it's just under the item object's path.
@@ -353,14 +388,19 @@
 	dbus_g_object_register_marshaller(_cd_cclosure_marshal_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING,
 			G_TYPE_NONE, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
 	#else  // Natty
-	dbus_g_object_register_marshaller(_cd_cclosure_marshal_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING,
+	dbus_g_object_register_marshaller(
+	#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+	_cd_cclosure_marshal_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING_STRING,
+	#else
+	_cd_cclosure_marshal_VOID__STRING_INT_STRING_STRING_STRING_STRING_STRING_STRING,
+	#endif
 			G_TYPE_NONE, G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING,
-			#if (INDICATOR_OLD_NAMES != 0)  // Maverick
-			G_TYPE_STRING,  // dbusobject
-			#else  // Natty
 			DBUS_TYPE_G_OBJECT_PATH,  // dbusobject
+			G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
+			#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+			G_TYPE_STRING,
 			#endif
-			G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
+			G_TYPE_INVALID);
 	#endif
 	dbus_g_proxy_add_signal(myData.pProxyIndicatorApplicationService, "ApplicationAdded",
 		G_TYPE_STRING,  // iconname
@@ -376,6 +416,9 @@
 		G_TYPE_STRING,  // labelguide
 		#if (INDICATOR_OLD_NAMES == 0)  // Natty
 		G_TYPE_STRING,  // accessibledesc
+		#if (INDICATOR_APPLICATIONADDED_HAS_HINT == 1)
+		G_TYPE_STRING, // hint => only with indicator-0.4 (Oneiric)
+		#endif
 		#endif
 		G_TYPE_INVALID);
 	dbus_g_proxy_connect_signal(myData.pProxyIndicatorApplicationService, "ApplicationAdded",
@@ -429,7 +472,7 @@
 	}
 	CD_APPLET_LEAVE ();
 }
-static void _on_ias_owner_changed (gboolean bOwned, gpointer data)
+static void _on_ias_owner_changed (const gchar *cName, gboolean bOwned, gpointer data)
 {
 	CD_APPLET_ENTER;
 	cd_debug ("=== Indicator Applications Service is on the bus (%d)", bOwned);
@@ -475,7 +518,7 @@
 	// if present, set up proxy, else try to start the service.
 	if (bPresent)
 	{
-		_on_ias_owner_changed (TRUE, NULL);
+		_on_ias_owner_changed (CD_INDICATOR_APPLICATION_ADDR, TRUE, NULL);
 	}
 	else  // not present, maybe the service is not started => try starting it.
 	{
@@ -519,5 +562,5 @@
 	}
 	
 	cairo_dock_stop_watching_dbus_name_owner (CD_INDICATOR_APPLICATION_ADDR,
-		(CairoDockOnAppliPresentOnDbus) _on_detect_ias);
+		(CairoDockDbusNameOwnerChangedFunc) _on_ias_owner_changed);
 }

=== modified file 'Status-Notifier/src/applet-host-kde.c'
--- Status-Notifier/src/applet-host-kde.c	2011-08-09 18:08:08 +0000
+++ Status-Notifier/src/applet-host-kde.c	2011-09-26 20:21:33 +0000
@@ -220,7 +220,7 @@
 	}
 	CD_APPLET_LEAVE ();
 }
-static void _on_watcher_owner_changed (gboolean bOwned, gpointer data)
+static void _on_watcher_owner_changed (const gchar *cName, gboolean bOwned, gpointer data)
 {
 	cd_debug ("=== Watcher is on the bus (%d)", bOwned);
 	CD_APPLET_ENTER;
@@ -283,7 +283,7 @@
 	// if present, set up proxy.
 	if (bPresent)
 	{
-		_on_watcher_owner_changed (TRUE, NULL);
+		_on_watcher_owner_changed (CD_STATUS_NOTIFIER_WATCHER_ADDR, TRUE, NULL);
 	}
 	else if (myConfig.bCompactMode)  // in compact mode, draw a 'failed' image to not have an empty icon.
 	{
@@ -321,5 +321,5 @@
 		s_pDetectWatcherCall = NULL;
 	}
 	cairo_dock_stop_watching_dbus_name_owner (CD_STATUS_NOTIFIER_WATCHER_ADDR,
-		(CairoDockOnAppliPresentOnDbus) _on_detect_watcher);
+		(CairoDockDbusNameOwnerChangedFunc) _on_watcher_owner_changed);
 }

=== modified file 'Status-Notifier/src/applet-item.c'
--- Status-Notifier/src/applet-item.c	2011-08-09 18:08:08 +0000
+++ Status-Notifier/src/applet-item.c	2011-09-26 20:21:33 +0000
@@ -269,7 +269,7 @@
 		
 		if (pItem->cOverlayIconName != NULL)
 		{
-			CairoEmblem *pEmblem = cairo_dock_make_emblem (pItem->cOverlayIconName, pIcon, CAIRO_CONTAINER (myIcon->pSubDock));
+			CairoEmblem *pEmblem = cairo_dock_make_emblem (pItem->cOverlayIconName, pIcon);
 			cairo_dock_set_emblem_position (pEmblem, CAIRO_DOCK_EMBLEM_MIDDLE);
 			cairo_dock_draw_emblem_on_icon (pEmblem, pIcon, CAIRO_CONTAINER (myIcon->pSubDock));
 			cairo_dock_free_emblem (pEmblem);

=== modified file 'System-Monitor/data/System-Monitor.conf.in'
--- System-Monitor/data/System-Monitor.conf.in	2011-08-09 18:08:08 +0000
+++ System-Monitor/data/System-Monitor.conf.in	2011-09-26 20:21:33 +0000
@@ -20,9 +20,12 @@
 #{Set to 0 to use the default applet size}
 icon size = 0;0
 
-#b Always display the icon, even when the dock is hidden?
+#B Always display the icon, even when the dock is hidden?
 always visi = false
 
+#C+ Background color to add in this case
+bg color = .8;.8;.8;.5
+
 order=
 
 #F[Applet's Handbook]
@@ -59,7 +62,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true
@@ -111,9 +114,11 @@
 #X[Gauge;gtk-dialog-info]
 frame_gauge=
 
-#h+[@gaugesdir@;gauges;gauges2] Choose one of the available themes:/
+#h+[@gaugesdir@;gauges;gauges3;system] Choose one of the available themes:/
 theme = Turbo-night-fuel
 
+#l+[No;With dock orientation;Yes] Rotate applet theme :
+rotate theme = No
 
 #X[Graph;gtk-dialog-info]
 frame_graph=

=== modified file 'System-Monitor/src/applet-config.c'
--- System-Monitor/src/applet-config.c	2011-04-20 20:46:51 +0000
+++ System-Monitor/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -45,6 +45,7 @@
 	myConfig.iDisplayType = CD_CONFIG_GET_INTEGER ("Configuration", "renderer");
 	
 	myConfig.cGThemePath = CD_CONFIG_GET_GAUGE_THEME ("Configuration", "theme");
+	myConfig.iRotateTheme = CD_CONFIG_GET_INTEGER ("Configuration", "rotate theme");
 	
 	myConfig.iGraphType = CD_CONFIG_GET_INTEGER ("Configuration", "graphic type");
 	myConfig.bMixGraph = CD_CONFIG_GET_BOOLEAN ("Configuration", "mix graph");

=== modified file 'System-Monitor/src/applet-init.c'
--- System-Monitor/src/applet-init.c	2011-04-20 20:46:51 +0000
+++ System-Monitor/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -66,7 +66,8 @@
 		memset (&attr, 0, sizeof (CairoGaugeAttribute));
 		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
 		pRenderAttr->cModelName = "gauge";
-		attr.cThemePath = myConfig.cGThemePath;
+		pRenderAttr->iRotateTheme = myConfig.iRotateTheme;
+		attr.cThemePath = myConfig.cGThemePath;  
 	}
 	else if (myConfig.iDisplayType == CD_SYSMONITOR_GRAPH)
 	{
@@ -74,10 +75,10 @@
 		memset (&attr, 0, sizeof (CairoGraphAttribute));
 		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
 		pRenderAttr->cModelName = "graph";
-		pRenderAttr->iMemorySize = (myIcon->fWidth > 1 ? myIcon->fWidth : 32);  // fWidht peut etre <= 1 en mode desklet au chargement.
-		//g_print ("pRenderAttr->iMemorySize : %d\n", pRenderAttr->iMemorySize);
+		int w, h;
+		CD_APPLET_GET_MY_ICON_EXTENT (&w, &h);
+		pRenderAttr->iMemorySize = (w > 1 ? w : 32);  // fWidth peut etre <= 1 en mode desklet au chargement.
 		attr.iType = myConfig.iGraphType;
-		attr.iRadius = 10;
 		attr.bMixGraphs = myConfig.bMixGraph;
 		double fHighColor[CD_SYSMONITOR_NB_MAX_VALUES*3];
 		double fLowColor[CD_SYSMONITOR_NB_MAX_VALUES*3];
@@ -193,7 +194,10 @@
 		CD_APPLET_SET_QUICK_INFO_ON_MY_ICON (NULL);
 		if (myConfig.iInfoDisplay != CAIRO_DOCK_INFO_ON_LABEL)
 		{
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			if (myConfig.defaultTitle) // has another default name
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			else
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
 		}
 		
 		myData.bAcquisitionOK = TRUE;

=== modified file 'System-Monitor/src/applet-monitor.c'
--- System-Monitor/src/applet-monitor.c	2011-08-09 18:08:08 +0000
+++ System-Monitor/src/applet-monitor.c	2011-09-26 20:21:33 +0000
@@ -78,7 +78,12 @@
 		cd_warning ("One or more datas couldn't be retrieved");
 		CD_APPLET_SET_QUICK_INFO_ON_MY_ICON ("N/A");  // plus discret qu'une bulle de dialogue.
 		if (myConfig.iInfoDisplay == CAIRO_DOCK_INFO_ON_LABEL)
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+		{
+			if (myConfig.defaultTitle) // has another default name
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			else
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
+		}
 		memset (s_fValues, 0, sizeof (s_fValues));
 		CD_APPLET_RENDER_NEW_DATA_ON_MY_ICON (s_fValues);
 	}

=== modified file 'System-Monitor/src/applet-sensors.c'
--- System-Monitor/src/applet-sensors.c	2011-04-20 20:46:51 +0000
+++ System-Monitor/src/applet-sensors.c	2011-09-26 20:21:33 +0000
@@ -214,7 +214,7 @@
 						break;
 					val = get_value (chip, sf);  // rpm
 					if (val == 0)
-						return;
+						break;
 					
 					// alarm
 					sf = sensors_get_subfeature (chip, feature,
@@ -383,7 +383,7 @@
 						break;
 					val = get_value (chip, sf);  // rpm
 					if (val == 0)
-						return;
+						break;
 					
 					// alarm
 					sf = sensors_get_subfeature (chip, feature,

=== modified file 'System-Monitor/src/applet-struct.h'
--- System-Monitor/src/applet-struct.h	2011-04-20 20:46:51 +0000
+++ System-Monitor/src/applet-struct.h	2011-09-26 20:21:33 +0000
@@ -80,6 +80,7 @@
 	gint iAlertLimit;
 	gboolean bAlert;
 	gboolean bAlertSound;
+	RendererRotateTheme iRotateTheme;
 } ;
 
 typedef struct {

=== modified file 'Toons/data/Toons.conf.in'
--- Toons/data/Toons.conf.in	2011-08-09 18:08:08 +0000
+++ Toons/data/Toons.conf.in	2011-09-26 20:21:33 +0000
@@ -20,9 +20,12 @@
 #{Set to 0 to use the default applet size}
 icon size = 0;0
 
-#b Always display the icon, even when the dock is hidden?
+#B Always display the icon, even when the dock is hidden?
 always visi = false
 
+#C+ Background color to add in this case
+bg color = .8;.8;.8;.5
+
 order=
 
 #F[Applet's Handbook]
@@ -60,7 +63,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'Xgamma/data/Xgamma.conf.in'
--- Xgamma/data/Xgamma.conf.in	2011-08-09 18:08:08 +0000
+++ Xgamma/data/Xgamma.conf.in	2011-09-26 20:21:33 +0000
@@ -60,7 +60,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'alsaMixer/data/AlsaMixer.conf.in'
--- alsaMixer/data/AlsaMixer.conf.in	2011-08-09 18:08:08 +0000
+++ alsaMixer/data/AlsaMixer.conf.in	2011-09-26 20:21:33 +0000
@@ -59,7 +59,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true
@@ -140,17 +140,29 @@
 #l[No;On label;On icon] Display volume :
 display volume = 1
 
-#l+[None;Zoom;Transparency;Draw Bar] Effect to apply to the icon when adjusting volume:
+#v
+sep_disp_vol =
+
+#Y+[None;0;0;Zoom;1;2;Transparency;1;2;Draw Bar;1;2;Gauge;3;2] Effect to apply to the icon when adjusting volume:
 effect = 3
 
 #S+ Default icon:
 #{Leave empty to use the default one.}
 default icon = 
 
+#S+ Mute icon:
+#{Leave empty to use the default one.}
+mute icon = 
+
+#h+[@gaugesdir@;gauges;gauges3;sound] Choose one of the available themes:/
+theme = Turbo-night-fuel
+
+#l+[No;With dock orientation;Yes] Rotate applet theme :
+rotate theme = No
+
+#v
+sep_disp =
+
 #S+ Broken icon:
 #{Leave empty to use the default one.}
 broken icon = 
-
-#S+ Mute icon:
-#{Leave empty to use the default one.}
-mute icon = 

=== modified file 'alsaMixer/src/applet-config.c'
--- alsaMixer/src/applet-config.c	2011-04-20 20:46:51 +0000
+++ alsaMixer/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -60,6 +60,12 @@
 	
 	myConfig.iVolumeEffect = CD_CONFIG_GET_INTEGER ("Configuration", "effect");
 	
+	if (myConfig.iVolumeEffect == VOLUME_EFFECT_GAUGE)
+	{
+		myConfig.cGThemePath = CD_CONFIG_GET_GAUGE_THEME ("Configuration", "theme");
+		myConfig.iRotateTheme = CD_CONFIG_GET_INTEGER ("Configuration", "rotate theme");
+	}
+	
 	myConfig.cDefaultIcon = CD_CONFIG_GET_STRING ("Configuration", "default icon");
 	myConfig.cBrokenIcon = CD_CONFIG_GET_STRING ("Configuration", "broken icon");
 	myConfig.cMuteIcon = CD_CONFIG_GET_STRING ("Configuration", "mute icon");
@@ -77,6 +83,7 @@
 	g_free (myConfig.cDefaultIcon);
 	g_free (myConfig.cBrokenIcon);
 	g_free (myConfig.cMuteIcon);
+	g_free (myConfig.cGThemePath);
 CD_APPLET_RESET_CONFIG_END
 
 
@@ -88,7 +95,8 @@
 	}
 	mixer_stop ();
 	cairo_surface_destroy (myData.pSurface);
-	cairo_surface_destroy (myData.pMuteSurface);
+	if (myData.pMuteSurface)
+		cairo_surface_destroy (myData.pMuteSurface);
 	cairo_dock_dialog_unreference (myData.pDialog);
 	g_free (myData.cErrorMessage);
 	g_free (myData.mixer_card_name);

=== modified file 'alsaMixer/src/applet-draw.c'
--- alsaMixer/src/applet-draw.c	2010-02-14 00:51:22 +0000
+++ alsaMixer/src/applet-draw.c	2011-09-26 20:21:33 +0000
@@ -26,6 +26,8 @@
 #include "applet-mixer.h"
 #include "applet-draw.h"
 
+static void _load_mute_surface (void);
+
 
 int mixer_element_update_with_event (snd_mixer_elem_t *elem, unsigned int mask)
 {
@@ -62,7 +64,21 @@
 		break;
 	}
 	
-	cairo_surface_t *pSurface = (myData.bIsMute ? myData.pMuteSurface : myData.pSurface);
+	
+	cairo_surface_t *pSurface = NULL;
+	if (myConfig.iVolumeEffect != VOLUME_EFFECT_GAUGE)
+	{
+		if (myData.bIsMute)
+		{
+			if (myData.pMuteSurface == NULL)
+				_load_mute_surface ();
+			pSurface = myData.pMuteSurface;
+		}
+		else
+		{
+			pSurface = myData.pSurface;
+		}
+	}
 	
 	switch (myConfig.iVolumeEffect)
 	{
@@ -86,6 +102,18 @@
 			bNeedRedraw = FALSE;
 		break;
 		
+		case VOLUME_EFFECT_GAUGE :
+		{
+			double fPercent;
+			if (myData.bIsMute)
+				fPercent = CAIRO_DATA_RENDERER_UNDEF_VALUE;
+			else
+				fPercent = (double) myData.iCurrentVolume / 100.;
+			CD_APPLET_RENDER_NEW_DATA_ON_MY_ICON (&fPercent);
+			bNeedRedraw = FALSE;
+		}
+		break;
+		
 		default :
 		break;
 	}
@@ -99,7 +127,6 @@
 	}
 	
 	CD_APPLET_LEAVE(0);
-	//return 0;
 }
 
 
@@ -119,3 +146,56 @@
 {
 	CD_APPLET_SET_SURFACE_ON_MY_ICON_WITH_BAR (pSurface, myData.iCurrentVolume * .01);
 }
+
+
+void mixer_load_surfaces (void)
+{
+	if (myData.pSurface != NULL)
+	{
+		cairo_surface_destroy (myData.pSurface);
+		myData.pSurface = NULL;
+	}
+	
+	if (myConfig.cDefaultIcon != NULL)
+	{
+		gchar *cImagePath = cairo_dock_search_icon_s_path (myConfig.cDefaultIcon);
+		if (cImagePath == NULL)
+			cImagePath = cairo_dock_search_image_s_path (myConfig.cDefaultIcon);
+		if (cImagePath != NULL)
+		{
+			myData.pSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cImagePath);
+			g_free (cImagePath);
+		}
+	}
+	
+	if (myData.pSurface == NULL)
+	{
+		myData.pSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (MY_APPLET_SHARE_DATA_DIR"/default.svg");
+	}
+	
+	if (myData.pMuteSurface != NULL)
+	{
+		cairo_surface_destroy (myData.pMuteSurface);
+		myData.pMuteSurface = NULL;
+	}  // don't load the mute surface now, as we often won't even need it in the session. we'll load it on demand.
+}
+
+static void _load_mute_surface (void)
+{
+	if (myConfig.cMuteIcon != NULL)
+	{
+		gchar *cImagePath = cairo_dock_search_icon_s_path (myConfig.cMuteIcon);
+		if (cImagePath == NULL)
+			cImagePath = cairo_dock_search_image_s_path (myConfig.cMuteIcon);
+		if (cImagePath != NULL)
+		{
+			myData.pMuteSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cImagePath);
+			g_free (cImagePath);
+		}
+	}
+	
+	if (myData.pMuteSurface == NULL)
+	{
+		myData.pMuteSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (MY_APPLET_SHARE_DATA_DIR"/mute.svg");
+	}
+}

=== modified file 'alsaMixer/src/applet-draw.h'
--- alsaMixer/src/applet-draw.h	2009-08-26 21:07:39 +0000
+++ alsaMixer/src/applet-draw.h	2011-09-26 20:21:33 +0000
@@ -17,7 +17,6 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-
 #ifndef __APPLET_DRAW__
 #define  __APPLET_DRAW__
 
@@ -33,5 +32,7 @@
 
 void mixer_draw_bar (cairo_surface_t *pSurface);
 
+void mixer_load_surfaces (void);
+
 
 #endif

=== modified file 'alsaMixer/src/applet-init.c'
--- alsaMixer/src/applet-init.c	2011-08-09 18:08:08 +0000
+++ alsaMixer/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -45,47 +45,11 @@
 CD_APPLET_DEFINE_END
 
 
-static void _load_surfaces (void)
-{
-	GString *sImagePath = g_string_new ("");
-	
-	if (myData.pSurface != NULL)
-		cairo_surface_destroy (myData.pSurface);
-	if (myConfig.cDefaultIcon != NULL)
-	{
-		gchar *cUserImagePath = cairo_dock_generate_file_path (myConfig.cDefaultIcon);
-		myData.pSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cUserImagePath);
-		g_free (cUserImagePath);
-	}
-	else
-	{
-		g_string_printf (sImagePath, "%s/default.svg", MY_APPLET_SHARE_DATA_DIR);
-		myData.pSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (sImagePath->str);
-	}
-	
-	if (myData.pMuteSurface != NULL)
-		cairo_surface_destroy (myData.pMuteSurface);
-	if (myConfig.cMuteIcon != NULL)
-	{
-		gchar *cUserImagePath = cairo_dock_generate_file_path (myConfig.cMuteIcon);
-		myData.pMuteSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (cUserImagePath);
-		g_free (cUserImagePath);
-	}
-	else
-	{
-		g_string_printf (sImagePath, "%s/mute.svg", MY_APPLET_SHARE_DATA_DIR);
-		myData.pMuteSurface = CD_APPLET_LOAD_SURFACE_FOR_MY_APPLET (sImagePath->str);
-	}
-	
-	g_string_free (sImagePath, TRUE);
-}
-
-
 static gboolean _cd_mixer_on_enter (GtkWidget* pWidget,
 	GdkEventCrossing* pEvent,
 	gpointer data)
 {
-	if (myDesklet && myDesklet->container.iHeight > 64)
+	if (myData.pScale && myDesklet && myDesklet->container.iHeight > 64)
 	{
 		gtk_widget_show (myData.pScale);
 	}
@@ -94,7 +58,7 @@
 	GdkEventCrossing* pEvent,
 	gpointer data)
 {
-	if (myDesklet && myDesklet->container.iHeight > 64)
+	if (myData.pScale && myDesklet && myDesklet->container.iHeight > 64)
 	{
 		if (! myDesklet->container.bInside)
 			gtk_widget_hide (myData.pScale);
@@ -102,6 +66,7 @@
 }
 
 CD_APPLET_INIT_BEGIN
+	// scale widget visibility in desklet
 	if (myDesklet)
 	{
 		int iScaleWidth = (myDesklet->container.iHeight > 64 ? 15 : 0);
@@ -121,8 +86,25 @@
 		}
 	}
 	
-	_load_surfaces ();
+	// data renderer
+	if (myConfig.iVolumeEffect == VOLUME_EFFECT_GAUGE)
+	{
+		CairoDataRendererAttribute *pRenderAttr = NULL;  // les attributs du data-renderer global.
+		CairoGaugeAttribute attr;  // les attributs de la jauge.
+		memset (&attr, 0, sizeof (CairoGaugeAttribute));
+		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
+		pRenderAttr->cModelName = "gauge";
+		pRenderAttr->iRotateTheme = myConfig.iRotateTheme;
+		attr.cThemePath = myConfig.cGThemePath;
+		
+		CD_APPLET_ADD_DATA_RENDERER_ON_MY_ICON (pRenderAttr);
+	}
+	else
+	{
+		mixer_load_surfaces ();
+	}
 	
+	// listen to the sound card
 	mixer_init (myConfig.card_id);
 	
 	mixer_get_controlled_element ();
@@ -157,12 +139,14 @@
 		myData.iSidCheckVolume = g_timeout_add (1000, (GSourceFunc) mixer_check_events, (gpointer) NULL);
 	}
 	
+	// mouse events
 	CD_APPLET_REGISTER_FOR_CLICK_EVENT;
 	CD_APPLET_REGISTER_FOR_MIDDLE_CLICK_EVENT;
 	CD_APPLET_REGISTER_FOR_BUILD_MENU_EVENT;
 	CD_APPLET_REGISTER_FOR_SCROLL_EVENT;
 	CD_APPLET_REGISTER_FOR_DOUBLE_CLICK_EVENT;
-
+	
+	// keyboard events
 	cd_keybinder_bind (myConfig.cShortcut, (CDBindkeyHandler) mixer_on_keybinding_pull, (gpointer)NULL);
 CD_APPLET_INIT_END
 
@@ -186,7 +170,8 @@
 
 CD_APPLET_RELOAD_BEGIN
 	//\_______________ On recharge les donnees qui ont pu changer.
-	_load_surfaces ();
+	if (myConfig.iVolumeEffect != VOLUME_EFFECT_GAUGE)
+		mixer_load_surfaces ();
 	
 	//\_______________ On recharge le mixer si necessaire.
 	if (CD_APPLET_MY_CONFIG_CHANGED)
@@ -224,6 +209,22 @@
 		}
 		else
 		{
+			if (myConfig.iVolumeEffect == VOLUME_EFFECT_GAUGE)
+			{
+				CairoDataRendererAttribute *pRenderAttr = NULL;  // les attributs du data-renderer global.
+				CairoGaugeAttribute attr;  // les attributs de la jauge.
+				memset (&attr, 0, sizeof (CairoGaugeAttribute));
+				pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
+				pRenderAttr->cModelName = "gauge";
+				pRenderAttr->iRotateTheme = myConfig.iRotateTheme;
+				attr.cThemePath = myConfig.cGThemePath;
+				
+				if (cairo_dock_get_icon_data_renderer (myIcon))
+					CD_APPLET_RELOAD_MY_DATA_RENDERER (pRenderAttr);
+				else
+					CD_APPLET_ADD_DATA_RENDERER_ON_MY_ICON (pRenderAttr);
+			}
+			
 			mixer_element_update_with_event (myData.pControledElement, 1);
 			if (myData.iSidCheckVolume == 0)
 				myData.iSidCheckVolume = g_timeout_add (1000, (GSourceFunc) mixer_check_events, (gpointer) NULL);
@@ -278,16 +279,26 @@
 				g_signal_handler_disconnect (G_OBJECT (myDesklet->container.pWidget), iOnLeaveCallbackID);
 			}
 		}
+		else
+		{
+			if (CD_APPLET_MY_CONTAINER_TYPE_CHANGED)
+			{
+				gtk_widget_destroy (myData.pScale);
+				myData.pScale = NULL;
+			}
+		}
 	}
 	else
 	{
 		///\_______________ On redessine notre icone.
+		if (myDesklet && myDesklet->container.iHeight <= 64)
+			gtk_widget_hide (myData.pScale);
+		
+		CD_APPLET_RELOAD_MY_DATA_RENDERER (NULL);
+		
 		if (myData.pControledElement != NULL)
 		{
 			mixer_element_update_with_event (myData.pControledElement, 0);
 		}
-		
-		if (myDesklet && myDesklet->container.iHeight <= 64)
-			gtk_widget_hide (myData.pScale);
 	}
 CD_APPLET_RELOAD_END

=== modified file 'alsaMixer/src/applet-mixer.c'
--- alsaMixer/src/applet-mixer.c	2011-08-09 18:08:08 +0000
+++ alsaMixer/src/applet-mixer.c	2011-09-26 20:21:33 +0000
@@ -264,24 +264,10 @@
 }
 
 
-/**static gboolean on_button_press_dialog (GtkWidget *widget,
-	GdkEventButton *pButton,
-	CairoDialog *pDialog)
-{
-	CD_APPLET_ENTER;
-	cairo_dock_dialog_unreference (pDialog);
-	myData.pDialog = NULL;
-	CD_APPLET_LEAVE(FALSE);
-	//return FALSE;
-}*/
 static void _on_dialog_destroyed (CairoDockModuleInstance *myApplet)
 {
 	myData.pDialog = NULL;
 }
-/**static gboolean _on_key_press_dialog (int iClickedButton, GtkWidget *pInteractiveWidget, gpointer *data, CairoDialog *pDialog)
-{
-	myData.pDialog = NULL;  // le dialogue est dereference donc tout ce qu'on a a faire c'est prendre en compte ce fait !
-}*/
 void mixer_show_hide_dialog (void)
 {
 	if (myDesklet)
@@ -303,15 +289,10 @@
 		attr.cText = cMessage;
 		attr.cImageFilePath = MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE;
 		attr.pInteractiveWidget = pScale;
-		///attr.pActionFunc = (CairoDockActionOnAnswerFunc) _on_key_press_dialog;
 		attr.pUserData = myApplet;
 		attr.pFreeDataFunc = (GFreeFunc)_on_dialog_destroyed;
 		
 		myData.pDialog = cairo_dock_build_dialog (&attr, myIcon, myContainer);
-		/**g_signal_connect (G_OBJECT (myData.pDialog->container.pWidget),
-			"button-press-event",
-			G_CALLBACK (on_button_press_dialog),
-			myData.pDialog);*/
 	}
 	else
 	{
@@ -325,5 +306,4 @@
 	CD_APPLET_ENTER;
 	snd_mixer_handle_events (myData.mixer_handle);  // ne renvoie pas d'evenements pour nos actions !
 	CD_APPLET_LEAVE(TRUE);
-	//return TRUE;
 }

=== modified file 'alsaMixer/src/applet-struct.h'
--- alsaMixer/src/applet-struct.h	2009-08-26 21:07:39 +0000
+++ alsaMixer/src/applet-struct.h	2011-09-26 20:21:33 +0000
@@ -37,6 +37,7 @@
 	VOLUME_EFFECT_ZOOM,
 	VOLUME_EFFECT_TRANSPARENCY,
 	VOLUME_EFFECT_BAR,
+	VOLUME_EFFECT_GAUGE,
 	VOLUME_NB_EFFECTS
 	} VolumeTypeEffect;
 
@@ -53,6 +54,8 @@
 	gchar *cShortcut;
 	gint iScrollVariation;
 	gboolean bHideScaleOnLeave;
+	gchar *cGThemePath;
+	RendererRotateTheme iRotateTheme;
 	} ;
 
 struct _AppletData {
@@ -68,7 +71,6 @@
 	guint iSidCheckVolume;
 	CairoDialog *pDialog;
 	cairo_surface_t *pSurface;
-	//cairo_surface_t *pBrokenSurface;
 	cairo_surface_t *pMuteSurface;
 	int iCurrentVolume;  // volume courant en %.
 	gboolean bIsMute;

=== modified file 'clock/data/clock.conf.in'
--- clock/data/clock.conf.in	2011-08-09 18:08:08 +0000
+++ clock/data/clock.conf.in	2011-09-26 20:21:33 +0000
@@ -21,9 +21,12 @@
 #{Set to 0 to use the default applet size}
 icon size = 0;0
 
-#b Always display the icon, even when the dock is hidden?
+#B Always display the icon, even when the dock is hidden?
 always visi = false
 
+#C+ Background color to add in this case
+bg color = .8;.8;.8;.5
+
 order=
 
 #F[Applet's Handbook]
@@ -62,7 +65,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'clock/src/applet-backend-ical.c'
--- clock/src/applet-backend-ical.c	2010-09-18 14:20:27 +0000
+++ clock/src/applet-backend-ical.c	2011-09-26 20:21:33 +0000
@@ -133,7 +133,7 @@
 	{
 		//if( ICAL_VCALENDAR_COMPONENT != icalcomponent_isa(piCalComponent) ) continue;
 		cTaskID = g_strdup(icalcomponent_get_uid(piCalComponent));
-		g_print( "...Found task ID=%s\n", cTaskID );
+		cd_debug ( "...Found task ID=%s", cTaskID );
 		if( cTaskID != NULL && strcmp( uid, cTaskID ) == 0 )
 		{
 			break;

=== modified file 'debian/changelog'
--- debian/changelog	2011-08-11 23:17:39 +0000
+++ debian/changelog	2011-09-26 20:21:33 +0000
@@ -1,3 +1,75 @@
+cairo-dock-plug-ins (2.4.0~1-0ubuntu1) UNRELEASED; urgency=low
+
+  * New upstream bug fix release. (LP: #859984)
+  * Upstream (short) ChangeLog (2.4.0~0beta2 -> 2.4.0~1):
+   - Powermanager: correctly release the reference on the device object
+   - logout: now works if there is no session-manager
+   - Status-Notifier: fixed a small bug
+      (wrong callback in cairo_dock_stop_watching_dbus_name_owner)
+   - Folders: fixed the positionning of the new icon
+      and the dialog when dropping a folder inside the dock
+      and fixed the icon-rendering
+   - Dustbin: use the default theme if no icon is found
+   - Impulse: the default context seems to be ok and not an error
+   - Status-Notifier: On Ubuntu Oneiric (with indicator-0.4)
+      the ApplicationAdded signal has changed and has a new parameter
+   - Disable MeMenu on Oneiric (no longer available with indicator-0.4)
+   - CMakeLists.txt: Improved output messages
+   - Slide view: fixed a small offset in vertical view
+   - musicPlayer:
+    + split MPRIS 1.0 and 2.0 to help debugging and finding the right
+       name of the bug.
+    + 'rhythmbox-client' tool is no longer available: used MPRIS
+    + Disable Amazon service (it no longer work)
+    + Cover: fixed corrupted icons: some players (e.g. the latest version
+       of RB) copy covers on their cache forlder but it takes a few time.
+    + Fixed the update the icon and its name if the player is stopped.
+    + Prevent a crash if the name given by MPRIS is NULL
+   - Powermanager: try to prevent to have a few dialogues at the same time
+   - PowerManager and AlsaMixer: hidden gnome2 or 3 apps if not available
+   - Messaging-Menu: Updated for Natty and Oneiric
+      (dbus-menu gives us GVariant instead of GValue objects)
+   - Alsamixer: fixed a small bug on reload
+   - Dbus: Bash interface: Fixed a typo with emblem positions
+   - Sys-monitor: fixed a bug which prevented from getting
+      the CPU temperature in some cases
+   - Compiz (0.9): type filter: replaced type=utility by type=Utility
+   - Updated the version of all applets that have gauges
+     in order to use the right directory
+   - Wifi: Fixed the status if we are not connected
+   - Dbus: removed a conflict with the Help applet
+   - Messaging-Menu: updated applet-menu.c => Memory leaks on pixbufs
+   - Dbus: Fixed a crash when changing dock theme if a 'third-party' applet
+      is running
+   - Netspeed: in /proc/net/dev, there are 8 values to drop after the card id
+      except if there is whitespaces just after this ':' character
+      and fixed order and value for ON_ICON display
+   - dock-rendering/toto: removed a useless file
+   - Clipper: fixed the loading of the remembered items
+      (they had the wrong type) and fixed a bug if we reduce the list of items
+   - Folders, dustbin, Network-Monitor: tried to not use cast if it's possible
+   - Code cleaned and re-organised a few functions
+     (e.g. emblem references has been renamed)
+   - Removed useless files: powermanager-dbus*
+   - Updating translations
+   - Fixed a few warnings at the compilation
+   - Removed a few useless output messages
+   - Fixed these LP bugs:
+    + Empty trash from the trashcan does not delete files
+       from usb harddisks: LP: #658681
+    + Switcher applet doesn't respect desktop numbers LP: #626782
+  * debian/control:
+   - Updated the version of cairo-dock-[core;data;dev].
+   - Added gvfs as 'Recommends' for cairo-dock-plug-ins-integration
+    (Used for managing files in Gnome, XFCE, LXDE and some others)
+   - Removed 'indicator-me' (no longer available
+      and the installation of Cairo-Dock can produce an error)
+   - Moved 'indicator-messages' to 'Recommends'
+  * debian/rules:
+   - Updated the name of CMake extras flags
+
+ -- Matthieu Baerts (matttbe) <matttbe@xxxxxxxxx>  Mon, 26 Sep 2011 22:09:00 +0200
+
 cairo-dock-plug-ins (2.4.0~0beta2-0ubuntu1) oneiric; urgency=low
 
   * New upstream release. (LP: #823514)

=== modified file 'debian/control'
--- debian/control	2011-08-09 19:51:45 +0000
+++ debian/control	2011-09-26 20:21:33 +0000
@@ -14,9 +14,9 @@
 		libxml2-dev,
 		libxtst-dev,
 		libglib2.0-dev (>= 2.20),
-		cairo-dock-data (>= 2.4.0~0beta2),
-		cairo-dock-core (>= 2.4.0~0beta2),
-		cairo-dock-dev (>= 2.4.0~0beta2),
+		cairo-dock-data (>= 2.4.0~1),
+		cairo-dock-core (>= 2.4.0~1),
+		cairo-dock-dev (>= 2.4.0~1),
 		libasound2-dev,
 		libvte-dev,
 		x11proto-xf86vidmode-dev,
@@ -60,6 +60,7 @@
 Depends: 	cairo-dock-plug-ins-data (>= ${source:Version}),
 		cairo-dock-core (>= 2.0.8.0),
 		${misc:Depends}
+Recommends:	gvfs
 Description: Two plug-ins for cairo-dock for a better integration in GNOME or Xfce
  Cairo-dock-plug-ins is a set of plug-ins for Cairo-dock. It provides some new 
  functionnalities like controling music players or note-taking, a clock or a
@@ -79,9 +80,8 @@
 		${shlibs:Depends}, 
 		${misc:Depends}
 Suggests:	compiz,
-		gnote
-Recommends:	indicator-messages,
-		indicator-me
+		gnote,
+		indicator-messages
 Description: A set of plug-ins for cairo-dock
  Cairo-dock-plug-ins is a set of plug-ins for Cairo-dock. It provides some new 
  functionnalities like controling music players or note-taking, a clock or a

=== modified file 'debian/rules'
--- debian/rules	2011-04-20 20:46:51 +0000
+++ debian/rules	2011-09-26 20:21:33 +0000
@@ -3,10 +3,10 @@
 
 DH_ALWAYS_EXCLUDE=CVS:.bzr
 
-DEB_CMAKE_EXTRA_FLAGS += -Denable_gnome_integration=yes \
-	-Denable_old_gnome_integration=no \
-	-Denable_kde_integration=yes \
-	-Denable_xfce_integration=yes \
+DEB_CMAKE_EXTRA_FLAGS += -Denable-gnome-integration=yes \
+	-Denable-old-gnome-integration=no \
+	-Denable-kde-integration=yes \
+	-Denable-xfce-integration=yes \
 	-DROOT_PREFIX=$(CURDIR)/debian/tmp
 
 include /usr/share/cdbs/1/rules/debhelper.mk

=== modified file 'desklet-rendering/src/rendering-desklet-panel.c'
--- desklet-rendering/src/rendering-desklet-panel.c	2011-08-09 18:08:08 +0000
+++ desklet-rendering/src/rendering-desklet-panel.c	2011-09-26 20:21:33 +0000
@@ -62,7 +62,7 @@
 	double w = pDesklet->container.iWidth - 2 * pPanel->fMargin;
 	double h = pDesklet->container.iHeight - 2 * pPanel->fMargin;
 	pPanel->iMainIconSize = MIN (w, h) / 3;
-	g_print ("  desklet: %dx%d\n", (int)w, (int)h);
+	cd_debug ("  desklet: %dx%d", (int)w, (int)h);
 	
 	int iNbIcons = 0;
 	Icon *pIcon;
@@ -90,7 +90,7 @@
 		{
 			q = (int) ceil ((double)pPanel->iNbIcons / p);
 			iSize = MIN ((h - p * dy) / p - dh, ((w - (q - 1) * dx) / q - dw) / 2);
-			g_print ("  %dx%d -> %d\n", p, q, iSize);
+			cd_debug ("  %dx%d -> %d", p, q, iSize);
 			if (iSize > pPanel->iIconSize)
 			{
 				pPanel->iIconSize = iSize;
@@ -107,7 +107,7 @@
 		pPanel->iIconSize = MIN ((h - p * dy) / p - dh, ((w - (q - 1) * dx) / q - dw) / 2);
 	}
 	pPanel->iIconSize = MIN (pPanel->iIconSize, pPanel->iMainIconSize);
-	g_print (" panel desklet: %dx%d, %d\n", pPanel->iNbLines, pPanel->iNbColumns, pPanel->iIconSize);
+	cd_debug (" panel desklet: %dx%d, %d", pPanel->iNbLines, pPanel->iNbColumns, pPanel->iIconSize);
 	
 	if ((h - pPanel->iNbLines * (pPanel->iIconSize + dh)) / pPanel->iNbLines > dy)
 	{

=== modified file 'dnd2share/data/dnd2share.conf.in'
--- dnd2share/data/dnd2share.conf.in	2011-08-09 18:08:08 +0000
+++ dnd2share/data/dnd2share.conf.in	2011-09-26 20:21:33 +0000
@@ -55,7 +55,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'dnd2share/src/applet-dnd2share.c'
--- dnd2share/src/applet-dnd2share.c	2011-04-20 20:46:51 +0000
+++ dnd2share/src/applet-dnd2share.c	2011-09-26 20:21:33 +0000
@@ -416,7 +416,7 @@
 	
 	if (myConfig.bDisplayLastImage)
 	{
-		CD_APPLET_SET_LOCAL_IMAGE_ON_MY_ICON (MY_APPLET_ICON_FILE);
+		CD_APPLET_SET_IMAGE_ON_MY_ICON (MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE);
 	}
 }
 

=== modified file 'dnd2share/src/applet-notifications.c'
--- dnd2share/src/applet-notifications.c	2011-08-09 18:08:08 +0000
+++ dnd2share/src/applet-notifications.c	2011-09-26 20:21:33 +0000
@@ -314,7 +314,7 @@
 
 
 CD_APPLET_ON_DROP_DATA_BEGIN
-	g_print  ("DND2SHARE : drop de '%s'\n", CD_APPLET_RECEIVED_DATA);
+	cd_debug  ("DND2SHARE : drop de '%s'", CD_APPLET_RECEIVED_DATA);
 	_on_drop_data (CD_APPLET_RECEIVED_DATA);
 CD_APPLET_ON_DROP_DATA_END
 
@@ -403,19 +403,18 @@
 	
 	CD_APPLET_ADD_IN_MENU_WITH_STOCK (D_("Send the clipboard's content"), GTK_STOCK_PASTE, _send_clipboard, CD_APPLET_MY_MENU);
 	
-	GtkWidget *pHistoryMenu = gtk_menu_new ();
+	GtkWidget *pHistoryMenu = gtk_menu_new ();  // we don't use CD_APPLET_ADD_SUB_MENU_WITH_IMAGE, because we want to be able to set the menu-item unsensitive.
 	GtkWidget *mi = gtk_image_menu_item_new_with_label (D_("History"));
-	
+
 	GtkWidget *im = gtk_image_new_from_stock (GTK_STOCK_INDEX, GTK_ICON_SIZE_MENU);
-#if (GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION >= 16)
+	#if (GTK_MAJOR_VERSION > 2 || GTK_MINOR_VERSION >= 16)
 	gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (mi), TRUE);
-#endif
+	#endif
 	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), im);
-	
+
 	gtk_menu_shell_append (GTK_MENU_SHELL (CD_APPLET_MY_MENU), mi); 
 	gtk_menu_item_set_submenu (GTK_MENU_ITEM (mi), pHistoryMenu);
 	
-	//GtkWidget *pHistoryMenu = CD_APPLET_ADD_SUB_MENU_WITH_IMAGE (D_("History"), CD_APPLET_MY_MENU, GTK_STOCK_INDEX);
 	if (myData.pUpoadedItems != NULL)
 	{
 		CDSiteBackend *pBackend;
@@ -453,7 +452,10 @@
 			}
 			if (cPreview == NULL)
 			{
-				cairo_dock_fm_get_file_info (pItem->cLocalPath, &cName, &cURI, &cPreview, &bIsDirectory, &iVolumeID, &fOrder, 0);
+				gchar *cIconName = NULL;
+				cairo_dock_fm_get_file_info (pItem->cLocalPath, &cName, &cURI, &cIconName, &bIsDirectory, &iVolumeID, &fOrder, 0);
+				cPreview = cairo_dock_search_icon_s_path (cIconName);
+				g_free (cIconName);
 				g_free (cName);
 				cName = NULL;
 				g_free (cURI);
@@ -491,7 +493,7 @@
 	else
 		gtk_widget_set_sensitive (GTK_WIDGET (mi), FALSE);
 
-	pMenuItem = gtk_check_menu_item_new_with_label (_("Use only a files hosting site"));
+	pMenuItem = gtk_check_menu_item_new_with_label (D_("Use only a files hosting site"));
 	gtk_menu_shell_append (GTK_MENU_SHELL (CD_APPLET_MY_MENU), pMenuItem);
 	if (myConfig.bUseOnlyFileType)
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (pMenuItem), TRUE);

=== modified file 'dock-rendering/src/rendering-diapo-simple.c'
--- dock-rendering/src/rendering-diapo-simple.c	2011-08-09 18:08:08 +0000
+++ dock-rendering/src/rendering-diapo-simple.c	2011-09-26 20:21:33 +0000
@@ -81,10 +81,6 @@
 	*gridX = index % nRowsX;
 	*gridY = index / nRowsX;
 }
-static inline guint _get_index_from_gridXY (guint nRowsX, guint gridX, guint gridY)
-{
-	return gridX + gridY * nRowsX;
-}
 
 static guint _cd_rendering_diapo_simple_guess_grid (GList *pIconList, guint *nRowX, guint *nRowY)
 {
@@ -820,12 +816,13 @@
 	int iOffsetY;
 	if (pDock->container.bDirectionUp)
 		iOffsetY = .5 * pDock->iMaxIconHeight * pDock->container.fRatio * (my_diapo_simple_fScaleMax - 1) +  // les icones de la 1ere ligne zooment
-			myIconsParam.iLabelSize +  // le texte des icones de la 1ere ligne
+			(pDock->container.bIsHorizontal ? myIconsParam.iLabelSize : .5*myIconsParam.iLabelSize) +  // le texte des icones de la 1ere ligne
 			.5 * my_diapo_simple_lineWidth +  // demi-ligne du haut;
 			fScrollOffset;
 	else
 		iOffsetY = .5 * pDock->iMaxIconHeight * pDock->container.fRatio * (my_diapo_simple_fScaleMax - 1) +  // les icones de la 1ere ligne zooment
 				.5 * my_diapo_simple_lineWidth +  // demi-ligne du bas;
+				(pDock->container.bIsHorizontal ? 0 : myIconsParam.iLabelSize/2) +
 				fScrollOffset;
 	double fFoldingX = (pDock->fFoldingFactor > .2 ? (pDock->fFoldingFactor - .2) / .8 : 0.);  // placement de 1 a 0.2
 	double fFoldingY = (pDock->fFoldingFactor > .5 ? (pDock->fFoldingFactor - .5) / .5 : 0.);  // placement de 1 a 0.5

=== modified file 'dock-rendering/src/rendering-rainbow.c'
--- dock-rendering/src/rendering-rainbow.c	2011-08-09 18:08:08 +0000
+++ dock-rendering/src/rendering-rainbow.c	2011-09-26 20:21:33 +0000
@@ -314,7 +314,7 @@
 		x_abs = fFlatDockWidth+1;
 	
 	float x_cumulated = 0, fXMiddle, fDeltaExtremum;
-	double fPhase, fScale, fX;
+	double fPhase, fX, fScale = 0.0;
 	int iNumRow, iPointedRow=-1;
 	for (iNumRow = 0; iNumRow < iNbRows; iNumRow ++)
 	{

=== removed file 'dock-rendering/toto'
--- dock-rendering/toto	2010-08-10 00:05:57 +0000
+++ dock-rendering/toto	1970-01-01 00:00:00 +0000
@@ -1,217 +0,0 @@
-message :  (cairo-dock.c:main:427)  
-  Compiled with Glitz (hardware acceleration support)n
-message :  (cairo-dock-dock-manager.c:cairo_dock_initialize_dock_manager:59)  
-  
-message :  (cairo-dock-renderer-manager.c:cairo_dock_initialize_renderer_manager:135)  
-  
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (default)
-message :  (cairo-dock.c:main:506)  
-  environnement de bureau : 2
-message :  (cairo-dock-modules.c:cairo_dock_preload_module_from_directory:268)  
-  cairo_dock_preload_module_from_directory (/users/m340689/usr/lib/cairo-dock)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Tree)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Caroussel)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Simple)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Controler)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Mediaplayer)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_dialog_renderer:122)  
-  cairo_dock_register_dialog_renderer (Text)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_set_renderer:159)  
-  cairo_dock_set_renderer ((null))
-message :  (cairo-dock-keyfile-utilities.c:cairo_dock_write_keys_to_file:18)  
-  cairo_dock_write_keys_to_file (/users/m340689/.cairo-dock/current_theme/cairo-dock.conf)
-message :  (cairo-dock-dock-manager.c:cairo_dock_deactivate_temporary_auto_hide:485)  
-  
-message :  (cairo-dock-config.c:cairo_dock_read_conf_file:683)  
-  g_cMainDockDefaultRendererName <- default
-warning :  (cairo-dock-config.c:cairo_dock_read_conf_file:1121)  
-  Sorry but your X server does not support the extension.
- You can't have window thumbnails in the dock
-message :  (cairo-dock-dock-factory.c:cairo_dock_build_docks_tree_with_desktop_files:558)  
-  cairo_dock_build_docks_tree_with_desktop_files (/users/m340689/.cairo-dock/current_theme/launchers)
-message :  (cairo-dock-launcher-factory.c:cairo_dock_load_icon_info_from_desktop_file:367)  
-  no class defined for the launcher 01BitTorrent.desktop
- we will assume that its class is 'transmission-gtk'
-message :  (cairo-dock-launcher-factory.c:cairo_dock_create_icon_from_desktop_file:402)  
-  + BitTorrent/transmission-gtk
-message :  (cairo-dock-class-manager.c:cairo_dock_inhibate_class:254)  
-  cairo_dock_inhibate_class (transmission-gtk)
-message :  (cairo-dock-launcher-factory.c:cairo_dock_load_icon_info_from_desktop_file:367)  
-  no class defined for the launcher 01bmp.desktop
- we will assume that its class is 'beep-media-player'
-message :  (cairo-dock-launcher-factory.c:cairo_dock_create_icon_from_desktop_file:402)  
-  + Musique/beep-media-player
-message :  (cairo-dock-class-manager.c:cairo_dock_inhibate_class:254)  
-  cairo_dock_inhibate_class (beep-media-player)
-message :  (cairo-dock-launcher-factory.c:cairo_dock_create_icon_from_desktop_file:402)  
-  + Navigateur Web Firefox/firefox
-message :  (cairo-dock-class-manager.c:cairo_dock_inhibate_class:254)  
-  cairo_dock_inhibate_class (firefox)
-message :  (cairo-dock-launcher-factory.c:cairo_dock_load_icon_info_from_desktop_file:367)  
-  no class defined for the launcher 01gnome-terminal.desktop
- we will assume that its class is 'gnome-terminal'
-message :  (cairo-dock-launcher-factory.c:cairo_dock_create_icon_from_desktop_file:402)  
-  + Console/gnome-terminal
-message :  (cairo-dock-class-manager.c:cairo_dock_inhibate_class:254)  
-  cairo_dock_inhibate_class (gnome-terminal)
-message :  (cairo-dock-launcher-factory.c:cairo_dock_load_icon_info_from_desktop_file:367)  
-  no class defined for the launcher 01nautilus.desktop
- we will assume that its class is 'nautilus'
-message :  (cairo-dock-launcher-factory.c:cairo_dock_create_icon_from_desktop_file:402)  
-  + Fichiers/nautilus
-message :  (cairo-dock-class-manager.c:cairo_dock_inhibate_class:254)  
-  cairo_dock_inhibate_class (nautilus)
-message :  (cairo-dock-launcher-factory.c:cairo_dock_create_icon_from_desktop_file:402)  
-  + Courrier/thunderbird-bin
-message :  (cairo-dock-class-manager.c:cairo_dock_inhibate_class:254)  
-  cairo_dock_inhibate_class (thunderbird-bin)
-message :  (cairo-dock-application-factory.c:cairo_dock_create_icon_from_xwindow:417)  
-  recuperation de 'm340689 on mulx0202: /users/m340689/plug-ins/rendering - modules - Konsole' (bIsHidden : 0)
-message :  (cairo-dock-class-manager.c:cairo_dock_add_appli_to_class:193)  
-  cairo_dock_add_appli_to_class (konsole)
-message :  (cairo-dock-applications-manager.c:cairo_dock_insert_appli_in_dock:1115)  
-  cairo_dock_insert_appli_in_dock (m340689 on mulx0202: /users/m340689/plug-ins/rendering - modules - Konsole, 71303176)
-message :  (cairo-dock-class-manager.c:cairo_dock_prevent_inhibated_class:303)  
-  
-message :  (cairo-dock-application-factory.c:cairo_dock_manage_appli_class:236)  
-  cairo_dock_manage_appli_class (m340689 on mulx0202: /users/m340689/plug-ins/rendering - modules - Konsole)
-message :  (cairo-dock-dock-factory.c:cairo_dock_insert_icon_in_dock_full:705)  
-  separateur necessaire
-message :  (cairo-dock-dock-factory.c:cairo_dock_insert_icon_in_dock_full:752)  
-   insertion de m340689 on mulx0202: /users/m340689/plug-ins/rendering - modules - Konsole -> iSeparatorType : 3
-message :  (cairo-dock-applications-manager.c:cairo_dock_insert_appli_in_dock:1126)  
-   insertion de m340689 on mulx0202: /users/m340689/plug-ins/rendering - modules - Konsole complete (0,00 48,00x48,00) dans _MainDock_
-message :  (cairo-dock-application-factory.c:cairo_dock_create_icon_from_xwindow:417)  
-  recuperation de 'rendering-diapo-simple.c - Kate' (bIsHidden : 0)
-Impossible de trouver l'icône « kate ». Le thème « hicolor »
-n'a pas non plus été trouvé. Peut-être avez-vous besoin de
-l'installer. Vous pouvez obtenir une copie à :
-	http://icon-theme.freedesktop.org/releases
-message :  (cairo-dock-class-manager.c:cairo_dock_add_appli_to_class:193)  
-  cairo_dock_add_appli_to_class (kate)
-message :  (cairo-dock-applications-manager.c:cairo_dock_insert_appli_in_dock:1115)  
-  cairo_dock_insert_appli_in_dock (rendering-diapo-simple.c - Kate, 79691791)
-message :  (cairo-dock-class-manager.c:cairo_dock_prevent_inhibated_class:303)  
-  
-message :  (cairo-dock-application-factory.c:cairo_dock_manage_appli_class:236)  
-  cairo_dock_manage_appli_class (rendering-diapo-simple.c - Kate)
-message :  (cairo-dock-applications-manager.c:cairo_dock_insert_appli_in_dock:1126)  
-   insertion de rendering-diapo-simple.c - Kate complete (0,00 48,00x48,00) dans _MainDock_
-message :  (cairo-dock-modules.c:cairo_dock_activate_module:453)  
-  cairo_dock_activate_module (clock)
-cairo_dock_instanciate_module (/users/m340689/.cairo-dock/current_theme/plug-ins/clock/clock.conf)
-  ce module est une applet
-message :  (cairo-dock-applet-factory.c:cairo_dock_create_applet_surface:31)  
-  cairo_dock_create_applet_surface (48,00x48,00 x 2,00 / 1)
-message :  (cairo-dock-applet-factory.c:cairo_dock_create_applet_surface:40)  
-   -> 48,00x48,00 x 2,00
-cairo_dock_read_module_config (40f0b480)
-message :  (cairo-dock-keyfile-utilities.c:cairo_dock_write_keys_to_file:18)  
-  cairo_dock_write_keys_to_file (/users/m340689/.cairo-dock/current_theme/plug-ins/clock/clock.conf)
-message :  (applet-init.c:init:81)  
-  init (/users/m340689/.cairo-dock/current_theme/plug-ins/clock/clock.conf)
-
-message :  (applet-init.c:_load_theme:39)  
-  _load_theme (/users/m340689/usr/share/cairo-dock/plug-ins/clock/themes/silvia)
-message :  (cairo-dock-dock-factory.c:cairo_dock_insert_icon_in_dock_full:705)  
-  separateur necessaire
-message :  (cairo-dock-dock-factory.c:cairo_dock_insert_icon_in_dock_full:752)  
-   insertion de Poland -> iSeparatorType : 1
-message :  (cairo-dock-modules.c:cairo_dock_activate_module:453)  
-  cairo_dock_activate_module (rendering)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Tree)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Caroussel)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Simple)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Controler)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_desklet_renderer:77)  
-  cairo_dock_register_desklet_renderer (Mediaplayer)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_dialog_renderer:122)  
-  cairo_dock_register_dialog_renderer (Text)
-cairo_dock_instanciate_module (/users/m340689/.cairo-dock/current_theme/plug-ins/rendering/rendering.conf)
-  ce module est un plug-in
-cairo_dock_read_module_config (40f50ba0)
-message :  (rendering-init.c:init:120)  
-  init (/users/m340689/.cairo-dock/current_theme/plug-ins/rendering/rendering.conf)
-
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (Caroussel)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (3D plane)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (Parabolic)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (Rainbow)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (Slide)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (SimpleSlide)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_register_renderer:57)  
-  cairo_dock_register_renderer (Curve)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_set_renderer:159)  
-  cairo_dock_set_renderer ((null))
-message :  (cairo-dock-modules.c:cairo_dock_activate_module:453)  
-  cairo_dock_activate_module (switcher)
-cairo_dock_instanciate_module (/users/m340689/.cairo-dock/current_theme/plug-ins/switcher/switcher.conf)
-  ce module est une applet
-message :  (cairo-dock-applet-factory.c:cairo_dock_create_applet_surface:31)  
-  cairo_dock_create_applet_surface (32,00x32,00 x 2,00 / 1)
-message :  (cairo-dock-applet-factory.c:cairo_dock_create_applet_surface:40)  
-   -> 48,00x48,00 x 2,00
-cairo_dock_read_module_config (40f26450)
-myConfig.bCompactView:0
-message :  (applet-init.c:init:83)  
-  init (/users/m340689/.cairo-dock/current_theme/plug-ins/switcher/switcher.conf)
-
-message :  (cairo-dock-renderer-manager.c:cairo_dock_set_renderer:159)  
-  cairo_dock_set_renderer ((null))
-message :  (cairo-dock-applications-manager.c:cairo_dock_update_applis_list:1203)  
-   cette fenetre (88080409) de la pile n'est pas dans la liste
-cd_switcher_draw_main_icon (0)
-message :  (cairo-dock-load.c:cairo_dock_load_desktop_background_surface:856)  
-  c'est un fond d'ecran de taille 1024x742
-message :  (cairo-dock-dock-factory.c:cairo_dock_reference_dock:476)  
-  position : 1/1
-message :  (cairo-dock-renderer-manager.c:cairo_dock_set_renderer:159)  
-  cairo_dock_set_renderer ((null))
-message :  (cairo-dock-load.c:cairo_dock_reload_buffers_in_dock:502)  
-  cairo_dock_reload_buffers_in_dock ((null), 1)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_set_renderer:159)  
-  cairo_dock_set_renderer (SimpleSlide)
-cd_switcher_draw_main_icon (0)
- (0,00; 0,00) 38,40x38,40
- (0,00; 0,00) 38,40x38,40
- (0,00; 0,00) 38,40x38,40
- (0,00; 0,00) 38,40x38,40
-cd_switcher_draw_main_icon (0)
-message :  (cairo-dock-renderer-manager.c:cairo_dock_set_renderer:159)  
-  cairo_dock_set_renderer ((null))
-message :  (cairo-dock-renderer-manager.c:cairo_dock_set_renderer:159)  
-  cairo_dock_set_renderer (SimpleSlide)
-message :  (cairo-dock-dock-manager.c:cairo_dock_search_max_decorations_size:193)  
-    decorations max : 761x52
-message :  (cairo-dock-keyfile-utilities.c:cairo_dock_write_keys_to_file:18)  
-  cairo_dock_write_keys_to_file (/users/m340689/.cairo-dock/current_theme/cairo-dock_easy.conf)
-message :  (cairo-dock-keyfile-utilities.c:cairo_dock_write_keys_to_file:18)  
-  cairo_dock_write_keys_to_file (/users/m340689/.cairo-dock/current_theme/cairo-dock_easy.conf)
-cd_switcher_draw_main_icon (0)
-message :  (cairo-dock-dock-manager.c:cairo_dock_stop_quick_hide:494)  
-  
-message :  (cairo-dock-dock-manager.c:cairo_dock_stop_quick_hide:494)  
-  
-cd_switcher_draw_main_icon (0)
-message :  (cairo-dock-dock-manager.c:cairo_dock_stop_quick_hide:494)  
-  
-message :  (cairo-dock-dock-manager.c:cairo_dock_hide_child_docks:250)  
-  on est dans le sous-dock, donc on ne le cache pas
-message :  (cairo-dock-dock-manager.c:cairo_dock_hide_child_docks:250)  
-  on est dans le sous-dock, donc on ne le cache pas

=== modified file 'dustbin/data/dustbin.conf.in'
--- dustbin/data/dustbin.conf.in	2011-08-09 18:08:08 +0000
+++ dustbin/data/dustbin.conf.in	2011-09-26 20:21:33 +0000
@@ -57,7 +57,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'dustbin/data/themes/CMakeLists.txt'
--- dustbin/data/themes/CMakeLists.txt	2010-08-10 00:05:57 +0000
+++ dustbin/data/themes/CMakeLists.txt	2011-09-26 20:21:33 +0000
@@ -1,12 +1,1 @@
 add_subdirectory(default)
-
-
-########### install files ###############
-
-
-
-
-#original Makefile.am contents follow:
-
-#SUBDIRS = \
-#	default

=== modified file 'dustbin/src/applet-init.c'
--- dustbin/src/applet-init.c	2010-09-07 02:38:17 +0000
+++ dustbin/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -37,6 +37,7 @@
 
 static void _get_theme (void)
 {
+	// get the user images first, as they overwrite the theme.
 	if (myConfig.cEmptyUserImage != NULL)
 	{
 		gchar *cPath = cairo_dock_search_icon_s_path (myConfig.cEmptyUserImage);
@@ -57,6 +58,7 @@
 		}
                 g_free (cPath);
 	}
+	// if a theme is defined, and user images are not defined, use the theme.
 	if (myConfig.cThemePath != NULL)
 	{
 		if (myConfig.cEmptyUserImage == NULL)
@@ -66,11 +68,11 @@
 			{
 				g_free (myConfig.cEmptyUserImage);
 				myConfig.cEmptyUserImage = g_strdup_printf ("%s/%s", myConfig.cThemePath, "trashcan_empty.png");
-				if (! g_file_test (myConfig.cEmptyUserImage, G_FILE_TEST_EXISTS))
+				if (! g_file_test (myConfig.cEmptyUserImage, G_FILE_TEST_EXISTS))  // no svg nor png, use the default theme.
 				{
 					g_free (myConfig.cEmptyUserImage);
-					myConfig.cEmptyUserImage = NULL;
-					cd_warning ("dustbin : couldn't find an image for empty dustbin, check the existence of the files in %s", myConfig.cThemePath);
+					myConfig.cEmptyUserImage = g_strdup (MY_APPLET_SHARE_DATA_DIR"/themes/default/trashcan_empty.svg");
+					cd_warning ("using the default theme for Dustbin, as neither the user image (%s) nor the theme (%s) are valid", myConfig.cEmptyUserImage, myConfig.cThemePath);
 				}
 			}
 		}
@@ -84,8 +86,8 @@
 				if (! g_file_test (myConfig.cFullUserImage, G_FILE_TEST_EXISTS))
 				{
 					g_free (myConfig.cFullUserImage);
-					myConfig.cFullUserImage = NULL;
-					cd_warning ("dustbin : couldn't find an image for full dustbin, check the existence of the files in %s", myConfig.cThemePath);
+					myConfig.cFullUserImage = g_strdup (MY_APPLET_SHARE_DATA_DIR"/themes/default/trashcan_full.svg");
+					cd_warning ("using the default theme for Dustbin, as neither the user image (%s) nor the theme (%s) are valid", myConfig.cFullUserImage, myConfig.cThemePath);
 				}
 			}
 		}

=== modified file 'dustbin/src/applet-trashes-manager.c'
--- dustbin/src/applet-trashes-manager.c	2011-04-20 20:46:51 +0000
+++ dustbin/src/applet-trashes-manager.c	2011-09-26 20:21:33 +0000
@@ -65,11 +65,11 @@
 		
 		if (myConfig.iQuickInfoType == CD_DUSTBIN_INFO_NB_TRASHES)
 		{
-			CD_APPLET_SET_QUICK_INFO_ON_MY_ICON_PRINTF ("%d%s", myData.iMeasure, (myDesklet ? D_(" trashe(s)") : ""));
+			CD_APPLET_SET_QUICK_INFO_ON_MY_ICON_PRINTF ("%ld%s", myData.iMeasure, (myDesklet ? D_(" trashe(s)") : ""));
 		}
 		else if (myConfig.iQuickInfoType == CD_DUSTBIN_INFO_NB_FILES)
 		{
-			CD_APPLET_SET_QUICK_INFO_ON_MY_ICON_PRINTF ("%d%s", myData.iMeasure, (myDesklet ? D_(" file(s)") : ""));
+			CD_APPLET_SET_QUICK_INFO_ON_MY_ICON_PRINTF ("%ld%s", myData.iMeasure, (myDesklet ? D_(" file(s)") : ""));
 		}
 		else if (myConfig.iQuickInfoType == CD_DUSTBIN_INFO_WEIGHT)
 		{

=== modified file 'gvfs-integration/cairo-dock-gio-vfs.c'
--- gvfs-integration/cairo-dock-gio-vfs.c	2011-08-09 18:08:08 +0000
+++ gvfs-integration/cairo-dock-gio-vfs.c	2011-09-26 20:21:33 +0000
@@ -91,7 +91,14 @@
 		for (i = 0; cFileNames[i] != NULL && cIconPath == NULL; i ++)
 		{
 			//g_print (" une icone possible est : %s\n", cFileNames[i]);
-			cIconPath = cairo_dock_search_icon_s_path (cFileNames[i]);
+			
+			gchar *path = cairo_dock_search_icon_s_path (cFileNames[i]);
+			if (path)
+			{
+				g_free (path);
+				cIconPath = g_strdup (cFileNames[i]);
+			}
+			
 			//g_print ("  chemin trouve : %s\n", cIconPath);
 		}
 	}
@@ -319,13 +326,26 @@
 		cd_message ("cVolumeName : %s", cVolumeName);
 		
 		GMount *pMount = NULL;
-		_cd_find_mount_from_volume_name (cVolumeName, &pMount, cURI, cIconName);
+		gchar *uri=NULL, *iconname=NULL;
+		_cd_find_mount_from_volume_name (cVolumeName, &pMount, &uri, &iconname);
 		g_return_if_fail (pMount != NULL);
 		
-		*cName = g_strdup (cVolumeName);
-		*bIsDirectory = TRUE;
-		*iVolumeID = 1;
-		*fOrder = 0;
+		if (cURI)
+			*cURI = uri;
+		else
+			g_free (uri);
+		if (cIconName)
+			*cIconName = iconname;
+		else
+			g_free (iconname);
+		if (cName)
+			*cName = g_strdup (cVolumeName);
+		if (bIsDirectory)
+			*bIsDirectory = TRUE;
+		if (iVolumeID)
+			*iVolumeID = 1;
+		if (fOrder)
+			*fOrder = 0;
 		//g_object_unref (pMount);
 		
 		g_free (cValidUri);
@@ -367,7 +387,6 @@
 		G_FILE_QUERY_INFO_NONE,  /// G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS
 		NULL,
 		&erreur);
-	//g_object_unref (pFile);
 	if (erreur != NULL)  // peut arriver si l'emplacement n'est pas monte.
 	{
 		cd_debug ("gvfs-integration : %s", erreur->message);  // inutile d'en faire un warning.
@@ -380,135 +399,155 @@
 	const gchar *cFileName = g_file_info_get_name (pFileInfo);
 	const gchar *cMimeType = g_file_info_get_content_type (pFileInfo);
 	GFileType iFileType = g_file_info_get_file_type (pFileInfo);
-	
-	if (iSortType == CAIRO_DOCK_FM_SORT_BY_DATE)
-	{
-		GTimeVal t;
-		g_file_info_get_modification_time (pFileInfo, &t);
-		*fOrder = t.tv_sec;
-	}
-	else if (iSortType == CAIRO_DOCK_FM_SORT_BY_ACCESS)
-		*fOrder =  g_file_info_get_attribute_uint64 (pFileInfo, G_FILE_ATTRIBUTE_TIME_ACCESS);
-	else if (iSortType == CAIRO_DOCK_FM_SORT_BY_SIZE)
-		*fOrder = g_file_info_get_size (pFileInfo);
-	else if (iSortType == CAIRO_DOCK_FM_SORT_BY_TYPE)
-		*fOrder = (cMimeType != NULL ? *((int *) cMimeType) : 0);
-	else
-		*fOrder = 0;
-	
-	*bIsDirectory = (iFileType == G_FILE_TYPE_DIRECTORY);
-	cd_message (" => '%s' (mime:%s ; bIsDirectory:%d)", cFileName, cMimeType, *bIsDirectory);
-	
 	const gchar *cTargetURI = g_file_info_get_attribute_string (pFileInfo, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI);
 	
-	// if it's a mount point, find a readable name.
+	// find the order of the file
+	if (fOrder)
+	{
+		if (iSortType == CAIRO_DOCK_FM_SORT_BY_DATE)
+		{
+			GTimeVal t;
+			g_file_info_get_modification_time (pFileInfo, &t);
+			*fOrder = t.tv_sec;
+		}
+		else if (iSortType == CAIRO_DOCK_FM_SORT_BY_ACCESS)
+			*fOrder =  g_file_info_get_attribute_uint64 (pFileInfo, G_FILE_ATTRIBUTE_TIME_ACCESS);
+		else if (iSortType == CAIRO_DOCK_FM_SORT_BY_SIZE)
+			*fOrder = g_file_info_get_size (pFileInfo);
+		else if (iSortType == CAIRO_DOCK_FM_SORT_BY_TYPE)
+			*fOrder = (cMimeType != NULL ? *((int *) cMimeType) : 0);
+		else
+			*fOrder = 0;
+	}
+	
+	if (bIsDirectory)
+		*bIsDirectory = (iFileType == G_FILE_TYPE_DIRECTORY);
+	
+	
+	// find a readable name if it's a mount point.
 	if (iFileType == G_FILE_TYPE_MOUNTABLE)
 	{
-		*cName = NULL;
-		*iVolumeID = 1;
+		if (iVolumeID)
+			*iVolumeID = 1;
 		
-		cd_message ("  cTargetURI:%s", cTargetURI);
-		GMount *pMount = NULL;
-		if (cTargetURI != NULL)
-		{
-			GFile *file = g_file_new_for_uri (cTargetURI);
-			pMount = g_file_find_enclosing_mount (file, NULL, NULL);
-			//g_object_unref (file);
-		}
-		if (pMount != NULL)
-		{
-			*cName = g_mount_get_name (pMount);
-			cd_message ("un GMount existe (%s)",* cName);
-		}
-		else
-		{
-			gchar *cMountName = g_strdup (cFileName);
-			gchar *str = strrchr (cMountName, '.');  // on vire l'extension ".volume" ou ".drive".
-			if (str != NULL)
-			{
-				*str = '\0';
-				if (strcmp (str+1, "link") == 0)  // pour les liens, on prend le nom du lien.
-				{
-					if (strcmp (cMountName, "root") == 0)  // on remplace 'root' par un nom plus parlant, sinon on prendra le nom du lien.
-					{
-						*cName = g_strdup ("/");
-					}
-				}
-				else if (strcmp (str+1, "drive") == 0)  // on cherche un nom plus parlant si possible.
-				{
-					gchar *cVolumeName = _cd_find_volume_name_from_drive_name (cMountName);
-					if (cVolumeName != NULL)
-					{
-						*cName = cVolumeName;
-					}
-				}
-			}
-			if (*cName == NULL)
-				*cName = cMountName;
-			//else
-				//g_free (cMountName);
-		}
-		if (*cName ==  NULL)
+		if (cName)
+		{
+			*cName = NULL;
+			
+			cd_message ("  cTargetURI:%s", cTargetURI);
+			GMount *pMount = NULL;
+			if (cTargetURI != NULL)
+			{
+				GFile *file = g_file_new_for_uri (cTargetURI);
+				pMount = g_file_find_enclosing_mount (file, NULL, NULL);
+				//g_object_unref (file);
+			}
+			if (pMount != NULL)
+			{
+				*cName = g_mount_get_name (pMount);
+				cd_message ("un GMount existe (%s)",* cName);
+			}
+			else
+			{
+				gchar *cMountName = g_strdup (cFileName);
+				gchar *str = strrchr (cMountName, '.');  // on vire l'extension ".volume" ou ".drive".
+				if (str != NULL)
+				{
+					*str = '\0';
+					if (strcmp (str+1, "link") == 0)  // pour les liens, on prend le nom du lien.
+					{
+						if (strcmp (cMountName, "root") == 0)  // on remplace 'root' par un nom plus parlant, sinon on prendra le nom du lien.
+						{
+							*cName = g_strdup ("/");
+						}
+					}
+					else if (strcmp (str+1, "drive") == 0)  // on cherche un nom plus parlant si possible.
+					{
+						gchar *cVolumeName = _cd_find_volume_name_from_drive_name (cMountName);
+						if (cVolumeName != NULL)
+						{
+							*cName = cVolumeName;
+						}
+					}
+				}
+				if (*cName == NULL)
+					*cName = cMountName;
+				//else
+					//g_free (cMountName);
+			}
+			if (*cName ==  NULL)
+				*cName = g_strdup (cFileName);
+		}
+	}
+	else  // for an normal file, just re-use the filename
+	{
+		if (iVolumeID)
+			*iVolumeID = 0;
+		if (cName)
 			*cName = g_strdup (cFileName);
 	}
-	else
-	{
-		*iVolumeID = 0;
-		*cName = g_strdup (cFileName);
-	}
 	
-	if (cTargetURI)
+	// find the target URI if it's a mount point
+	if (cURI)
 	{
-		*cURI = g_strdup (cTargetURI);
-		g_free (cValidUri);
-		cValidUri = NULL;
+		if (cTargetURI)
+		{
+			*cURI = g_strdup (cTargetURI);
+			g_free (cValidUri);
+			cValidUri = NULL;
+		}
+		else
+			*cURI = cValidUri;
 	}
-	else
-		*cURI = cValidUri;
 	
 	// find an icon.
-	*cIconName = NULL;
-	*cIconName = g_strdup (g_file_info_get_attribute_byte_string (pFileInfo, G_FILE_ATTRIBUTE_THUMBNAIL_PATH));
-	#if (GLIB_MAJOR_VERSION > 2) || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 20)
-	/**if (*cIconName == NULL)
-	{
-		GIcon *pPreviewIcon = (GIcon *)g_file_info_get_attribute_object (pFileInfo, G_FILE_ATTRIBUTE_PREVIEW_ICON);
-		if (pPreviewIcon != NULL)
-		{
-			*cIconName = _cd_get_icon_path (pPreviewIcon, NULL);
-			//g_print ("got preview icon '%s'\n", *cIconName);
-		}
-	}*/
-	#endif
-	if (*cIconName == NULL && cMimeType != NULL && strncmp (cMimeType, "image", 5) == 0)
-	{
-		gchar *cHostname = NULL;
-		GError *erreur = NULL;
-		gchar *cFilePath = g_filename_from_uri (cBaseURI, &cHostname, &erreur);
-		if (erreur != NULL)
-		{
-			g_error_free (erreur);
-		}
-		else if (cHostname == NULL || strcmp (cHostname, "localhost") == 0)  // on ne recupere la vignette que sur les fichiers locaux.
-		{
-			*cIconName = g_strdup (cFilePath);
-			cairo_dock_remove_html_spaces (*cIconName);
-		}
-		//g_free (cHostname);
-	}
-	if (*cIconName == NULL)
-	{
-		GIcon *pSystemIcon = g_file_info_get_icon (pFileInfo);
-		if (pSystemIcon != NULL)
-		{
-			*cIconName = _cd_get_icon_path (pSystemIcon, cTargetURI ? cTargetURI : *cURI);
-		}
-	}
-	cd_message ("cIconName : %s", *cIconName);
+	if (cIconName)
+	{
+		*cIconName = NULL;
+		// first use an available thumbnail.
+		*cIconName = g_strdup (g_file_info_get_attribute_byte_string (pFileInfo, G_FILE_ATTRIBUTE_THUMBNAIL_PATH));
+		#if (GLIB_MAJOR_VERSION > 2) || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 20)
+		/**if (*cIconName == NULL)
+		{
+			GIcon *pPreviewIcon = (GIcon *)g_file_info_get_attribute_object (pFileInfo, G_FILE_ATTRIBUTE_PREVIEW_ICON);
+			if (pPreviewIcon != NULL)
+			{
+				*cIconName = _cd_get_icon_path (pPreviewIcon, NULL);
+				//g_print ("got preview icon '%s'\n", *cIconName);
+			}
+		}*/
+		#endif
+		// if no thumbnail available and the file is an image, use it directly.
+		if (*cIconName == NULL && cMimeType != NULL && strncmp (cMimeType, "image", 5) == 0)
+		{
+			gchar *cHostname = NULL;
+			GError *erreur = NULL;
+			gchar *cFilePath = g_filename_from_uri (cBaseURI, &cHostname, &erreur);
+			if (erreur != NULL)
+			{
+				g_error_free (erreur);
+			}
+			else if (cHostname == NULL || strcmp (cHostname, "localhost") == 0)  // on ne recupere la vignette que sur les fichiers locaux.
+			{
+				*cIconName = g_strdup (cFilePath);
+				cairo_dock_remove_html_spaces (*cIconName);
+			}
+			g_free (cHostname);
+		}
+		// else, get the icon for the mime-types.
+		if (*cIconName == NULL)
+		{
+			GIcon *pSystemIcon = g_file_info_get_icon (pFileInfo);
+			if (pSystemIcon != NULL)
+			{
+				*cIconName = _cd_get_icon_path (pSystemIcon, cTargetURI ? cTargetURI : *cURI);
+			}
+		}
+		cd_message ("cIconName : %s", *cIconName);
+	}
 	
-	//*iVolumeID = g_file_info_get_attribute_uint32 (pFileInfo, G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE);
-	//cd_message ("ID : %d\n", *iVolumeID);
 	g_object_unref (pFileInfo);
+	g_object_unref (pFile);
 }
 
 static Icon *_cd_get_icon_for_volume (GVolume *pVolume, GMount *pMount)

=== modified file 'illusion/src/applet-break.c'
--- illusion/src/applet-break.c	2009-10-05 19:27:17 +0000
+++ illusion/src/applet-break.c	2011-09-26 20:21:33 +0000
@@ -123,7 +123,7 @@
 void cd_illusion_update_break (Icon *pIcon, CairoDock *pDock, CDIllusionData *pData)
 {
 	int iWidth, iHeight;
-	cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pDock), &iWidth, &iHeight);
+	cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 	double fSizeX, fSizeY;
 	cairo_dock_get_current_icon_size (pIcon, CAIRO_CONTAINER (pDock), &fSizeX, &fSizeY);
 	

=== modified file 'illusion/src/applet-lightning.c'
--- illusion/src/applet-lightning.c	2011-04-20 20:46:51 +0000
+++ illusion/src/applet-lightning.c	2011-09-26 20:21:33 +0000
@@ -55,7 +55,7 @@
 void cd_illusion_update_lightning (Icon *pIcon, CairoDock *pDock, CDIllusionData *pData)
 {
 	int iWidth, iHeight;
-	cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pDock), &iWidth, &iHeight);
+	cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 	double fSizeX, fSizeY;
 	cairo_dock_get_current_icon_size (pIcon, CAIRO_CONTAINER (pDock), &fSizeX, &fSizeY);
 	
@@ -119,7 +119,7 @@
 	
 	
 	int iWidth, iHeight;
-	cairo_dock_get_icon_extent (pIcon, CAIRO_CONTAINER (pDock), &iWidth, &iHeight);
+	cairo_dock_get_icon_extent (pIcon, &iWidth, &iHeight);
 	
 	glPushMatrix ();
 	glTranslatef (0., - fSizeY/2, 0.);  // en bas au milieu.

=== modified file 'keyboard-indicator/data/keyboard-indicator.conf.in'
--- keyboard-indicator/data/keyboard-indicator.conf.in	2011-08-09 18:08:08 +0000
+++ keyboard-indicator/data/keyboard-indicator.conf.in	2011-09-26 20:21:33 +0000
@@ -57,7 +57,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'keyboard-indicator/src/applet-xklavier.c'
--- keyboard-indicator/src/applet-xklavier.c	2011-04-20 20:46:51 +0000
+++ keyboard-indicator/src/applet-xklavier.c	2011-09-26 20:21:33 +0000
@@ -180,17 +180,17 @@
 		if (pConfigRec->layouts != NULL)
 		{
 			for (i = 0; pConfigRec->layouts[i] != NULL; i ++)
-				g_print(" layout : %s\n", pConfigRec->layouts[i]);
+				cd_debug(" layout : %s", pConfigRec->layouts[i]);
 		}
 		if (pConfigRec->variants != NULL)
 		{
 			for (i = 0; pConfigRec->variants[i] != NULL; i ++)
-				g_print(" variants : %s\n", pConfigRec->variants[i]);
+				cd_debug(" variants : %s", pConfigRec->variants[i]);
 		}
 		if (pConfigRec->options != NULL)
 		{
 			for (i = 0; pConfigRec->options[i] != NULL; i ++)
-				g_print(" options : %s\n", pConfigRec->options[i]);
+				cd_debug(" options : %s", pConfigRec->options[i]);
 		}*/
 	}
 	

=== modified file 'logout/data/logout.conf.in'
--- logout/data/logout.conf.in	2011-08-09 18:08:08 +0000
+++ logout/data/logout.conf.in	2011-09-26 20:21:33 +0000
@@ -59,7 +59,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'logout/src/applet-logout.c'
--- logout/src/applet-logout.c	2011-08-09 18:08:08 +0000
+++ logout/src/applet-logout.c	2011-09-26 20:21:33 +0000
@@ -172,10 +172,16 @@
 	switch (iAction)
 	{
 		case CD_RESTART:
-			_console_kit_action ("Restart");
+			if (myData.bCanRestart)
+				_console_kit_action ("Restart");
+			else if (myConfig.cUserAction)
+				cairo_dock_launch_command (myConfig.cUserAction);
 		break;
 		case CD_STOP:
-			_console_kit_action ("Stop");
+			if (myData.bCanStop)
+				_console_kit_action ("Stop");
+			else if (myConfig.cUserAction2)
+				cairo_dock_launch_command (myConfig.cUserAction2);
 		break;
 		case CD_SUSPEND:
 			_upower_action (TRUE);
@@ -315,11 +321,11 @@
 	GtkWidget *pMenuItem;
 	
 	pMenuItem = CD_APPLET_ADD_IN_MENU_WITH_STOCK_AND_DATA (D_("Shut down"), MY_APPLET_SHARE_DATA_DIR"/system-shutdown.svg", on_select_action, pMenu, GINT_TO_POINTER (CD_STOP));
-	if (!myData.bCanStop)
+	if (!myData.bCanStop && ! myConfig.cUserAction && ! myConfig.cUserAction2)
 		gtk_widget_set_sensitive (pMenuItem, FALSE);
 	
 	pMenuItem = CD_APPLET_ADD_IN_MENU_WITH_STOCK_AND_DATA (D_("Restart"), MY_APPLET_SHARE_DATA_DIR"/system-restart.svg", on_select_action, pMenu, GINT_TO_POINTER (CD_RESTART));
-	if (!myData.bCanRestart)
+	if (!myData.bCanRestart && ! myConfig.cUserAction && ! myConfig.cUserAction2)
 		gtk_widget_set_sensitive (pMenuItem, FALSE);
 	
 	pMenuItem = CD_APPLET_ADD_IN_MENU_WITH_STOCK_AND_DATA (D_("Hibernate"), MY_APPLET_SHARE_DATA_DIR"/system-hibernate.svg", on_select_action, pMenu, GINT_TO_POINTER (CD_HIBERNATE));
@@ -451,7 +457,12 @@
 		CD_APPLET_SET_NAME_FOR_MY_ICON (cMessage);
 	}
 	else
-		CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultLabel);
+	{
+		if (myConfig.cDefaultLabel) // has another default name
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultLabel);
+		else
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
+	}
 	g_free (cMessage);
 }
 void cd_logout_check_reboot_required (CairoDockFMEventType iEventType, const gchar *cURI, gpointer data)
@@ -464,7 +475,10 @@
 		
 		case CAIRO_DOCK_FILE_DELETED:  // reboot no more required (shouldn't happen)
 			myData.bRebootNeeded = FALSE;
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultLabel);
+			if (myConfig.cDefaultLabel) // has another default name
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultLabel);
+			else
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
 			CD_APPLET_STOP_DEMANDING_ATTENTION;
 		break;
 		

=== modified file 'mail/data/mail.conf.in'
--- mail/data/mail.conf.in	2011-08-09 18:08:08 +0000
+++ mail/data/mail.conf.in	2011-09-26 20:21:33 +0000
@@ -57,7 +57,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true

=== modified file 'mail/src/cd-mail-applet-notifications.c'
--- mail/src/cd-mail-applet-notifications.c	2011-04-20 20:46:51 +0000
+++ mail/src/cd-mail-applet-notifications.c	2011-09-26 20:21:33 +0000
@@ -345,7 +345,7 @@
 	{
 		if( myData.pMessagesDialog == NULL )
 		{
-			g_print( "Displaying messages\n" );
+			cd_debug ( "Displaying messages" );
 			if( pMailAccount->pUnseenMessageList != NULL )
 			{
 				myData.pMessagesDialog = cairo_dock_show_dialog_full (_("Mail"),

=== modified file 'musicPlayer/data/musicPlayer.conf.in'
--- musicPlayer/data/musicPlayer.conf.in	2011-08-09 18:08:08 +0000
+++ musicPlayer/data/musicPlayer.conf.in	2011-09-26 20:21:33 +0000
@@ -12,7 +12,8 @@
 #s Name of the icon as it will appear in its caption in the dock:
 #{Leave it empty to display the name of the player currently controlled.}
 name =
- #v
+
+#v
 sep_display=
 
 icon =
@@ -59,7 +60,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true
@@ -104,15 +105,15 @@
 
 #F[Audio Player;gtk-cdrom]
 frame_player =
-#L[Amarok 2;Audacious;Banshee;Clementine;Exaile;Exaile 0.3;GMusicBrowser;Guayadeque;Listen;Qmmp;QuodLibet;Rhythmbox;Songbird;XMMS 2;XMMS] Player to control:
-current-player=Rhythmbox
+#E[;Amarok 2;Audacious;Banshee;Clementine;Exaile;Exaile 0.3;GMusicBrowser;Guayadeque;Listen;Qmmp;QuodLibet;Rhythmbox;Songbird;XMMS 2] Player to control:
+current-player=
 
 #b Steal the player's icon from the taskbar?
 #{This will prevent the player icon appearing in the taskbar. The applet's icon will then behave as a launcher, an application and an applet.}
 inhibate appli = true
 
 #l[Play/Pause on click, Next on middle-click;Show/Hide player on click, Play/Pause on middle-click] Actions on click and middle-click :
-pause on click = 0
+pause on click = 1
 
 
 #F[Action on music change;gtk-preferences]

=== modified file 'musicPlayer/src/3dcover-draw.c' (properties changed: +x to -x)
--- musicPlayer/src/3dcover-draw.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/3dcover-draw.c	2011-09-26 20:21:33 +0000
@@ -534,11 +534,7 @@
 		}
 		else if (myData.iPlayingStatus != PLAYER_PLAYING)
 		{
-			if (myData.bIsRunning)  // on verifie que le lecteur est bien ouvert (il se peut qu'il ne nous previenne pas lorsqu'il quitte).
-			{
-				cd_musicplayer_dbus_detect_player ();
-			}
-			if (myData.bIsRunning)  // si rhythmbox n'est pas lancé, on n'affiche pas l'osd de pause ;-)
+			if (myData.bIsRunning)  // si rhythmbox n'est pas lance, on n'affiche pas l'osd de pause ;-)
 			{
 				_draw_osd (myData.TextureOsdPause, myData.osdPausecoordX, myData.osdPausecoordY, myData.osdPausesizeX, myData.osdPausesizeY);
 			}

=== modified file 'musicPlayer/src/CMakeLists.txt'
--- musicPlayer/src/CMakeLists.txt	2010-09-07 02:38:17 +0000
+++ musicPlayer/src/CMakeLists.txt	2011-09-26 20:21:33 +0000
@@ -3,56 +3,32 @@
 
 SET(cd-musicPlayer_LIB_SRCS
 	applet-struct.h
-	applet-init.c
-	applet-init.h
-	applet-config.c
-	applet-config.h
-	applet-cover.c
-	applet-cover.h
-	applet-notifications.c
-	applet-notifications.h
-	applet-dbus.c
-	applet-dbus.h
-	applet-draw.c
-	applet-draw.h
-	applet-musicplayer.c
-	applet-musicplayer.h
-	3dcover-draw.c
-	3dcover-draw.h
-	applet-mpris.c
-	applet-mpris.h
-	applet-amarok2.c
-	applet-amarok2.h
-	applet-amazon.c
-	applet-amazon.h
-	applet-banshee.c
-	applet-banshee.h
-	applet-clementine.c
-	applet-clementine.h
-	applet-exaile.c
-	applet-exaile.h
-	applet-exaile3.c
-	applet-exaile3.h
-	applet-gmusicbrowser.c
-	applet-gmusicbrowser.h
-	applet-guayadeque.c
-	applet-guayadeque.h
-	applet-listen.c
-	applet-listen.h
-	applet-qmmp.c
-	applet-qmmp.h
-	applet-quodlibet.c
-	applet-quodlibet.h
-	applet-rhythmbox.c
-	applet-rhythmbox.h
-	applet-songbird.c
-	applet-songbird.h
-	applet-xmms.c
-	applet-xmms.h
-	applet-audacious.c
-	applet-audacious.h
-	applet-xmms2.c
-	applet-xmms2.h
+	applet-init.c			applet-init.h
+	applet-config.c			applet-config.h
+	applet-notifications.c		applet-notifications.h
+	applet-dbus.c			applet-dbus.h
+	applet-musicplayer.c		applet-musicplayer.h
+	applet-cover.c			applet-cover.h
+	applet-amazon.c			applet-amazon.h
+	applet-draw.c			applet-draw.h
+	3dcover-draw.c			3dcover-draw.h
+	# backends
+	applet-mpris.c			applet-mpris.h
+	applet-mpris2.c			applet-mpris2.h
+	applet-amarok2.c			applet-amarok2.h
+	applet-banshee.c			applet-banshee.h
+	applet-clementine.c		applet-clementine.h
+	applet-exaile.c			applet-exaile.h
+	applet-exaile3.c			applet-exaile3.h
+	applet-gmusicbrowser.c		applet-gmusicbrowser.h
+	applet-guayadeque.c		applet-guayadeque.h
+	applet-listen.c			applet-listen.h
+	applet-qmmp.c			applet-qmmp.h
+	applet-quodlibet.c		applet-quodlibet.h
+	applet-rhythmbox.c		applet-rhythmbox.h
+	applet-songbird.c			applet-songbird.h
+	applet-audacious.c		applet-audacious.h
+	applet-xmms2.c			applet-xmms2.h
 )
 
 add_library(${PACKAGE_MUSICPLAYER} SHARED ${cd-musicPlayer_LIB_SRCS})
@@ -79,83 +55,3 @@
 ########### install files ###############
 
 install(TARGETS ${PACKAGE_MUSICPLAYER} DESTINATION ${pluginsdir})
-
-
-#original Makefile.am contents follow:
-
-# #dnl Process this file with automake to produce Makefile.in
-#
-#lib_LTLIBRARIES = 
-#	libcd-musicPlayer.la
-#
-#
-#libcd_musicPlayer_la_SOURCES = 
-#	applet-struct.h
-#	applet-init.c
-#	applet-init.h
-#	applet-config.c
-#	applet-config.h
-#	applet-cover.c
-#	applet-cover.h
-#	applet-notifications.c
-#	applet-notifications.h
-#	applet-dbus.c
-#	applet-dbus.h
-#	applet-draw.c
-#	applet-draw.h
-#	applet-musicplayer.c
-#	applet-musicplayer.h
-#	3dcover-draw.c
-#	3dcover-draw.h
-#	applet-mpris.c
-#	applet-mpris.h
-#	applet-amarok2.c
-#	applet-amarok2.h
-#	applet-amazon.c
-#	applet-amazon.h
-#	applet-banshee.c
-#	applet-banshee.h
-#	applet-exaile.c
-#	applet-exaile.h
-#	applet-exaile3.c
-#	applet-exaile3.h
-#	applet-listen.c
-#	applet-listen.h
-#	applet-quodlibet.c
-#	applet-quodlibet.h
-#	applet-rhythmbox.c
-#	applet-rhythmbox.h
-#	applet-songbird.c
-#	applet-songbird.h
-#	applet-xmms.c
-#	applet-xmms.h
-#	applet-audacious.c
-#	applet-audacious.h
-#	applet-xmms2.c
-#	applet-xmms2.h
-#
-#
-#dock_version = `pkg-config --modversion cairo-dock`
-#
-#libcd_musicPlayer_la_CFLAGS = 
-#	-I$(top_srcdir)/src
-#	$(PACKAGE_CFLAGS)
-#	-DMY_APPLET_SHARE_DATA_DIR=""${musicplayerdatadir)""
-#	-DMY_APPLET_PREVIEW_FILE=""preview.jpg""
-#	-DMY_APPLET_CONF_FILE=""musicPlayer.conf""
-#	-DMY_APPLET_USER_DATA_DIR=""musicPlayer""
-#	-DMY_APPLET_VERSION=""${VERSION_MUSICPLAYER)""
-#	-DMY_APPLET_GETTEXT_DOMAIN=""${GETTEXT_MUSICPLAYER)""
-#	-DMY_APPLET_DOCK_VERSION=""${dock_version)""
-#	-DMY_APPLET_ICON_FILE=""icon.png""
-#	-std=c99
-#	-Werror-implicit-function-declaration
-##	-g -ggdb -W -Wall
-#
-#
-#libcd_musicPlayer_la_LIBADD = 
-#	$(PACKAGE_LIBS) -lm
-#
-#
-#libcd_musicPlayer_la_LDFLAGS =
-#	-avoid-version -module

=== modified file 'musicPlayer/src/applet-amarok1.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-amarok1.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-amarok1.c	2011-09-26 20:21:33 +0000
@@ -77,7 +77,7 @@
 		break;
 	}
 	
-	cd_debug ("Handeler Amarok 1.4: will use '%s'", cCommand);
+	cd_debug ("Handler Amarok 1.4: will use '%s'", cCommand);
 	g_spawn_command_line_async (cCommand, &erreur);
 	if (pControl == PLAYER_ENQUEUE)
 		g_free (cCommand);
@@ -138,7 +138,7 @@
 
 
 void cd_musicplayer_register_amarok1_handler (void) { //On enregistre notre lecteurs
-	MusicPlayerHandeler *pAmarok1 = g_new0 (MusicPlayerHandeler, 1);
+	MusicPlayerHandler *pAmarok1 = g_new0 (MusicPlayerHandler, 1);
 	pAmarok1->read_data = cd_amarok1_read_data;
 	pAmarok1->free_data = cd_amarok1_free_data;
 	pAmarok1->configure = NULL; //Cette fonction permettera de préparé le controleur
@@ -148,7 +148,6 @@
 	pAmarok1->appclass = "amarok";
 	pAmarok1->name = "Amarok 1.4";
 	pAmarok1->launch = "amarok";
-	pAmarok1->iPlayer = MP_AMAROK1;
 	pAmarok1->bSeparateAcquisition = FALSE;
-	cd_musicplayer_register_my_handler (pAmarok1, "Amarok 1.4");
+	cd_musicplayer_register_my_handler (pAmarok1);
 }

=== modified file 'musicPlayer/src/applet-amarok2.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-amarok2.c	2009-10-05 19:27:17 +0000
+++ musicPlayer/src/applet-amarok2.c	2011-09-26 20:21:33 +0000
@@ -32,11 +32,10 @@
  */
 void cd_musicplayer_register_amarok2_handler (void)
 {
-	MusicPlayerHandeler *pAmarok2 = cd_mpris_new_handler ();
+	MusicPlayerHandler *pAmarok2 = cd_mpris_new_handler ();
 	pAmarok2->cMprisService = "org.kde.amarok";
 	pAmarok2->appclass = "amarok";
 	pAmarok2->launch = "amarok";
 	pAmarok2->name = "Amarok 2";
-	pAmarok2->iPlayer = MP_AMAROK2;
-	cd_musicplayer_register_my_handler (pAmarok2, "Amarok 2");
+	cd_musicplayer_register_my_handler (pAmarok2);
 }

=== modified file 'musicPlayer/src/applet-amazon.c' (properties changed: +x to -x)
=== modified file 'musicPlayer/src/applet-audacious.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-audacious.c	2011-08-09 18:08:08 +0000
+++ musicPlayer/src/applet-audacious.c	2011-09-26 20:21:33 +0000
@@ -93,7 +93,7 @@
 76 <arg type="i" />
 77 </signal>
 78 </interface>
-79 </node>
+79 </node> 
 
 service : org.mpris.audacious
 interface : org.freedesktop.MediaPlayer
@@ -108,7 +108,7 @@
 	GetStatus(int[4]: status:play=0,pause,stop shuffle=random no_playlist_advance repeat=loop)
 	GetMetadata(hash: length title artist album genre codec quality track-number location)
 	PositionGet(int=time_in_second)
-
+	
 	TrackChange(hash: idem)
 	StatusChange(int[4])
 
@@ -146,7 +146,7 @@
 			myData.cArtist = g_strdup (str);
 	}
 	cd_message ("  cArtist <- %s", myData.cArtist);
-
+	
 	g_free (myData.cAlbum);
 	myData.cAlbum = NULL;
 	value = (GValue *) g_hash_table_lookup(data_list, "album");
@@ -157,7 +157,7 @@
 			myData.cAlbum = g_strdup (str);
 	}
 	cd_message ("  cAlbum <- %s", myData.cAlbum);
-
+	
 	g_free (myData.cTitle);
 	myData.cTitle = NULL;
 	value = (GValue *) g_hash_table_lookup(data_list, "title");
@@ -168,7 +168,7 @@
 			myData.cTitle = g_strdup (str);
 	}
 	cd_message ("  cTitle <- %s", myData.cTitle);
-
+	
 	value = (GValue *) g_hash_table_lookup(data_list, "tracknumber");
 	if (value == NULL)
 		value = (GValue *) g_hash_table_lookup(data_list, "track-number");  // old parameter.
@@ -177,20 +177,20 @@
 	else
 		myData.iTrackNumber = 0.;
 	cd_message ("  iTrackNumber <- %d", myData.iTrackNumber);
-
+	
 	value = (GValue *) g_hash_table_lookup(data_list, "mtime");
 	if (value == NULL)
 		value = (GValue *) g_hash_table_lookup(data_list, "length");  // old parameter.
 	if (value != NULL && G_VALUE_HOLDS_INT(value)) myData.iSongLength = g_value_get_int(value) / 1000;
 	else myData.iSongLength = 0;
 	cd_message ("  iSongLength <- %ds", myData.iSongLength);
-
+	
 	g_free (myData.cPlayingUri);
 	value = (GValue *) g_hash_table_lookup(data_list, "location");
 	if (value != NULL && G_VALUE_HOLDS_STRING(value)) myData.cPlayingUri = g_strdup (g_value_get_string(value));
 	else myData.cPlayingUri = NULL;
 	cd_message ("  cUri <- %s", myData.cPlayingUri);
-
+	
 	cd_musicplayer_get_cover_path (NULL, TRUE);
 }
 
@@ -200,7 +200,7 @@
 {
 	GHashTable *data_list = NULL;
 	const gchar *data;
-
+		
 	if(dbus_g_proxy_call (myData.dbus_proxy_player, "GetMetadata", NULL,
 		G_TYPE_INVALID,
 		MP_DBUS_TYPE_SONG_METADATA,
@@ -239,13 +239,13 @@
 {
 	CD_APPLET_ENTER;
 	cd_debug ("MP : %s ()\n", __func__);
-
+	
 	if (metadata != NULL)
 	{
 		_extract_metadata (metadata);
 		myData.iTrackListIndex = cairo_dock_dbus_get_integer (myData.dbus_proxy_shell, "GetCurrentTrack");
 		myData.iTrackListLength = cairo_dock_dbus_get_integer (myData.dbus_proxy_shell, "GetLength");
-		myData.bIsRunning = TRUE;
+		myData.iPlayingStatus = PLAYER_PLAYING;  // the current song has changed, means we are playing, so let's update the status now, for the coming update_icon().
 	}
 	else
 	{
@@ -262,8 +262,6 @@
 		myData.iSongLength = 0;
 		myData.iTrackNumber = 0;
 		myData.cover_exist = FALSE;
-
-		cd_musicplayer_dbus_detect_player ();
 	}
 	cd_musicplayer_update_icon (TRUE);
 	CD_APPLET_LEAVE ();
@@ -274,66 +272,21 @@
 // Definition du backend. //
 ////////////////////////////
 
-/* Fonction de connexion au bus de audacious.
- */
-static gboolean _cd_audacious_dbus_connect_to_bus (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		myData.dbus_enable = cd_musicplayer_dbus_connect_to_bus (); // cree le proxy.
-
-		myData.dbus_enable_shell = musicplayer_dbus_connect_to_bus_Shell ();  // cree le proxy pour la 2eme interface car AU en a 2.
-
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "StatusChange",
-			MP_DBUS_TYPE_PLAYER_STATUS_MPRIS,
-			G_TYPE_INVALID);
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "StatusChange",
-			G_CALLBACK(onChangePlaying_mpris), NULL, NULL);
-
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "TrackChange",
-			MP_DBUS_TYPE_SONG_METADATA,
-			G_TYPE_INVALID);
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "TrackChange",
-			G_CALLBACK(onChangeSong), NULL, NULL);  // pas de TrackListChange, donc on fera tout dedans.
-
-		return TRUE;
-	}
-	return FALSE;
-}
-
-/* Permet de libérer la mémoire prise par le backend.
- */
-static void cd_audacious_free_data (void)
-{
-	if (myData.dbus_proxy_player != NULL)
-	{
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "StatusChange",
-			G_CALLBACK(onChangePlaying_mpris), NULL);
-
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "TrackChange",
-			G_CALLBACK(onChangeSong), NULL);
-	}
-
-	musicplayer_dbus_disconnect_from_bus();
-	musicplayer_dbus_disconnect_from_bus_Shell();
-}
-
-
 /* Controle du lecteur (permet d'effectuer les actions de bases sur le lecteur).
  */
 static void cd_audacious_control (MyPlayerControl pControl, const char* song)
 {
 	const gchar *cCommand = NULL;
-
+		
 	switch (pControl) {
 		case PLAYER_PREVIOUS :
 			cCommand = "Prev";
 		break;
-
+		
 		case PLAYER_STOP :
 			cCommand = "Stop";
 		break;
-
+		
 		case PLAYER_PLAY_PAUSE :
 			if (myData.iPlayingStatus != PLAYER_PLAYING)
 				cCommand = "Play";
@@ -344,12 +297,12 @@
 		case PLAYER_NEXT :
 			cCommand = "Next";
 		break;
-
+		
 		case PLAYER_JUMPBOX :
 		case PLAYER_SHUFFLE :
 		case PLAYER_REPEAT :
 		{
-
+			
 			DBusGProxy *dbus_proxy_atheme = cairo_dock_create_new_session_proxy (
 				"org.atheme.audacious",
 				"/org/atheme/audacious",
@@ -381,7 +334,7 @@
 				cd_warning ("org.atheme.audacious not valid !");
 		}
 		break;
-
+		
 		case PLAYER_ENQUEUE :
 			cd_debug ("enqueue %s\n", song);
 			dbus_g_proxy_call_no_reply (myData.dbus_proxy_shell, "AddTrack",
@@ -390,13 +343,13 @@
 				G_TYPE_BOOLEAN, FALSE,
 				G_TYPE_INVALID);
 		break;
-
+		
 		default :
 			return;
 		break;
 	}
-
-	if (cCommand != NULL)
+	
+	if (cCommand != NULL) 
 	{
 		cd_debug ("MP : Handler audacious : will use '%s'", cCommand);
 		cairo_dock_dbus_call (myData.dbus_proxy_player, cCommand);
@@ -406,95 +359,81 @@
 
 /* Recupere le temps ecoule chaque seconde (pas de signal pour ca).
  */
-static void cd_audacious_read_data (void)
+static void cd_audacious_get_data (void)
 {
-	if (myData.dbus_enable)
+	if (myData.iPlayingStatus == PLAYER_PLAYING)
 	{
-		if (myData.bIsRunning)
-		{
-			if (myData.iPlayingStatus == PLAYER_PLAYING)
-			{
-				///_audacious_get_time_elapsed ();
-				cd_mpris_get_time_elapsed ();
-				if (myData.iCurrentTime < 0)
-					myData.iPlayingStatus = PLAYER_STOPPED;
-			}
-			else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
-				myData.iCurrentTime = 0;
-		}
-		else
-		{
-			myData.iCurrentTime = 0;
-		}
-		cd_message (" myData.iCurrentTime <- %d", myData.iCurrentTime);
+		cd_mpris_get_time_elapsed ();
+		if (myData.iCurrentTime < 0)
+			myData.iPlayingStatus = PLAYER_STOPPED;
 	}
+	else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
+		myData.iCurrentTime = 0;
 }
 
 /* Initialise le backend de AU.
  */
-static void cd_audacious_configure (void)
+static void cd_audacious_start (void)
 {
-	myData.DBus_commands.service = "org.mpris.audacious";
-	myData.DBus_commands.path = "/Player";
-	myData.DBus_commands.path2 = "/TrackList";
-	myData.DBus_commands.interface = "org.freedesktop.MediaPlayer";
-	myData.DBus_commands.interface2 = "org.freedesktop.MediaPlayer";
+	// register to the signals
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "StatusChange",
+		MP_DBUS_TYPE_PLAYER_STATUS_MPRIS,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "StatusChange",
+		G_CALLBACK(onChangePlaying_mpris), NULL, NULL);
 
-	myData.dbus_enable = _cd_audacious_dbus_connect_to_bus ();  // se connecte au bus et aux signaux de AU.
-	if (myData.dbus_enable)
-	{
-		cd_musicplayer_dbus_detect_player ();  // on teste la presence de AU sur le bus <=> s'il est ouvert ou pas.
-		if(myData.bIsRunning)  // player en cours d'execution, on recupere son etat.
-		{
-			cd_debug ("MP : AU is running\n");
-			///_audacious_getPlaying_mpris ();
-			cd_mpris_getPlaying ();
-			cd_audacious_getSongInfos ();
-			cd_musicplayer_update_icon (TRUE);
-		}
-		else  // player eteint.
-		{
-			cd_musicplayer_set_surface (PLAYER_NONE);
-		}
-	}
-	else  // sinon on signale par l'icone appropriee que le bus n'est pas accessible.
-	{
-		cd_musicplayer_set_surface (PLAYER_BROKEN);
-	}
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "TrackChange",
+		MP_DBUS_TYPE_SONG_METADATA,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "TrackChange",
+		G_CALLBACK(onChangeSong), NULL, NULL);  // pas de TrackListChange, donc on fera tout dedans.
+	
+	// get the current state.
+	cd_mpris_getPlaying ();  ///_audacious_getPlaying_mpris ();
+	cd_audacious_getSongInfos ();
+	cd_musicplayer_update_icon (TRUE);
 }
 
 /* On enregistre notre lecteur.
  */
 void cd_musicplayer_register_audacious_handler (void)
 {
-	MusicPlayerHandeler *pAudacious = g_new0 (MusicPlayerHandeler, 1);
-	pAudacious->read_data = cd_audacious_read_data;  // recupere le temps ecoule car on n'a pas de signal pour ca.
-	pAudacious->free_data = cd_audacious_free_data;
-	pAudacious->configure = cd_audacious_configure;  // renseigne les proprietes DBus et se connecte au bus.
-	pAudacious->control = cd_audacious_control;
-	pAudacious->get_cover = NULL;
-	pAudacious->cCoverDir = NULL;  /// a confirmer...
+	MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+	pHandler->name = "Audacious";
+	pHandler->get_data = cd_audacious_get_data;
+	pHandler->stop = NULL;
+	pHandler->start = cd_audacious_start;
+	pHandler->control = cd_audacious_control;
+	pHandler->get_cover = NULL;
+	pHandler->cCoverDir = NULL;
 
-	gchar *cResult = cairo_dock_launch_command_sync ("which audacious2");
+	// TODO: to check because I think that the class was audacious2 before and not audacious...
+	/*gchar *cResult = cairo_dock_launch_command_sync ("which audacious2");
 	if (cResult != NULL && *cResult == '/')
 	{
 		cd_debug ("MusicPlayer: Audacious2");
-		pAudacious->appclass = "audacious2";
-		pAudacious->launch = "audacious2";
+		pHandler->appclass = "audacious2";
+		pHandler->launch = "audacious2";
 	}
 	else
 	{
 		cd_debug ("MusicPlayer: Audacious (without 2)");
-		pAudacious->appclass = "audacious"; // now it's without this '2'
-		pAudacious->launch = "audacious";
+		pHandler->appclass = "audacious"; // now it's without this '2'
+		pHandler->launch = "audacious";
 	}
-	g_free (cResult);
-	pAudacious->name = "Audacious";
-	pAudacious->cMprisService = "org.mpris.audacious";
-	pAudacious->iPlayer = MP_AUDACIOUS;
-	pAudacious->bSeparateAcquisition = FALSE;  // inutile de threader.
-	pAudacious->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_STOP | PLAYER_JUMPBOX | PLAYER_SHUFFLE | PLAYER_REPEAT | PLAYER_ENQUEUE;
-	pAudacious->iLevel = PLAYER_GOOD;  // n'a besoin d'une boucle que pour afficher le temps ecoule.
-
-	cd_musicplayer_register_my_handler(pAudacious, "audacious");
+	g_free (cResult);*/
+	pHandler->appclass = "audacious";  // desktop file is audasious2.desktop, and command is audacious2, but audacious also exists, and the class is Audacious ... this is really not serious.
+	pHandler->launch = "audacious";
+	pHandler->cMprisService = "org.mpris.audacious";
+	pHandler->bSeparateAcquisition = FALSE;
+	pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_STOP | PLAYER_JUMPBOX | PLAYER_SHUFFLE | PLAYER_REPEAT | PLAYER_ENQUEUE;
+	pHandler->iLevel = PLAYER_GOOD;
+	
+	pHandler->cMprisService = "org.mpris.audacious";
+	pHandler->path = "/Player";
+	pHandler->interface = "org.freedesktop.MediaPlayer";
+	pHandler->path2 = "/TrackList";
+	pHandler->interface2 = "org.freedesktop.MediaPlayer";
+	
+	cd_musicplayer_register_my_handler(pHandler);
 }

=== modified file 'musicPlayer/src/applet-banshee.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-banshee.c	2011-04-20 20:46:51 +0000
+++ musicPlayer/src/applet-banshee.c	2011-09-26 20:21:33 +0000
@@ -268,7 +268,6 @@
 	cd_debug ("MP : %s (%s, %s, %.2f)\n", __func__, cEvent, cMessage, fBufferingPercent);
 	if (cMessage != NULL)
 	{
-		myData.bIsRunning = TRUE;
 		if (strcmp (cMessage, "startofstream") == 0)
 			cd_banshee_getSongInfos ();
 		else if (strcmp (cMessage, "trackinfoupdated") == 0)
@@ -306,18 +305,11 @@
 		myData.iSongLength = 0;
 		myData.iTrackNumber = 0;
 		myData.cover_exist = FALSE;
-		
-		cd_musicplayer_dbus_detect_player ();
 	}
 	cd_musicplayer_update_icon (TRUE);
 	CD_APPLET_LEAVE ();
 }
-static void g_cclosure_marshal_VOID__STRING_STRING_DOUBLE (GClosure *closure,
-	GValue *return_value,
-	guint n_param_values,
-	const GValue *param_values,
-	gpointer invocation_hint,
-	gpointer marshal_data);
+
 static void g_cclosure_marshal_VOID__STRING_STRING_DOUBLE (GClosure *closure,
 	GValue *return_value,
 	guint n_param_values,
@@ -353,7 +345,6 @@
 {
 	CD_APPLET_ENTER;
 	cd_debug ("MP : %s (%s)\n", __func__, cCurrentStatus);
-	myData.bIsRunning = TRUE;
 	gboolean bStateChanged = _extract_playing_status (cCurrentStatus);
 	if (! bStateChanged)
 		CD_APPLET_LEAVE ();
@@ -378,54 +369,6 @@
 // Definition du backend. //
 ////////////////////////////
 
-/* Fonction de connexion au bus de audacious.
- */
-static gboolean _cd_banshee_dbus_connect_to_bus (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		myData.dbus_enable = cd_musicplayer_dbus_connect_to_bus (); // cree le proxy.
-		
-		myData.dbus_enable_shell = musicplayer_dbus_connect_to_bus_Shell ();  // cree le proxy pour la 2eme interface car AU en a 2.
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "StateChanged",
-			G_TYPE_STRING,
-			G_TYPE_INVALID);
-		// Enregistrement d'un marshaller specifique au signal (sinon impossible de le récupérer ni de le voir
-		dbus_g_object_register_marshaller(g_cclosure_marshal_VOID__STRING_STRING_DOUBLE,
-			G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_DOUBLE ,G_TYPE_INVALID);	
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "EventChanged",
-			G_TYPE_STRING, G_TYPE_STRING, G_TYPE_DOUBLE,  // MP_DBUS_TYPE_SONG_METADATA
-			G_TYPE_INVALID);
-		
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "StateChanged",
-			G_CALLBACK(onChangePlaying), NULL, NULL);
-			
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "EventChanged",
-			G_CALLBACK(onChangeSong), NULL, NULL);
-
-		return TRUE;
-	}
-	return FALSE;
-}
-
-/* Permet de libérer la mémoire prise par le backend.
- */
-static void cd_banshee_free_data (void)
-{
-	if (myData.dbus_proxy_player != NULL)
-	{
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "StateChanged",
-			G_CALLBACK(onChangePlaying), NULL);
-		
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "EventChanged",
-			G_CALLBACK(onChangeSong), NULL);
-	}
-	
-	musicplayer_dbus_disconnect_from_bus();
-	musicplayer_dbus_disconnect_from_bus_Shell();
-}
-
 /* Controle du lecteur.
  */
 static void cd_banshee_control (MyPlayerControl pControl, const char *file)
@@ -482,93 +425,75 @@
 
 /* Recupere le temps ecoule chaque seconde (pas de signal pour ca).
  */
-static void cd_banshee_read_data (void)
+static void cd_banshee_get_data (void)
 {
-	if (myData.dbus_enable)
-	{
-		if (myData.bIsRunning)
-		{
-			if (myData.iPlayingStatus == PLAYER_PLAYING)
-			{
-				_banshee_get_time_elapsed();
-				if (myData.iCurrentTime < 0)
-					myData.iPlayingStatus = PLAYER_STOPPED;
-			}
-			else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
-			{
-				myData.iCurrentTime = 0;
-				if (myData.iPlayingStatus == PLAYER_STOPPED && myData.pPreviousPlayingStatus != PLAYER_STOPPED)  /// utile ?...
-				{
-					cd_debug ("MP - LECTEUR STOPPE\n");
-					myData.pPreviousPlayingStatus = PLAYER_STOPPED;
-					//cd_musicplayer_dbus_detect_player ();  // ca fait redemarrer le lecteur ?!
-					//if (! myData.bIsRunning)
-					{
-						cd_musicplayer_set_surface (PLAYER_NONE);
-						g_free (myData.cCoverPath);
-						myData.cCoverPath = NULL;
-					}
-				}
-			}
-		}
-		else 
-		{
-			myData.iCurrentTime = 0;
-		}
-		cd_message (" myData.iCurrentTime <- %d", __func__, myData.iCurrentTime);
+	if (myData.iPlayingStatus == PLAYER_PLAYING)
+	{
+		_banshee_get_time_elapsed();
+		if (myData.iCurrentTime < 0)
+			myData.iPlayingStatus = PLAYER_STOPPED;
+	}
+	else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
+	{
+		myData.iCurrentTime = 0;
+		if (myData.iPlayingStatus == PLAYER_STOPPED && myData.pPreviousPlayingStatus != PLAYER_STOPPED)  /// utile ?...
+		{
+			myData.pPreviousPlayingStatus = PLAYER_STOPPED;
+			cd_musicplayer_set_surface (PLAYER_NONE);
+			g_free (myData.cCoverPath);
+			myData.cCoverPath = NULL;
+		}
 	}
 }
 
 /* Initialise le backend de BA.
  */
-void cd_banshee_configure (void)
+static void cd_banshee_start (void)
 {
-	myData.DBus_commands.service = "org.bansheeproject.Banshee";
-	myData.DBus_commands.path2 = "/org/bansheeproject/Banshee/PlaybackController";
-	myData.DBus_commands.interface2 = "org.bansheeproject.Banshee.PlaybackController";
-	myData.DBus_commands.path = "/org/bansheeproject/Banshee/PlayerEngine";
-	myData.DBus_commands.interface = "org.bansheeproject.Banshee.PlayerEngine";
+	// register to the signals
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "StateChanged",
+		G_TYPE_STRING,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "StateChanged",
+		G_CALLBACK(onChangePlaying), NULL, NULL);
+
+	dbus_g_object_register_marshaller(g_cclosure_marshal_VOID__STRING_STRING_DOUBLE,
+		G_TYPE_NONE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_DOUBLE ,G_TYPE_INVALID);	
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "EventChanged",
+		G_TYPE_STRING, G_TYPE_STRING, G_TYPE_DOUBLE,  // MP_DBUS_TYPE_SONG_METADATA
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "EventChanged",
+		G_CALLBACK(onChangeSong), NULL, NULL);
 	
-	myData.dbus_enable = _cd_banshee_dbus_connect_to_bus ();  // se connecte au bus et aux signaux de AU.
-	if (myData.dbus_enable)
-	{
-		cd_musicplayer_dbus_detect_player ();  // on teste la presence de BA sur le bus <=> s'il est ouvert ou pas.
-		if(myData.bIsRunning)  // player en cours d'execution, on recupere son etat.
-		{
-			cd_message ("MP : BA is running\n");
-			_banshee_getPlaying();
-			cd_banshee_getSongInfos ();
-			cd_musicplayer_update_icon (TRUE);
-		}
-		else  // player eteint.
-		{
-			cd_musicplayer_set_surface (PLAYER_NONE);
-		}
-	}
-	else  // sinon on signale par l'icone appropriee que le bus n'est pas accessible.
-	{
-		cd_musicplayer_set_surface (PLAYER_BROKEN);
-	}
+	// get the current state.
+	_banshee_getPlaying ();
+	cd_banshee_getSongInfos ();
+	cd_musicplayer_update_icon (TRUE);
 }
 
 void cd_musicplayer_register_banshee_handler (void)
 {
-	MusicPlayerHandeler *pBanshee = g_new0 (MusicPlayerHandeler, 1);
-	pBanshee->read_data = cd_banshee_read_data;  // recupere le temps ecoule car on n'a pas de signal pour ca.
-	pBanshee->free_data = cd_banshee_free_data;
-	pBanshee->configure = cd_banshee_configure;  // renseigne les proprietes DBus et se connecte au bus.
-	pBanshee->control = cd_banshee_control;
-	pBanshee->get_cover = NULL;
-	pBanshee->cCoverDir = g_strdup_printf ("%s/.cache/media-art", g_getenv ("HOME"));
-	
-	pBanshee->appclass = "banshee";  // en fait la vraie classe est plus compliquee (Mono oblige), mais le dock sait extraire ca.
-	pBanshee->launch = "banshee";
-	pBanshee->name = "Banshee";
-	pBanshee->cMprisService = "org.bansheeproject.Banshee";
-	pBanshee->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_SHUFFLE | PLAYER_REPEAT | PLAYER_ENQUEUE;
-	pBanshee->iPlayer = MP_BANSHEE;
-	pBanshee->bSeparateAcquisition = FALSE;
-	pBanshee->iLevel = PLAYER_GOOD;  // n'a besoin d'une boucle que pour afficher le temps ecoule.
-	cd_musicplayer_register_my_handler (pBanshee,"Banshee");
+	MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+	pHandler->name = "Banshee";
+	pHandler->get_data = cd_banshee_get_data;  // recupere le temps ecoule car on n'a pas de signal pour ca.
+	pHandler->stop = NULL;
+	pHandler->start = cd_banshee_start;  // renseigne les proprietes DBus et se connecte au bus.
+	pHandler->control = cd_banshee_control;
+	pHandler->get_cover = NULL;
+	pHandler->cCoverDir = g_strdup_printf ("%s/.cache/media-art", g_getenv ("HOME"));
+	
+	pHandler->cMprisService = "org.bansheeproject.Banshee";
+	pHandler->path = "/org/bansheeproject/Banshee/PlaybackController";
+	pHandler->interface = "org.bansheeproject.Banshee.PlaybackController";
+	pHandler->path2 = "/org/bansheeproject/Banshee/PlayerEngine";
+	pHandler->interface2 = "org.bansheeproject.Banshee.PlayerEngine";
+	
+	pHandler->appclass = "banshee";  // en fait la vraie classe est plus compliquee (Mono oblige), mais le dock sait extraire ca.
+	pHandler->launch = "banshee";
+	pHandler->cMprisService = "org.bansheeproject.Banshee";
+	pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_SHUFFLE | PLAYER_REPEAT | PLAYER_ENQUEUE;
+	pHandler->bSeparateAcquisition = FALSE;
+	pHandler->iLevel = PLAYER_GOOD;  // n'a besoin d'une boucle que pour afficher le temps ecoule.
+	cd_musicplayer_register_my_handler (pHandler);
 }
 

=== modified file 'musicPlayer/src/applet-clementine.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-clementine.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-clementine.c	2011-09-26 20:21:33 +0000
@@ -33,11 +33,10 @@
  */
 void cd_musicplayer_register_clementine_handler (void)
 {
-	MusicPlayerHandeler *pClementine = cd_mpris_new_handler ();
+	MusicPlayerHandler *pClementine = cd_mpris_new_handler ();
 	pClementine->cMprisService = "org.mpris.clementine";
 	pClementine->appclass = "clementine";  // les classes sont passees en minuscule par le dock.
 	pClementine->launch = "clementine";
 	pClementine->name = "Clementine";
-	pClementine->iPlayer = MP_CLEMENTINE;
-	cd_musicplayer_register_my_handler (pClementine, "Clementine");
+	cd_musicplayer_register_my_handler (pClementine);
 }

=== modified file 'musicPlayer/src/applet-config.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-config.c	2010-09-07 02:38:17 +0000
+++ musicPlayer/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -31,11 +31,6 @@
 	
 	myConfig.cMusicPlayer 			= CD_CONFIG_GET_STRING_WITH_DEFAULT ("Configuration", "current-player", "Rhythmbox");
 	myConfig.cDefaultTitle			= CD_CONFIG_GET_STRING ("Icon", "name");
-	if (myConfig.cDefaultTitle == NULL || *myConfig.cDefaultTitle == '\0')
-	{
-		g_free (myConfig.cDefaultTitle);
-		myConfig.cDefaultTitle = g_strdup (myConfig.cMusicPlayer);
-	}
 	
 	myConfig.bEnableDialogs 		= CD_CONFIG_GET_BOOLEAN ("Configuration", "enable_dialogs");
 	myConfig.iDialogDuration 		= 1000 * CD_CONFIG_GET_INTEGER_WITH_DEFAULT ("Configuration", "time_dialog", 4);
@@ -52,8 +47,8 @@
 	myConfig.cUserImage[PLAYER_BROKEN] 	= CD_CONFIG_GET_STRING ("Configuration", "broken icon");
 
 	myConfig.bDownload   = CD_CONFIG_GET_BOOLEAN ("Configuration", "DOWNLOAD");
-	myConfig.bPauseOnClick = (CD_CONFIG_GET_INTEGER_WITH_DEFAULT ("Configuration", "pause on click", 0) == 0);  // c'est une liste numerotee de 2 elements.
-	if (!myConfig.bPauseOnClick)  // pour pouvoir agir sur la fenetre, il faut voler l'appli.
+	myConfig.bPauseOnClick = (CD_CONFIG_GET_INTEGER_WITH_DEFAULT ("Configuration", "pause on click", 1) == 0);  // c'est une liste numerotee de 2 elements.
+	if (!myConfig.bPauseOnClick)  // pour pouvoir agir sur la fenetre, il faut voler l'appli (plus tellement vrai avec MPRIS2...).
 		myConfig.bStealTaskBarIcon = TRUE;
 	
 	//\_______________ On on recupere le theme choisi.
@@ -98,12 +93,11 @@
 	g_free (myData.cMissingCover);
 	g_free (myData.cPreviousRawTitle);
 	
-	//On s'occupe des handlers.
-	cd_musicplayer_stop_handler ();
-	g_list_foreach (myData.pHandelers, (GFunc) cd_musicplayer_free_handler, NULL);
-	g_list_free (myData.pHandelers);
+	// On s'occupe des handlers.
+	g_list_foreach (myData.pHandlers, (GFunc) cd_musicplayer_free_handler, NULL);
+	g_list_free (myData.pHandlers);
 	
-	//Bye bye pauvres textures opengl
+	// Bye bye pauvres textures opengl
 	cd_opengl_reset_opengl_datas (myApplet);
 	
 CD_APPLET_RESET_DATA_END

=== modified file 'musicPlayer/src/applet-cover.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-cover.c	2011-04-20 20:46:51 +0000
+++ musicPlayer/src/applet-cover.c	2011-09-26 20:21:33 +0000
@@ -92,15 +92,15 @@
 	if (cGivenCoverPath != NULL)  // le lecteur nous donne une adresse, eventuellement distante.
 	{
 		const gchar *cString = cGivenCoverPath;
-		cd_debug ("MP : le lecteur nous a refile cette adresse : %s\n", cString);
+		cd_debug ("MP : the player give us this address : %s", cString);
 		
 		if (strncmp(cString, "http://";, 7) == 0)  // fichier distant, on decide de le telecharger nous-memes.
 		{
-			cd_debug ("MP : Le fichier est distant\n");
+			cd_debug ("MP : this file is outside");
 			
-			if (myData.pCurrentHandeler->cCoverDir)
+			if (myData.pCurrentHandler->cCoverDir)
 			{
-				myData.cCoverPath = g_strdup_printf("%s/%s - %s.jpg", myData.pCurrentHandeler->cCoverDir, myData.cArtist, myData.cAlbum);
+				myData.cCoverPath = g_strdup_printf("%s/%s - %s.jpg", myData.pCurrentHandler->cCoverDir, myData.cArtist, myData.cAlbum);
 			}
 			else  // le lecteur n'a pas de cache, on utilise le notre.
 			{
@@ -128,7 +128,7 @@
 	}
 	else if (bHandleCover)  // le lecteur ne nous a rien file => on va etablir une adresse locale qu'on testera dans le update_icon.
 	{
-		cd_debug ("MP : Pas d'adresse de la part du lecteur ... on regarde si elle n'existe pas deja en local\n");
+		cd_debug ("MP : we don't have any address... Maybe available near the file location");
 		gchar *cSongPath = (myData.cPlayingUri ? g_filename_from_uri (myData.cPlayingUri, NULL, NULL) : NULL);  // on teste d'abord dans le repertoire de la chanson.
 		if (cSongPath != NULL)  // c'est une chanson en local.
 		{
@@ -183,23 +183,23 @@
 		
 		if (myData.cCoverPath == NULL)  // on regarde maintenant dans le cache.
 		{
-			cd_debug("MP : On regarde dans le répertoire cache");
+			cd_debug("MP : we can also check the 'cache' directory");
 			
-			if (myData.pCurrentHandeler->cCoverDir)
+			if (myData.pCurrentHandler->cCoverDir)
 			{
-				myData.cCoverPath = g_strdup_printf("%s/%s - %s.jpg", myData.pCurrentHandeler->cCoverDir, myData.cArtist, myData.cAlbum);
+				myData.cCoverPath = g_strdup_printf("%s/%s - %s.jpg", myData.pCurrentHandler->cCoverDir, myData.cArtist, myData.cAlbum);
 				myData.bCoverNeedsTest = TRUE;  // on testera sur sa taille.
 			}
 			else  // le lecteur n'a pas de cache, on utilise le notre.
 			{
 				myData.cCoverPath = g_strdup_printf ("%s/musicplayer/%s - %s.jpg", g_cCairoDockDataDir, myData.cArtist, myData.cAlbum);
 			}
-			
-			if (! g_file_test (myData.cCoverPath, G_FILE_TEST_EXISTS) && myConfig.bDownload)  // la couverture n'est pas en cache, on la telecharge nous-memes.
+			// It seems that the Amazon service no longer works :-/
+			/*if (! g_file_test (myData.cCoverPath, G_FILE_TEST_EXISTS) && myConfig.bDownload)  // la couverture n'est pas en cache, on la telecharge nous-memes.
 			{
 				cd_musicplayer_dl_cover ();
 				myData.bCoverNeedsTest = TRUE;  // on testera sur sa taille.
-			}
+			}*/
 		}
 	}
 	
@@ -207,7 +207,7 @@
 
 	if (myData.cCoverPath == NULL || cairo_dock_strings_differ (myData.cPreviousCoverPath, myData.cCoverPath))  // la couverture a change, son existence est incertaine et il faudra charger la surface/texture avec une transition. Sinon son existence ne change pas et il n'y a rien a faire.
 	{
-		cd_debug ("MP -  c'est une nouvelle couverture (%s -> %s)\n", myData.cPreviousCoverPath, myData.cCoverPath);
+		cd_debug ("MP -  it's a new cover (%s -> %s)", myData.cPreviousCoverPath, myData.cCoverPath);
 		myData.cover_exist = FALSE;
 	}
 }
@@ -222,7 +222,7 @@
 	if (! g_file_test (myData.cCoverPath, G_FILE_TEST_EXISTS))
 	{
 		gchar *cCommand = g_strdup_printf ("wget \"%s\" -O \"%s\" -t 2 -T 30 > /dev/null 2>&1", cURL, myData.cCoverPath);
-		cd_debug ("MP - %s\n",cCommand);
+		cd_debug ("MP - %s",cCommand);
 		cairo_dock_launch_command (cCommand);
 		g_free (cCommand);
 		g_free (myData.cMissingCover);
@@ -236,28 +236,28 @@
 	// on teste la presence du fichier xml.
 	if (g_file_test (myData.cCurrentXmlFile, G_FILE_TEST_EXISTS))
 	{
-		cd_message ("MP : le fichier XML '%s' est present sur le disque", myData.cCurrentXmlFile);
+		cd_message ("MP : this XML file '%s' is available", myData.cCurrentXmlFile);
 		// s'il est complet, on le lit.
 		if (cd_musicplayer_check_size_is_constant (myData.cCurrentXmlFile))
 		{
-			cd_message ("MP : sa taille est constante (%d)", myData.iCurrentFileSize);
+			cd_message ("MP : constant size (%d)", myData.iCurrentFileSize);
 			
-			cd_debug ("MP - avant extraction : %s / %s\n", myData.cArtist, myData.cAlbum);
+			cd_debug ("MP - before the extraction: %s / %s", myData.cArtist, myData.cAlbum);
 			gchar *cURL = cd_extract_url_from_xml_file (myData.cCurrentXmlFile, &myData.cArtist, &myData.cAlbum, &myData.cTitle);
-			cd_debug ("MP - apres extraction : %s / %s\n", myData.cArtist, myData.cAlbum);
-			cd_debug ("MP - on s'apprete a telecharger la pochette : %s -> %s\n", cURL, myData.cCoverPath);
+			cd_debug ("MP - after the extraction: %s / %s", myData.cArtist, myData.cAlbum);
+			cd_debug ("MP - we can download this cover: %s -> %s", cURL, myData.cCoverPath);
 			if (g_strstr_len (myData.cCoverPath, -1, "(null)") != NULL && myData.cArtist && myData.cAlbum)
 			{
-				cd_debug ("MP - on corrige cCoverPath\n");
 				g_free (myData.cCoverPath);
-				if (myData.pCurrentHandeler->cCoverDir)
+				if (myData.pCurrentHandler->cCoverDir)
 				{
-					myData.cCoverPath = g_strdup_printf("%s/%s - %s.jpg", myData.pCurrentHandeler->cCoverDir, myData.cArtist, myData.cAlbum);
+					myData.cCoverPath = g_strdup_printf("%s/%s - %s.jpg", myData.pCurrentHandler->cCoverDir, myData.cArtist, myData.cAlbum);
 				}
 				else  // le lecteur n'a pas de cache, on utilise le notre.
 				{
 					myData.cCoverPath = g_strdup_printf ("%s/musicplayer/%s - %s.jpg", g_cCairoDockDataDir, myData.cArtist, myData.cAlbum);
 				}
+				cd_debug ("MP - new cCoverPath: %s", myData.cCoverPath);
 			}
 			
 			// on lance le dl du fichier image.
@@ -282,7 +282,7 @@
 	myData.iNbCheckFile ++;
 	if (myData.iNbCheckFile > 12)  // on abandonne au bout de 3s.
 	{
-		cd_debug ("MP - on abandonne le XML\n");
+		cd_debug ("MP - we delete the XML file");
 		g_remove (myData.cCurrentXmlFile);
 		g_free (myData.cCurrentXmlFile);
 		myData.cCurrentXmlFile = NULL;
@@ -296,7 +296,7 @@
 }
 void cd_musicplayer_dl_cover (void)
 {
-	cd_debug ("MP - %s (%s, %s, %s)\n", __func__, myData.cArtist, myData.cAlbum, myData.cPlayingUri);
+	cd_debug ("MP - %s (%s, %s, %s)", __func__, myData.cArtist, myData.cAlbum, myData.cPlayingUri);
 	// on oublie ce qu'on etait en train de recuperer.
 	g_free (myData.cCurrentXmlFile);
 	myData.cCurrentXmlFile = NULL;

=== modified file 'musicPlayer/src/applet-dbus.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-dbus.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-dbus.c	2011-09-26 20:21:33 +0000
@@ -27,33 +27,32 @@
 #include "applet-musicplayer.h"
 
 
-gboolean cd_musicplayer_dbus_connect_to_bus (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		myData.dbus_proxy_player = cairo_dock_create_new_session_proxy (
-			myData.DBus_commands.service,
-			myData.DBus_commands.path,
-			myData.DBus_commands.interface);
-		return (myData.dbus_proxy_player != NULL);
-	}
-	return FALSE;
-}
-
-gboolean musicplayer_dbus_connect_to_bus_Shell (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		myData.dbus_proxy_shell = cairo_dock_create_new_session_proxy (
-			myData.DBus_commands.service,
-			myData.DBus_commands.path2,
-			myData.DBus_commands.interface2);
-		return (myData.dbus_proxy_shell != NULL);
-	}
-	return FALSE;
-}
-
-void musicplayer_dbus_disconnect_from_bus (void)
+gboolean cd_musicplayer_dbus_connect_handler (MusicPlayerHandler *pHandler)
+{
+	g_return_val_if_fail (pHandler != NULL && pHandler->cMprisService != NULL, FALSE);
+	if (cairo_dock_dbus_is_enabled ())
+	{
+		if (pHandler->path != NULL)
+		{
+			myData.dbus_proxy_player = cairo_dock_create_new_session_proxy (
+				pHandler->cMprisService,
+				pHandler->path,
+				pHandler->interface);
+		}
+		if (pHandler->path2 != NULL)
+		{
+			myData.dbus_proxy_shell = cairo_dock_create_new_session_proxy (
+				pHandler->cMprisService,
+				pHandler->path2,
+				pHandler->interface2);
+		}
+		return (myData.dbus_proxy_player != NULL || myData.dbus_proxy_shell != NULL);
+	}
+	return FALSE;
+}
+
+
+void cd_musicplayer_dbus_disconnect_from_bus (void)
 {
 	if (myData.dbus_proxy_player != NULL)
 	{
@@ -66,10 +65,6 @@
 		dbus_g_proxy_cancel_call (pProxy, myData.pDetectPlayerCall);
 		myData.pDetectPlayerCall = NULL;
 	}
-}
-
-void musicplayer_dbus_disconnect_from_bus_Shell (void)
-{
 	if (myData.dbus_proxy_shell != NULL)
 	{
 		g_object_unref (myData.dbus_proxy_shell);
@@ -77,122 +72,59 @@
 	}
 }
 
-static void _on_detect_player (gboolean bPresent, GVoidFunc pCallback)
-{
-	myData.bIsRunning = bPresent;
-	pCallback ();
-}
-void cd_musicplayer_dbus_detect_player_async (GVoidFunc pCallback)
-{
-	myData.bIsRunning = FALSE;
-	if (myData.pDetectPlayerCall != NULL)
-	{
-		DBusGProxy *pProxy = cairo_dock_get_main_proxy ();
-		dbus_g_proxy_cancel_call (pProxy, myData.pDetectPlayerCall);
-	}
-	myData.pDetectPlayerCall = cairo_dock_dbus_detect_application_async (myData.DBus_commands.service, (CairoDockOnAppliPresentOnDbus) _on_detect_player, pCallback);
-}
-
-void cd_musicplayer_dbus_detect_player (void)
-{
-	myData.bIsRunning = cairo_dock_dbus_detect_application (myData.DBus_commands.service);
-}
-
-
-//*********************************************************************************
-// musicplayer_getStatus_*() : Test si musicplayer joue de la musique ou non
-//*********************************************************************************
-void cd_musicplayer_getStatus_string (const char *status_paused, const char *status_playing, const char* status_stopped )
-{
-		gchar *status=NULL;
-		status = cairo_dock_dbus_get_string (myData.dbus_proxy_player, myData.DBus_commands.get_status);
-		myData.pPreviousPlayingStatus = myData.iPlayingStatus;
-		if ((! g_ascii_strcasecmp(status, status_playing)) || (!g_ascii_strcasecmp(status, "1")))
-		{
-			//cd_debug("MP : le lecteur est en statut PLAY");
-			myData.iPlayingStatus = PLAYER_PLAYING;
-		}
-		else if (! g_ascii_strcasecmp(status, status_paused))
-		{
-			//cd_debug("MP : le lecteur est en statut PAUSED");
-			myData.iPlayingStatus = PLAYER_PAUSED;
-		}
-		else if ((status_stopped) &&(! g_ascii_strcasecmp(status, status_stopped)))
-		{
-			//cd_debug("MP : le lecteur est en statut STOPPED");
-			myData.iPlayingStatus = PLAYER_STOPPED;
-		}
-		if (status != NULL)
-		{
-			g_free(status);
-			status=NULL;
-		}
-}
-
-void cd_musicplayer_getStatus_integer (int status_paused, int status_playing)
-{
-	int status;
-	
-	status=cairo_dock_dbus_get_integer(myData.dbus_proxy_player, myData.DBus_commands.get_status);
-	//cd_debug("MP : Statut du lecteur : %d",status);
-	if (status == status_paused) myData.iPlayingStatus = PLAYER_PAUSED;
-	else if (status == status_playing) myData.iPlayingStatus = PLAYER_PLAYING;
-	else myData.iPlayingStatus = PLAYER_STOPPED;
-}
-
-//*********************************************************************************
-// musicplayer_getCoverPath() : Retourne l'adresse de la pochette
-//*********************************************************************************
-
-void cd_musicplayer_getCoverPath (void)
-{
-	if (myData.cCoverPath != NULL) {
-		g_free (myData.cCoverPath);
-		myData.cCoverPath = NULL;
-	}
-	
-	myData.cCoverPath = cairo_dock_dbus_get_string (myData.dbus_proxy_player, myData.DBus_commands.get_cover_path);
-	if (myData.cCoverPath != NULL)
-		cd_message("MP : Couverture -> %s", myData.cCoverPath);
-	else
-		cd_message("MP : Pas de couverture dispo");
-}
-
-
-MusicPlayerHandeler *cd_musicplayer_dbus_find_opened_player (void)
-{
-	// on recupere la liste des services existants.
+
+MusicPlayerHandler *cd_musicplayer_dbus_find_opened_player (void)
+{
+	if (myData.pCurrentHandler != NULL && myData.bIsRunning)
+		return myData.pCurrentHandler;
+	
+	// get the list of services.	
+	MusicPlayerHandler *pHandler = NULL;
 	gchar **name_list = cairo_dock_dbus_get_services ();
-	if (name_list)
+	
+	if (name_list != NULL)
 	{
-		// on teste chaque lecteur.
-		MusicPlayerHandeler *pHandler = NULL;
+		// check if an MPRIS2 service is present.
 		int i;
-		GList *h;
-		for (h = myData.pHandelers; h != NULL; h = h->next)
-		{
-			pHandler = h->data;
-			//cd_debug ("%s : %s\n", pHandler->name, pHandler->cMprisService);
-			if (pHandler->cMprisService == NULL)
-				continue;
+		for (i = 0; name_list[i] != NULL; i ++)
+		{
+			if (strncmp (name_list[i], CD_MPRIS2_SERVICE_BASE, strlen (CD_MPRIS2_SERVICE_BASE)) == 0)  // it's an MPRIS2 player.
+			{
+				pHandler = cd_musicplayer_get_handler_by_name ("Mpris2");
+				g_free ((gchar*)pHandler->cMprisService);
+				pHandler->cMprisService = g_strdup (name_list[i]);
+				pHandler->launch = g_strdup (name_list[i] + strlen (CD_MPRIS2_SERVICE_BASE)+1);
+				gchar *str = strchr (pHandler->launch, '.');
+				if (str)
+					*str = '\0';
+				/// set the properties (command, class), manage the class...
+				
+				break;
+			}
+		}
+		
+		// if no MPRIS2 service is present, look for a known handler.
+		if (pHandler == NULL)
+		{
+			GList *h;
+			MusicPlayerHandler *handler;
 			for (i = 0; name_list[i] != NULL; i ++)
 			{
-				cd_debug ("%s : %s\n", pHandler->cMprisService, name_list[i]);
-				if (strcmp (name_list[i], pHandler->cMprisService) == 0)  // trouve, on quitte.
+				for (h = myData.pHandlers; h != NULL; h = h->next)  // see if a known handler matches.
 				{
-					cd_debug ("found %s\n", pHandler->name);
-					break;
+					handler = h->data;
+					if (handler->cMprisService == NULL)
+						continue;
+					if (strcmp (name_list[i], handler->cMprisService) == 0)
+					{
+						pHandler = handler;
+						break;
+					}
 				}
 			}
-			if (name_list[i] != NULL)
-				break ;
 		}
+		
 		g_strfreev (name_list);
-		return (h ? pHandler : NULL);
-	}
-	else
-	{
-		return NULL;
-	}
+	}
+	return pHandler;
 }
-

=== modified file 'musicPlayer/src/applet-dbus.h'
--- musicPlayer/src/applet-dbus.h	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-dbus.h	2011-09-26 20:21:33 +0000
@@ -17,7 +17,6 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-
 #ifndef __APPLET_DBUS__
 #define  __APPLET_DBUS__
 
@@ -26,22 +25,12 @@
 #include "applet-struct.h"
 
 
-
-gboolean cd_musicplayer_dbus_connect_to_bus(void);
-gboolean musicplayer_dbus_connect_to_bus_Shell (void);
-void musicplayer_dbus_disconnect_from_bus (void);
-void musicplayer_dbus_disconnect_from_bus_Shell (void);
-void cd_musicplayer_dbus_detect_player_async (GVoidFunc pCallback);
-void cd_musicplayer_dbus_detect_player (void);
-
-
-void cd_musicplayer_getStatus_string(const char*, const char*, const char*);
-void cd_musicplayer_getStatus_integer (int, int);
-
-void cd_musicplayer_getCoverPath (void);
-
-
-MusicPlayerHandeler *cd_musicplayer_dbus_find_opened_player (void);
+gboolean cd_musicplayer_dbus_connect_handler (MusicPlayerHandler *pHandler);
+
+void cd_musicplayer_dbus_disconnect_from_bus (void);
+
+
+MusicPlayerHandler *cd_musicplayer_dbus_find_opened_player (void);
 
 
 #endif

=== modified file 'musicPlayer/src/applet-dcop.c' (properties changed: +x to -x)
=== modified file 'musicPlayer/src/applet-draw.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-draw.c	2011-04-20 20:46:51 +0000
+++ musicPlayer/src/applet-draw.c	2011-09-26 20:21:33 +0000
@@ -37,7 +37,7 @@
  */
 gboolean cd_musicplayer_draw_icon (gpointer data)
 {
-	g_return_val_if_fail (myData.pCurrentHandeler->iLevel != PLAYER_EXCELLENT, FALSE);
+	g_return_val_if_fail (myData.pCurrentHandler->iLevel != PLAYER_EXCELLENT, FALSE);
 	//cd_debug ("MP - %s (%d : %d -> %d)\n", __func__, myData.iPlayingStatus, myData.iPreviousCurrentTime, myData.iCurrentTime);
 	
 	CD_APPLET_ENTER;
@@ -66,8 +66,6 @@
 			CD_APPLET_SET_QUICK_INFO_ON_MY_ICON (NULL);
 			if (myData.iCurrentTime < 0)  // a priori cela signifie qu'une erreur est survenue la derniere fois qu'on a voulu recuperer le temps, donc que le lecteur est ferme.
 			{
-				cd_debug ("MP - test of the player ...");
-				cd_musicplayer_dbus_detect_player ();
 				cd_debug ("MP -  -> is running : %d\n", myData.bIsRunning);
 				if (myData.bIsRunning)
 					cd_musicplayer_set_surface (PLAYER_STOPPED);
@@ -78,7 +76,7 @@
 		bNeedRedraw = TRUE;
 	}
 	
-	if (myData.pCurrentHandeler->iLevel == PLAYER_BAD)
+	if (myData.pCurrentHandler->iLevel == PLAYER_BAD)
 	{
 		if (myData.iPlayingStatus != myData.pPreviousPlayingStatus)  // changement de l'etat du lecteur.
 		{
@@ -109,8 +107,8 @@
 	if (bNeedRedraw)
 		CD_APPLET_REDRAW_MY_ICON;
 	
-	CD_APPLET_LEAVE (myData.pCurrentHandeler->iLevel == PLAYER_BAD || (myData.pCurrentHandeler->iLevel == PLAYER_GOOD && myData.iPlayingStatus == PLAYER_PLAYING));
-	//return (myData.pCurrentHandeler->iLevel == PLAYER_BAD || (myData.pCurrentHandeler->iLevel == PLAYER_GOOD && myData.iPlayingStatus == PLAYER_PLAYING));
+	CD_APPLET_LEAVE (myData.pCurrentHandler->iLevel == PLAYER_BAD || (myData.pCurrentHandler->iLevel == PLAYER_GOOD && myData.iPlayingStatus == PLAYER_PLAYING));
+	//return (myData.pCurrentHandler->iLevel == PLAYER_BAD || (myData.pCurrentHandler->iLevel == PLAYER_GOOD && myData.iPlayingStatus == PLAYER_PLAYING));
 }
 
 
@@ -119,6 +117,7 @@
 	int iSize = cairo_dock_get_file_size (cFilePath);
 	gboolean bConstantSize = (iSize != 0 && iSize == myData.iCurrentFileSize);
 	myData.iCurrentFileSize = iSize;
+	cd_debug ("MP: file size: %d", iSize);
 	//if (iSize == 0)
 	//	myData.iNbCheckFile ++;
 	return bConstantSize;
@@ -129,14 +128,14 @@
 gboolean cd_musiplayer_set_cover_if_present (gboolean bCheckSize)
 {
 	CD_APPLET_ENTER;
-	cd_debug ("MP - %s (%s)\n", __func__, myData.cCoverPath);
+	cd_debug ("MP - %s (%s)", __func__, myData.cCoverPath);
 	if (g_file_test (myData.cCoverPath, G_FILE_TEST_EXISTS))
 	{
 		cd_message ("MP : la couverture '%s' est presente sur le disque", myData.cCoverPath);
 		
 		if (!bCheckSize || cd_musicplayer_check_size_is_constant (myData.cCoverPath))
 		{
-			cd_message ("MP : sa taille est constante (%d)", myData.iCurrentFileSize);
+			cd_message ("MP : sa taille est constante (%d, %d)", myData.iCurrentFileSize, bCheckSize);
 			if (bCheckSize && myData.iCurrentFileSize <= 910 && myData.cMissingCover)  // l'image vide de Amazon fait 910 octets, toutes les autres sont plus grandes.
 			{
 				cd_debug ("MP - cette pochette est trop petite, c'est surement une pochette vide, on l'ignore\n");
@@ -196,7 +195,7 @@
 static gboolean _cd_musicplayer_check_distant_cover_twice (gpointer data)
 {
 	CD_APPLET_ENTER;
-	myData.pCurrentHandeler->get_cover ();  // on ne recupere que la couverture.
+	myData.pCurrentHandler->get_cover ();  // on ne recupere que la couverture.
 	cd_musicplayer_update_icon (FALSE);
 	myData.iSidGetCoverInfoTwice = 0;
 	CD_APPLET_LEAVE (FALSE);
@@ -247,7 +246,7 @@
 		/**else
 		{
 			cd_musicplayer_set_surface (PLAYER_STOPPED);
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myData.cTitle ? myData.cTitle : myData.pCurrentHandeler ? myData.pCurrentHandeler->name : myConfig.cDefaultTitle);
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myData.cTitle ? myData.cTitle : myData.pCurrentHandler ? myData.pCurrentHandler->name : myConfig.cDefaultTitle);
 		}*/
 		
 		//Affichage de la couverture de l'album.
@@ -263,12 +262,12 @@
 		}
 		if (myConfig.bEnableCover)
 		{
-			if (myData.cCoverPath == NULL && bFirstTime && myData.pCurrentHandeler->get_cover != NULL)  // info manquante, cela arrive avec les chansons distantes (bug du lecteur ?) on teste 2 fois de suite a 2 secondes d'intervalle.
+			if (myData.cCoverPath == NULL && bFirstTime && myData.pCurrentHandler->get_cover != NULL)  // info manquante, cela arrive avec les chansons distantes (bug du lecteur ?) on teste 2 fois de suite a 2 secondes d'intervalle.
 			{
 				cd_debug ("MP - on reviendra dans 2s\n");
 				myData.iSidGetCoverInfoTwice = g_timeout_add_seconds (2, (GSourceFunc) _cd_musicplayer_check_distant_cover_twice, NULL);
 			}
-			else if (myData.cCoverPath != NULL && ! myData.cover_exist && myConfig.bEnableCover)  // couverture connue mais pas encore chargee.
+			else if (myData.cCoverPath != NULL && ! myData.cover_exist)  // couverture connue mais pas encore chargee.
 			{
 				if (myData.bCoverNeedsTest)  // il faut lancer le test en boucle.
 				{
@@ -279,12 +278,20 @@
 						myData.iSidCheckCover = g_timeout_add_seconds (1, (GSourceFunc) cd_musiplayer_set_cover_if_present, GINT_TO_POINTER (TRUE));  // TRUE <=> tester la taille contante.
 					}
 				}
+				else if (myData.bForceCoverNeedsTest)
+				{
+					cd_debug ("MP - test cover forced");
+					myData.iCurrentFileSize = -1; // force to not use empty file
+					myData.iNbCheckFile = 0;
+					myData.iSidCheckCover = g_timeout_add (50, (GSourceFunc) cd_musiplayer_set_cover_if_present, GINT_TO_POINTER (TRUE));
+				}
 				else  // la couverture est deja disponible, on peut tester tout de suite.
 				{
+					cd_debug ("MP - test cover not forced");
 					cd_musiplayer_set_cover_if_present (FALSE);  // FALSE <=> tester seulement l'existence du fichier.
 				}
 			}
-			cd_debug ("MP - cover_exist : %d\n", myData.cover_exist);
+			cd_debug ("MP - cover_exist : %d", myData.cover_exist);
 		}
 		else
 		{
@@ -301,12 +308,30 @@
 		if (myData.bIsRunning)
 		{
 			cd_musicplayer_set_surface (PLAYER_STOPPED);
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myData.pCurrentHandeler ? myData.pCurrentHandeler->name : myConfig.cDefaultTitle);
+			if (myConfig.cDefaultTitle)
+			{
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultTitle);
+			}
+			else if (strcmp (myData.pCurrentHandler->name, "Mpris2") == 0)
+			{
+				CD_APPLET_SET_NAME_FOR_MY_ICON (cd_musicplayer_get_string_with_first_char_to_upper (myData.pCurrentHandler->launch));
+			}
+			else
+			{
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myData.pCurrentHandler->name);
+			}
 		}
 		else
 		{
 			cd_musicplayer_set_surface (PLAYER_NONE);
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultTitle);
+			if (myConfig.cDefaultTitle)
+			{
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultTitle);
+			}
+			else
+			{
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
+			}
 		}
 		CD_APPLET_SET_QUICK_INFO_ON_MY_ICON (NULL);
 	}

=== modified file 'musicPlayer/src/applet-exaile.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-exaile.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-exaile.c	2011-09-26 20:21:33 +0000
@@ -71,7 +71,6 @@
 	if (cQuery == NULL)
 	{
 		myData.iPlayingStatus = PLAYER_STOPPED;
-		myData.bIsRunning = FALSE;
 		g_free (myData.cPlayingUri);
 		myData.cPlayingUri = NULL;
 		g_free (myData.cTitle);
@@ -166,26 +165,6 @@
  // Definition du backend. //
 ////////////////////////////
 
-/* Fonction de connexion au bus de EX.
- */
-static gboolean _cd_exaile_dbus_connect_to_bus (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		myData.dbus_enable = cd_musicplayer_dbus_connect_to_bus ();  // cree le proxy.
-		
-		return TRUE;
-	}
-	return FALSE;
-}
-
-/* Permet de libérer la mémoire prise par notre controleur
- */
-static void cd_exaile_free_data (void)
-{
-	musicplayer_dbus_disconnect_from_bus();
-}
-
 /* Controle du lecteur
  */
 static void cd_exaile_control (MyPlayerControl pControl, const char* file)
@@ -219,86 +198,55 @@
 
 /* Recupere tout chaque seconde (aucun signal).
  */
-static void cd_exaile_read_data (void)
+static void cd_exaile_get_data (void)
 {
-	if (! myData.dbus_enable)
-	{
-		cd_warning ("couldn't connect to bus");
-		return;
-	}
-	
-	if (! myData.bIsRunning)
-		cd_musicplayer_dbus_detect_player ();
-	
-	if (myData.bIsRunning)
-	{
-		cd_debug ("Exaile is running\n");
-		cd_exaile_getSongInfos ();
-		if (myData.iPlayingStatus == PLAYER_PLAYING && cairo_dock_strings_differ (myData.cRawTitle, myData.cPreviousRawTitle))
-			cd_exaile_getCoverPath ();
-		else if (myData.iPlayingStatus == PLAYER_STOPPED)  // en pause le temps et la chanson reste constants.
-		{
-			myData.iCurrentTime = 0;
-		}
-		cd_message (" myData.iCurrentTime <- %d", __func__, myData.iCurrentTime);
-	}
-	else
-	{
-		cd_debug ("MP : lecteur non ouvert");
-		myData.iPlayingStatus = PLAYER_NONE;
-	}
+	cd_debug ("Exaile is running\n");
+	cd_exaile_getSongInfos ();
+	if (myData.iPlayingStatus == PLAYER_PLAYING && cairo_dock_strings_differ (myData.cRawTitle, myData.cPreviousRawTitle))
+		cd_exaile_getCoverPath ();
+	else if (myData.iPlayingStatus == PLAYER_STOPPED)  // en pause le temps et la chanson reste constants.
+	{
+		myData.iCurrentTime = 0;
+	}
+	cd_message (" myData.iCurrentTime <- %d", __func__, myData.iCurrentTime);
+	
 }
 
 /* Initialise le backend de EX.
  */
-static void cd_exaile_configure (void)
+static void cd_exaile_start (void)
 {
-	myData.DBus_commands.service = "org.exaile.DBusInterface";
-	myData.DBus_commands.path = "/DBusInterfaceObject";
-	myData.DBus_commands.interface = "org.exaile.DBusInterface";
-	
-	myData.dbus_enable = _cd_exaile_dbus_connect_to_bus ();  // se connecte au bus.
-	if (myData.dbus_enable)
-	{
-		cd_musicplayer_dbus_detect_player ();  // on teste la presence de EX sur le bus <=> s'il est ouvert ou pas.
-		if(myData.bIsRunning)  // player en cours d'execution, on recupere son etat.
-		{
-			cd_debug ("MP : EX is running\n");
-			cd_exaile_getSongInfos ();
-			cd_exaile_getCoverPath ();
-			cd_musicplayer_update_icon (TRUE);
-		}
-		else  // player eteint.
-		{
-			cd_musicplayer_set_surface (PLAYER_NONE);
-		}
-	}
-	else  // sinon on signale par l'icone appropriee que le bus n'est pas accessible.
-	{
-		cd_musicplayer_set_surface (PLAYER_BROKEN);
-	}
+	// get the current state.
+	cd_exaile_getSongInfos ();
+	cd_exaile_getCoverPath ();
+	cd_musicplayer_update_icon (TRUE);
 }
 
 /* On enregistre notre lecteur.
  */
 void cd_musicplayer_register_exaile_handler (void) { //On enregistre notre lecteur
 	//cd_debug ("");
-	MusicPlayerHandeler *pExaile = g_new0 (MusicPlayerHandeler, 1);
-	pExaile->read_data = cd_exaile_read_data;
-	pExaile->free_data = cd_exaile_free_data;
-	pExaile->configure = cd_exaile_configure;
-	pExaile->control = cd_exaile_control;
-	pExaile->get_cover = NULL;
-	pExaile->cCoverDir = NULL;  /// visiblement il sait gerer les covers, sauf que je l'ai jamais vu en afficher une...
-	
-	pExaile->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT;
-	pExaile->appclass = "exaile.py";
-	pExaile->name = "Exaile";
-	pExaile->launch = "exaile";
-	pExaile->cMprisService = "org.exaile.DBusInterface";
-	pExaile->iPlayer = MP_EXAILE;
-	pExaile->bSeparateAcquisition = FALSE;
-	pExaile->iLevel = PLAYER_BAD;  // API DBus moisie sans aucun signal.
-	
-	cd_musicplayer_register_my_handler (pExaile, "Exaile");
+	MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+	pHandler->name = "Exaile";
+	pHandler->get_data = cd_exaile_get_data;
+	pHandler->stop = NULL;
+	pHandler->start = cd_exaile_start;  // we could also let the loop get the state on the first iteration.
+	pHandler->control = cd_exaile_control;
+	pHandler->get_cover = NULL;
+	pHandler->cCoverDir = NULL;  /// visiblement il sait gerer les covers, sauf que je l'ai jamais vu en afficher une...
+	
+	pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT;
+	pHandler->appclass = "exaile.py";
+	pHandler->launch = "exaile";
+	pHandler->cMprisService = "org.exaile.DBusInterface";
+	pHandler->bSeparateAcquisition = FALSE;
+	pHandler->iLevel = PLAYER_BAD;  // API DBus moisie sans aucun signal.
+	
+	pHandler->cMprisService = "org.exaile.DBusInterface";
+	pHandler->path = "/DBusInterfaceObject";
+	pHandler->interface = "org.exaile.DBusInterface";
+	pHandler->path2 = NULL;
+	pHandler->interface2 = NULL;
+	
+	cd_musicplayer_register_my_handler (pHandler);
 }

=== modified file 'musicPlayer/src/applet-exaile3.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-exaile3.c	2011-04-20 20:46:51 +0000
+++ musicPlayer/src/applet-exaile3.c	2011-09-26 20:21:33 +0000
@@ -33,11 +33,10 @@
  */
 void cd_musicplayer_register_exaile3_handler (void)
 {
-	MusicPlayerHandeler *pExaile3 = cd_mpris_new_handler ();
-	pExaile3->cMprisService = "org.mpris.exaile";
-	pExaile3->appclass = "exaile";  // en vrai "Exaile.py", mais le dock tronque les extensions et passe tout en minuscule.
-	pExaile3->launch = "exaile";
-	pExaile3->name = "Exaile 0.3";
-	pExaile3->iPlayer = MP_EXAILE3;
-	cd_musicplayer_register_my_handler (pExaile3, "Exaile 0.3");
+	MusicPlayerHandler *pHandler = cd_mpris_new_handler ();
+	pHandler->cMprisService = "org.mpris.exaile";
+	pHandler->appclass = "exaile";  // en vrai "Exaile.py", mais le dock tronque les extensions et passe tout en minuscule.
+	pHandler->launch = "exaile";
+	pHandler->name = "Exaile 0.3";
+	cd_musicplayer_register_my_handler (pHandler);
 }

=== modified file 'musicPlayer/src/applet-gmusicbrowser.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-gmusicbrowser.c	2010-09-07 02:38:17 +0000
+++ musicPlayer/src/applet-gmusicbrowser.c	2011-09-26 20:21:33 +0000
@@ -33,11 +33,10 @@
  */
 void cd_musicplayer_register_gmusicbrowser_handler (void)
 {
-	MusicPlayerHandeler *pGmusicbrowser = cd_mpris_new_handler ();
-	pGmusicbrowser->cMprisService = "org.mpris.gmusicbrowser";
-	pGmusicbrowser->appclass = "gmusicbrowser";
-	pGmusicbrowser->launch = "gmusicbrowser";
-	pGmusicbrowser->name = "GMusicBrowser";
-	pGmusicbrowser->iPlayer = MP_GMUSICBROWSER;
-	cd_musicplayer_register_my_handler (pGmusicbrowser, "GMusicBrowser");
+	MusicPlayerHandler *pHandler = cd_mpris_new_handler ();
+	pHandler->cMprisService = "org.mpris.gmusicbrowser";
+	pHandler->appclass = "gmusicbrowser";
+	pHandler->launch = "gmusicbrowser";
+	pHandler->name = "GMusicBrowser";
+	cd_musicplayer_register_my_handler (pHandler);
 }

=== modified file 'musicPlayer/src/applet-guayadeque.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-guayadeque.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-guayadeque.c	2011-09-26 20:21:33 +0000
@@ -33,11 +33,10 @@
  */
 void cd_musicplayer_register_guayadeque_handler (void)
 {
-	MusicPlayerHandeler *pGuayadeque = cd_mpris_new_handler ();
+	MusicPlayerHandler *pGuayadeque = cd_mpris_new_handler ();
 	pGuayadeque->cMprisService = "org.mpris.guayadeque";
 	pGuayadeque->appclass = "guayadeque";
 	pGuayadeque->launch = "guayadeque";
 	pGuayadeque->name = "Guayadeque";
-	pGuayadeque->iPlayer = MP_GUAYADEQUE;
-	cd_musicplayer_register_my_handler (pGuayadeque, "Guayadeque");
+	cd_musicplayer_register_my_handler (pGuayadeque);
 }

=== modified file 'musicPlayer/src/applet-init.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-init.c	2011-08-09 18:08:08 +0000
+++ musicPlayer/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -44,6 +44,7 @@
 #include "applet-amarok2.h" //Support Amarok 2
 #include "applet-audacious.h" //Support Audacious
 #include "applet-clementine.h" // Support Clementine
+#include "applet-mpris2.h" // Support Clementine
 
 CD_APPLET_DEFINE_BEGIN (N_("musicPlayer"),
 	2,0,0,
@@ -64,9 +65,10 @@
 
 //\___________ Here is where you initiate your applet. myConfig is already set at this point, and also myIcon, myContainer, myDock, myDesklet (and myDrawContext if you're in dock mode). The macro CD_APPLET_MY_CONF_FILE and CD_APPLET_MY_KEY_FILE can give you access to the applet's conf-file and its corresponding key-file (also available during reload). If you're in desklet mode, myDrawContext is still NULL, and myIcon's buffers has not been filled, because you may not need them then (idem when reloading).
 CD_APPLET_INIT_BEGIN
+	myData.bForceCoverNeedsTest = FALSE;
 	// Add here all player's registering functions
 	// Don't forget to add the registered Name in ../data/musicPlayer.conf.in
-	cd_musicplayer_register_xmms_handler ();
+	//cd_musicplayer_register_xmms_handler ();
 	cd_musicplayer_register_exaile_handler();
 	cd_musicplayer_register_exaile3_handler();
 	cd_musicplayer_register_songbird_handler();
@@ -81,6 +83,7 @@
 	cd_musicplayer_register_guayadeque_handler();
 	cd_musicplayer_register_clementine_handler();
 	cd_musicplayer_register_gmusicbrowser_handler();
+	cd_musicplayer_register_mpris2_handler();
 	
 	gchar *cCoverPath = g_strdup_printf ("%s/musicplayer", g_cCairoDockDataDir);
 	if (! g_file_test (cCoverPath, G_FILE_TEST_EXISTS))
@@ -96,7 +99,9 @@
 		CD_APPLET_SET_DESKLET_RENDERER ("Simple");
 	}
 	else if (myIcon->cName == NULL || *myIcon->cName == '\0')
-		CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cMusicPlayer);
+	{
+		CD_APPLET_SET_NAME_FOR_MY_ICON (cd_musicplayer_get_string_with_first_char_to_upper (myConfig.cMusicPlayer));
+	}
 	
 	
 	//\_______________ on charge le theme 3D si necessaire.
@@ -111,17 +116,7 @@
 	myData.iPreviousTrackNumber = -1;
 	myData.iPreviousCurrentTime = -1;
 	
-	myData.pCurrentHandeler = cd_musicplayer_get_handler_by_name (myConfig.cMusicPlayer);
-	if (myData.pCurrentHandeler == NULL) {
- 		cd_warning ("MP : this player (%s) is not supported.", myConfig.cMusicPlayer); 
- 		return; 
-	}
-	
-	cd_musicplayer_launch_handler ();  // connexion au bus, detection de l'appli, recuperation de l'etat du lecteur si il est en marche, sinon dessin de l'icone "eteint".
-	
-	//\_______________ On prend en charge l'icone de l'appli player.
-	if (myConfig.bStealTaskBarIcon)
-		CD_APPLET_MANAGE_APPLICATION (myData.pCurrentHandeler->appclass);
+	cd_musicplayer_set_current_handler (myConfig.cMusicPlayer);
 	
 	//\_______________ On s'abonne aux notifications.
 	CD_APPLET_REGISTER_FOR_CLICK_EVENT;
@@ -132,7 +127,7 @@
 	if (CD_APPLET_MY_CONTAINER_IS_OPENGL && myConfig.bOpenglThemes)
 	{
 		CD_APPLET_REGISTER_FOR_UPDATE_ICON_SLOW_EVENT;  // pour les animation de transitions.
-		if (myDesklet)  // On ne teste le survol des boutons que si l'applet est détachée
+		if (myDesklet)  // On ne teste le survol des boutons que si l'applet est detachee
 		{
 			cairo_dock_register_notification_on_object (myContainer,
 				NOTIFICATION_MOUSE_MOVED,
@@ -156,6 +151,9 @@
 		(CairoDockNotificationFunc) cd_opengl_test_mouse_over_buttons,
 		myApplet);
 	
+	// stop the current handler.
+	cd_musicplayer_stop_current_handler (TRUE);
+	
 	// On stoppe les boucles de recup de la pochette.
 	if (myData.iSidCheckXmlFile != 0)
 		g_source_remove (myData.iSidCheckXmlFile);
@@ -171,9 +169,6 @@
 
 //\___________ The reload occurs in 2 occasions : when the user changes the applet's config, and when the user reload the cairo-dock's config or modify the desklet's size. The macro CD_APPLET_MY_CONFIG_CHANGED can tell you this. myConfig has already been reloaded at this point if you're in the first case, myData is untouched. You also have the macro CD_APPLET_MY_CONTAINER_TYPE_CHANGED that can tell you if you switched from dock/desklet to desklet/dock mode.
 CD_APPLET_RELOAD_BEGIN
-	if (myDock && (myIcon->cName == NULL || *myIcon->cName == '\0'))
-		CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cMusicPlayer);
-	
 	//\_______________ On reset surfaces et textures.
 	int i;
 	for (i = 0; i < PLAYER_NB_STATUS; i ++) { // reset surfaces.
@@ -240,29 +235,23 @@
 	myData.iGetTimeFailed = 0;
 	
 	//\_______________ On gere le changement de player ou on redessine juste l'icone.
-	if (CD_APPLET_MY_CONFIG_CHANGED) {
+	if (CD_APPLET_MY_CONFIG_CHANGED)
+	{
 		// on stoppe l'ancien backend et on relance le nouveau.
-		if (myData.pCurrentHandeler)
-		{
-			cd_musicplayer_stop_handler ();  // libere tout ce qu'occupe notre ancien handler.
-			CD_APPLET_MANAGE_APPLICATION (NULL);
-		}
-		myData.pCurrentHandeler = cd_musicplayer_get_handler_by_name (myConfig.cMusicPlayer);
-		if (myData.pCurrentHandeler == NULL)
-		{
- 			cd_warning ("MP : this player (%s) is not supported.", myConfig.cMusicPlayer); 
- 			return FALSE; 
-		}
-		cd_musicplayer_launch_handler ();
+		cd_musicplayer_stop_current_handler (TRUE);  // libere tout ce qu'occupe notre ancien handler.
+
+		myData.bForceCoverNeedsTest = FALSE;
+
+		CD_APPLET_MANAGE_APPLICATION (NULL);
 		
-		if (myConfig.bStealTaskBarIcon)
-			CD_APPLET_MANAGE_APPLICATION (myData.pCurrentHandeler->appclass);
+		cd_musicplayer_set_current_handler (myConfig.cMusicPlayer);
 	}
-	else { // on redessine juste l'icone.
+	else  // on redessine juste l'icone.
+	{
 		cd_musicplayer_update_icon (FALSE);  // FALSE pour ne pas avoir 2 fois le dialogue.
 		if (! myData.cover_exist)
 		{
-			if(myData.iPlayingStatus == PLAYER_PLAYING)
+			if (myData.iPlayingStatus == PLAYER_PLAYING)
 			{
 				cd_musicplayer_set_surface (PLAYER_PLAYING);
 			}

=== modified file 'musicPlayer/src/applet-listen.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-listen.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-listen.c	2011-09-26 20:21:33 +0000
@@ -32,7 +32,7 @@
 
 
 //Les Fonctions
-void cd_listen_getSongInfos(void)
+static void cd_listen_getSongInfos(void)
 {
 	if( myData.cPreviousRawTitle )
 	{
@@ -42,19 +42,11 @@
 	{
 		myData.cPreviousRawTitle = g_strdup(myData.cRawTitle);
 	}
-	myData.cRawTitle=cairo_dock_dbus_get_string (myData.dbus_proxy_player, myData.DBus_commands.get_title);	
-}
-
-
-/* Permet de libérer la mémoire prise par notre controleur */
-void cd_listen_free_data (void) {
-	cd_debug("MP : Deconnexion de DBus");
-	musicplayer_dbus_disconnect_from_bus();
-}
-
+	myData.cRawTitle=cairo_dock_dbus_get_string (myData.dbus_proxy_player, "current_playing");	
+}
 
 /* Controle du lecteur */
-void cd_listen_control (MyPlayerControl pControl, const char *file) { //Permet d'effectuer les actions de bases sur le lecteur
+static void cd_listen_control (MyPlayerControl pControl, const char *file) { //Permet d'effectuer les actions de bases sur le lecteur
 	cd_debug ("");
 	
 	const gchar *cCommand = NULL;
@@ -64,15 +56,15 @@
 		
 	switch (pControl) {
 		case PLAYER_PREVIOUS :
-			cCommand = myData.DBus_commands.previous;
+			cCommand = "previous";
 		break;
 		
 		case PLAYER_PLAY_PAUSE :
-			cCommand = myData.DBus_commands.play;
+			cCommand = "play_pause";
 		break;
 
 		case PLAYER_NEXT :
-			cCommand = myData.DBus_commands.next;
+			cCommand = "next";
 		break;
 
 		default :
@@ -81,68 +73,36 @@
 	}
 	
 	if (cCommand != NULL) {
-		cd_debug ("MP : Handeler Listen : will use '%s'", cCommand);
+		cd_debug ("MP : Handler Listen : will use '%s'", cCommand);
 		cairo_dock_dbus_call(myData.dbus_proxy_player, cCommand);
 	}
 }
 
 /* Fonction de lecture des infos */
-void cd_listen_read_data (void) {
-	if (myData.bIsRunning)
-	{
-		if (myData.dbus_enable)
-		{
-			cd_listen_getSongInfos(); // On recupere toutes les infos de la piste en cours
-		}
-		else
-		{
-			//cd_debug("MP : Impossible d'acceder au bus");
-			myData.iPlayingStatus = PLAYER_BROKEN;
-		}
-	}
-	else
-	{
-		//cd_debug("MP : lecteur non ouvert");
-		myData.iPlayingStatus = PLAYER_NONE;
-	}
-}
-
-void cd_listen_load_dbus_commands (void)
+static void cd_listen_get_data (void)
 {
-	cd_debug ("");
-	myData.DBus_commands.service = "org.gnome.Listen";
-	myData.DBus_commands.path = "/org/gnome/listen";
-	myData.DBus_commands.interface = "org.gnome.Listen";
-	myData.DBus_commands.play = "play_pause";
-	myData.DBus_commands.pause = "play_pause";
-	myData.DBus_commands.stop = "";
-	myData.DBus_commands.next = "next";
-	myData.DBus_commands.previous = "previous";
-	myData.DBus_commands.get_title = "current_playing";
-	myData.DBus_commands.get_artist = "";
-	myData.DBus_commands.get_album = "";
-	myData.DBus_commands.get_cover_path = "";
-	myData.DBus_commands.get_status = "";
-	myData.DBus_commands.duration = "";
-	myData.DBus_commands.current_position = "";
+	cd_listen_getSongInfos();  // On recupere toutes les infos de la piste en cours
 }
 
 
 void cd_musicplayer_register_listen_handler (void) { //On enregistre notre lecteur
-	cd_debug ("");
-	MusicPlayerHandeler *pListen = g_new0 (MusicPlayerHandeler, 1);
-	pListen->read_data = cd_listen_read_data;
-	pListen->free_data = cd_listen_free_data;
-	pListen->configure = cd_listen_load_dbus_commands; //Cette fonction permettera de préparé le controleur
-	//Pour les lecteurs utilisants dbus, c'est elle qui connectera le dock aux services des lecteurs etc..
-	pListen->control = cd_listen_control;
-	pListen->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT;
-	pListen->appclass = "listen.py";
-	pListen->name = "Listen";
-	pListen->name = "listen";  /// a verifier ...
-	pListen->cMprisService = "org.gnome.Listen";
-	pListen->bSeparateAcquisition = FALSE;
-	pListen->iLevel = PLAYER_BAD;
-cd_musicplayer_register_my_handler (pListen, "Listen");
+	MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+	pHandler->name = "Listen";
+	pHandler->get_data = cd_listen_get_data;
+	pHandler->stop = NULL;
+	pHandler->start = NULL;  // nothing to do, since there is no signal to connect to, and we'll get the stats on the first iteration of the loop.
+	pHandler->control = cd_listen_control;
+	pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT;
+	pHandler->appclass = "listen.py";
+	pHandler->launch = "listen";  /// a verifier ..
+	
+	pHandler->cMprisService = "org.gnome.Listen";
+	pHandler->path = "/org/gnome/listen";
+	pHandler->interface = "org.gnome.Listen";
+	pHandler->path2 = NULL;
+	pHandler->interface2 = NULL;
+	
+	pHandler->bSeparateAcquisition = FALSE;
+	pHandler->iLevel = PLAYER_BAD;
+cd_musicplayer_register_my_handler (pHandler);
 }
-

=== modified file 'musicPlayer/src/applet-mpris.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-mpris.c	2011-04-20 20:46:51 +0000
+++ musicPlayer/src/applet-mpris.c	2011-09-26 20:21:33 +0000
@@ -250,7 +250,7 @@
 	
 	CD_APPLET_LEAVE ();
 }
-void cd_mpris_getPlaying_async (void)  // used by Audacious.
+void cd_mpris_getPlaying_async (void)
 {
 	if (s_pGetStatusCall != NULL)
 		return;
@@ -264,7 +264,7 @@
 
 /* Teste si MP joue de la musique ou non
  */
-void cd_mpris_getPlaying (void)  // used by Audacious too.
+void cd_mpris_getPlaying (void)  // sync version, used by Audacious.
 {
 	cd_debug ("%s ()\n", __func__);
 	int iStatus = _mpris_get_status (0);
@@ -451,42 +451,6 @@
 	cd_musicplayer_get_cover_path (cCoverPath, TRUE);
 }
 
-/* Recupere les infos de la chanson courante, y compris le chemin de la couverture (la telecharge au besoin).
- */
-/**static void cd_mpris_getSongInfos (void)
-{
-	GHashTable *data_list = NULL;
-	const gchar *data;
-		
-	if(dbus_g_proxy_call (myData.dbus_proxy_player, "GetMetadata", NULL,
-		G_TYPE_INVALID,
-		MP_DBUS_TYPE_SONG_METADATA,
-		&data_list,
-		G_TYPE_INVALID))
-	{
-		_extract_metadata (data_list);
-		
-		g_hash_table_destroy (data_list);
-	}
-	else
-	{
-		cd_warning ("  can't get song properties");
-		g_free (myData.cPlayingUri);
-		myData.cPlayingUri = NULL;
-		g_free (myData.cTitle);
-		myData.cTitle = NULL;
-		g_free (myData.cAlbum);
-		myData.cAlbum = NULL;
-		g_free (myData.cArtist);
-		myData.cArtist = NULL;
-		g_free (myData.cCoverPath);
-		myData.cCoverPath = NULL;
-		myData.iSongLength = 0;
-		myData.iTrackNumber = 0;
-		myData.cover_exist = FALSE;
-	}
-}*/
-
 static void _on_got_song_infos (DBusGProxy *proxy, DBusGProxyCall *call_id, CairoDockModuleInstance *myApplet)
 {
 	cd_debug ("=== %s ()", __func__);
@@ -562,7 +526,6 @@
 	if (metadata != NULL)
 	{
 		_extract_metadata (metadata);
-		myData.bIsRunning = TRUE;
 		myData.iPlayingStatus = PLAYER_PLAYING;  // pour les lecteurs bugues comem Exaile qui envoit un statut "stop" au changement de musique sans envoyer de status "play" par la suite. On considere donc que si le lecteur joue une nouvelle musique, c'est qu'il est en "play".
 	}
 	else
@@ -581,8 +544,6 @@
 		myData.iSongLength = 0;
 		myData.iTrackNumber = 0;
 		myData.cover_exist = FALSE;
-		
-		cd_musicplayer_dbus_detect_player ();
 	}
 	cd_musicplayer_update_icon (TRUE);
 	CD_APPLET_LEAVE ();
@@ -594,7 +555,6 @@
 {
 	CD_APPLET_ENTER;
 	//cd_debug ("MP : %s (%x)\n", __func__, status);
-	myData.bIsRunning = TRUE;
 	myData.iGetTimeFailed = 0;
 	int iStatus = _extract_status_mpris (status, 0);
 	_set_playing_status_mpris (iStatus);
@@ -603,7 +563,10 @@
 	if (myData.iPlayingStatus == PLAYER_PLAYING)  // le handler est stoppe lorsque le lecteur ne joue rien.
 		cd_musicplayer_relaunch_handler ();
 	
-	if(! myData.cover_exist && (myData.cPlayingUri != NULL || myData.cTitle != NULL))
+	if (myData.iPlayingStatus == PLAYER_STOPPED)
+		CD_APPLET_SET_QUICK_INFO_ON_MY_ICON (NULL);
+	
+	if(! myData.cover_exist/** && (myData.cPlayingUri != NULL || myData.cTitle != NULL)*/)
 	{
 		cd_musicplayer_set_surface (myData.iPlayingStatus);
 	}
@@ -629,43 +592,9 @@
 // Definition du backend. //
 ////////////////////////////
 
-/* Fonction de connexion au bus de MP.
- */
-static gboolean cd_mpris_dbus_connect_to_bus (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		// cree les proxys.
-		myData.dbus_enable = cd_musicplayer_dbus_connect_to_bus ();
-		
-		myData.dbus_enable_shell = musicplayer_dbus_connect_to_bus_Shell ();
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "StatusChange",
-			MP_DBUS_TYPE_PLAYER_STATUS_MPRIS,
-			G_TYPE_INVALID);
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "StatusChange",
-			G_CALLBACK(onChangePlaying_mpris), NULL, NULL);
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "TrackChange",
-			MP_DBUS_TYPE_SONG_METADATA,
-			G_TYPE_INVALID);
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "TrackChange",
-			G_CALLBACK(onChangeSong_mpris), NULL, NULL);
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_shell, "TrackListChange",
-			MP_DBUS_TYPE_TRACKLIST_DATA,
-			G_TYPE_INVALID);
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_shell, "TrackListChange",
-			G_CALLBACK(onChangeTrackList_mpris), NULL, NULL);
-		
-		return TRUE;
-	}
-	return FALSE;
-}
-
 /* Permet de liberer la memoire prise par le backend.
  */
-static void cd_mpris_free_data (void)
+static void cd_mpris_stop (void)
 {
 	if (myData.dbus_proxy_player != NULL)
 	{
@@ -698,9 +627,6 @@
 		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_shell, "TrackListChange",
 			G_CALLBACK(onChangeTrackList_mpris), NULL);
 	}
-	
-	musicplayer_dbus_disconnect_from_bus();
-	musicplayer_dbus_disconnect_from_bus_Shell();
 }
 
 
@@ -769,92 +695,76 @@
 
 /* Recupere le temps ecoule chaque seconde (pas de signal pour ca).
  */
-static void cd_mpris_read_data (void)
+static void cd_mpris_get_data (void)
 {
-	if (myData.dbus_enable)
+	if (myData.iPlayingStatus == PLAYER_PLAYING)
 	{
-		if (myData.bIsRunning)
+		cd_mpris_get_time_elapsed ();
+		if (myData.iCurrentTime < 0)  // aucune info de temps sur le bus => lecteur ferme.
 		{
-			if (myData.iPlayingStatus == PLAYER_PLAYING)
-			{
-				cd_mpris_get_time_elapsed ();
-				if (myData.iCurrentTime < 0)  // aucune info de temps sur le bus => lecteur ferme.
-				{
-					myData.iGetTimeFailed ++;  // certains lecteurs (qmmp par exemple) envoient le signal 'playing' trop tot lorsqu'on les relance, ils ne fournissent pas de duree tout de suite, et donc l'applet stoppe. On fait donc 3 tentatives avant de declarer le lecteur ferme.
-					cd_debug ("failed to get time %d time(s)", myData.iGetTimeFailed);
-					if (myData.iGetTimeFailed > 2)
-					{
-						cd_debug (" => player is likely closed");
-						myData.iPlayingStatus = PLAYER_NONE;
-						myData.iCurrentTime = -2;  // le temps etait a -1, on le change pour provoquer un redraw.
-						myData.bIsRunning = FALSE;
-					}
-				}
-				else
-					myData.iGetTimeFailed = 0;
-			}
-			else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
-			{
-				myData.iCurrentTime = 0;
-				myData.iGetTimeFailed = 0;
+			myData.iGetTimeFailed ++;  // certains lecteurs (qmmp par exemple) envoient le signal 'playing' trop tot lorsqu'on les relance, ils ne fournissent pas de duree tout de suite, et donc l'applet stoppe. On fait donc 3 tentatives avant de declarer le lecteur ferme.
+			cd_debug ("failed to get time %d time(s)", myData.iGetTimeFailed);
+			if (myData.iGetTimeFailed > 2)
+			{
+				cd_debug (" => player is likely closed");
+				myData.iPlayingStatus = PLAYER_NONE;
+				myData.iCurrentTime = -2;  // le temps etait a -1, on le change pour provoquer un redraw.
 			}
 		}
-		else 
-		{
-			myData.iCurrentTime = 0;
+		else
 			myData.iGetTimeFailed = 0;
-		}
-		//cd_message (" myData.iCurrentTime <- %d", __func__, myData.iCurrentTime);
 	}
-}
-
-/* Initialise le backend de MP.
- */
-static void _on_detect_player (void)
-{
-	if (myApplet == NULL)  // precaution.
-		return ;
-	cd_debug ("myData.bIsRunning : %d\n", myData.bIsRunning);
-	if(myData.bIsRunning)  // player en cours d'execution, on recupere son etat.
+	else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
 	{
-		cd_debug ("MP : MP is running\n");
-		
-		cd_mpris_getPlaying_async ();  // will get song infos after playing status.
-		/**cd_mpris_getPlaying ();
-		cd_mpris_getSongInfos ();
-		cd_musicplayer_update_icon (TRUE);
-		cd_musicplayer_relaunch_handler ();*/
+		myData.iCurrentTime = 0;
+		myData.iGetTimeFailed = 0;
 	}
 }
 
-static void cd_mpris_configure (void)
+static void cd_mpris_start (void)
 {
-	myData.DBus_commands.path = "/Player";
-	myData.DBus_commands.path2 = "/TrackList";
-	myData.DBus_commands.interface = "org.freedesktop.MediaPlayer";
-	myData.DBus_commands.interface2 = "org.freedesktop.MediaPlayer";
+	// register to the signals
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "StatusChange",
+		MP_DBUS_TYPE_PLAYER_STATUS_MPRIS,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "StatusChange",
+		G_CALLBACK(onChangePlaying_mpris), NULL, NULL);
+
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "TrackChange",
+		MP_DBUS_TYPE_SONG_METADATA,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "TrackChange",
+		G_CALLBACK(onChangeSong_mpris), NULL, NULL);
+
+	dbus_g_proxy_add_signal(myData.dbus_proxy_shell, "TrackListChange",
+		MP_DBUS_TYPE_TRACKLIST_DATA,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_shell, "TrackListChange",
+		G_CALLBACK(onChangeTrackList_mpris), NULL, NULL);
 	
-	myData.dbus_enable = cd_mpris_dbus_connect_to_bus ();  // se connecte au bus et aux signaux du lecteur.
-	if (myData.dbus_enable)
-	{
-		cd_musicplayer_dbus_detect_player_async (_on_detect_player);  // on teste la presence du lecteur sur le bus <=> s'il est ouvert ou pas.
-		cd_musicplayer_set_surface (PLAYER_NONE);  // en attendant de le savoir, on considere qu'il est eteint.
-	}
-	else  // sinon on signale par l'icone appropriee que le bus n'est pas accessible.
-	{
-		cd_musicplayer_set_surface (PLAYER_BROKEN);
-	}
+	// get the current state.
+	cd_mpris_getPlaying_async ();  // will get song infos after playing status.
+	/**cd_mpris_getPlaying ();
+	cd_mpris_getSongInfos ();
+	cd_musicplayer_update_icon (TRUE);
+	cd_musicplayer_relaunch_handler ();*/
 }
 
-MusicPlayerHandeler *cd_mpris_new_handler (void)
+MusicPlayerHandler *cd_mpris_new_handler (void)
 {
-	MusicPlayerHandeler *pHandler = g_new0 (MusicPlayerHandeler, 1);
-	pHandler->read_data = cd_mpris_read_data;
-	pHandler->free_data = cd_mpris_free_data;
-	pHandler->configure = cd_mpris_configure;
+	MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+	pHandler->get_data = cd_mpris_get_data;
+	pHandler->stop = cd_mpris_stop;
+	pHandler->start = cd_mpris_start;
 	pHandler->control = cd_mpris_control;
 	pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_STOP | PLAYER_SHUFFLE | PLAYER_REPEAT | PLAYER_ENQUEUE;
 	pHandler->bSeparateAcquisition = FALSE;
 	pHandler->iLevel = PLAYER_GOOD;
+	
+	pHandler->path = "/Player";
+	pHandler->interface = "org.freedesktop.MediaPlayer";
+	pHandler->path2 = "/TrackList";
+	pHandler->interface2 = "org.freedesktop.MediaPlayer";
+	
 	return pHandler;
 }

=== modified file 'musicPlayer/src/applet-mpris.h'
--- musicPlayer/src/applet-mpris.h	2011-04-20 20:46:51 +0000
+++ musicPlayer/src/applet-mpris.h	2011-09-26 20:21:33 +0000
@@ -31,7 +31,7 @@
 void cd_mpris_get_time_elapsed (void);  // used by Audacious too.
 
 
-MusicPlayerHandeler *cd_mpris_new_handler (void);
+MusicPlayerHandler *cd_mpris_new_handler (void);
 
 
 #endif

=== added file 'musicPlayer/src/applet-mpris2.c'
--- musicPlayer/src/applet-mpris2.c	1970-01-01 00:00:00 +0000
+++ musicPlayer/src/applet-mpris2.c	2011-09-26 20:21:33 +0000
@@ -0,0 +1,637 @@
+/**
+* This file is a part of the Cairo-Dock project
+*
+* Copyright : (C) see the 'copyright' file.
+* E-mail    : see the 'copyright' file.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 3
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <glib/gi18n.h>
+#include <cairo-dock.h>
+
+#include "applet-struct.h"
+#include "applet-musicplayer.h"
+#include "applet-dbus.h"
+#include "applet-draw.h"
+#include "applet-cover.h"
+#include "applet-mpris2.h"
+
+static DBusGProxyCall *s_pGetSongInfosCall = NULL;
+static DBusGProxyCall *s_pGetStatusCall = NULL;
+
+static void cd_mpris2_getSongInfos_async (void);
+
+/*
+Interface MediaPlayer2
+
+Methods
+Raise () -> nothing  
+Quit () -> nothing  
+
+Properties
+CanQuit b  Read only   
+CanRaise b  Read only   
+HasTrackList b  Read only   
+Identity s  Read only   
+DesktopEntry s  Read only   
+SupportedUriSchemes as  Read only   
+SupportedMimeTypes as  Read only 
+
+Interface MediaPlayer2.Player
+
+Methods
+Next () -> nothing  
+Previous () -> nothing  
+Pause () -> nothing  
+PlayPause () -> nothing  
+Stop () -> nothing  
+Play () -> nothing  
+Seek (x: Offset) -> nothing  
+SetPosition (o: TrackId, x: Position) -> nothing  
+OpenUri (s: Uri) -> nothing  
+
+Signals
+Seeked (x: Position)  
+
+Properties
+PlaybackStatus s (Playback_Status)  Read only   
+LoopStatus s (Loop_Status)  Read/Write   
+Rate d (Playback_Rate)  Read/Write   
+Shuffle b  Read/Write   
+Metadata a{sv} (Metadata_Map)  Read only   
+Volume d (Volume)  Read/Write   
+Position x (Time_In_Us)  Read only   
+MinimumRate d (Playback_Rate)  Read only   
+MaximumRate d (Playback_Rate)  Read only   
+CanGoNext b  Read only   
+CanGoPrevious b  Read only   
+CanPlay b  Read only   
+CanPause b  Read only   
+CanSeek b  Read only   
+CanControl b  Read only   
+
+Types
+Track_Id Simple Type o  
+Playback_Rate Simple Type d  
+Volume Simple Type d  
+Time_In_Us Simple Type x  
+Playback_Status Enum s  
+Loop_Status Enum s 
+
+*/
+
+  /////////////////////////////////
+ // Les Fonctions propres a MP. //
+/////////////////////////////////
+
+static MyPlayerStatus _extract_status (const gchar *cStatus)
+{
+	if (cStatus == NULL)
+		return PLAYER_BROKEN;
+	if (strcmp (cStatus, "Playing") == 0)
+		return PLAYER_PLAYING;
+	if (strcmp (cStatus, "Paused") == 0)
+		return PLAYER_PAUSED;
+	if (strcmp (cStatus, "Stopped") == 0)
+		return PLAYER_STOPPED;
+	return PLAYER_BROKEN;
+}
+
+static void _on_got_playing_status (DBusGProxy *proxy, DBusGProxyCall *call_id, CairoDockModuleInstance *myApplet)
+{
+	cd_debug ("=== %s ()", __func__);
+	CD_APPLET_ENTER;
+	s_pGetStatusCall = NULL;
+	
+	gchar *cStatus = NULL;
+	GValue v = G_VALUE_INIT;
+	GError *erreur = NULL;
+	gboolean bSuccess = dbus_g_proxy_end_call (proxy,
+		call_id,
+		&erreur,
+		G_TYPE_VALUE, &v,
+		G_TYPE_INVALID);
+	if (erreur != NULL)
+	{
+		cd_warning ("couldn't get MPRIS status (%s)\n", erreur->message);
+		g_error_free (erreur);
+	}
+	else
+	{
+		if (G_VALUE_HOLDS_STRING (&v))
+		{
+			cStatus = (gchar*)g_value_get_string (&v);
+			myData.iPlayingStatus = _extract_status (cStatus);
+			g_free (cStatus);  // since we don't destroy the value, we destroy its content.
+		}
+	}
+	
+	cd_mpris2_getSongInfos_async ();
+	
+	CD_APPLET_LEAVE ();
+}
+static void cd_mpris2_getPlaying_async (void)  // used by Audacious.
+{
+	if (s_pGetStatusCall != NULL)
+		return;
+	s_pGetStatusCall = dbus_g_proxy_begin_call (myData.dbus_proxy_player,
+		"Get",
+		(DBusGProxyCallNotify)_on_got_playing_status,
+		myApplet,
+		(GDestroyNotify) NULL,
+		G_TYPE_STRING, "org.mpris.MediaPlayer2.Player",
+		G_TYPE_STRING, "PlaybackStatus",
+		G_TYPE_INVALID);
+}
+
+static gboolean cd_mpris2_is_loop (void)
+{
+	gchar *cLoopStatus = cairo_dock_dbus_get_property_as_string (myData.dbus_proxy_player, "org.mpris.MediaPlayer2.Player", "LoopStatus");
+	gboolean bLoop = (cLoopStatus != NULL && strcmp (cLoopStatus, "Playlist") == 0);
+	g_free (cLoopStatus);
+	return bLoop;
+}
+
+static gboolean cd_mpris2_is_shuffle (void)
+{
+	return cairo_dock_dbus_get_property_as_boolean (myData.dbus_proxy_player, "org.mpris.MediaPlayer2.Player", "Shuffle");
+}
+
+static void cd_mpris2_get_time_elapsed (void)
+{
+	GValue v = G_VALUE_INIT;
+	cairo_dock_dbus_get_property_in_value (myData.dbus_proxy_player, "org.mpris.MediaPlayer2.Player", "Position", &v);
+	if (G_VALUE_HOLDS_INT64 (&v))
+	{
+		myData.iCurrentTime =  g_value_get_int64 (&v) / 1e6;
+	}
+	else if (G_VALUE_HOLDS_UINT64 (&v))
+	{
+		myData.iCurrentTime =  g_value_get_uint64 (&v) / 1e6;
+	}
+	else
+	{
+		cd_warning ("wrong type for the 'Position' property, please report this bug to the %s team", myData.pCurrentHandler->appclass);
+		myData.iCurrentTime = -1;
+	}
+}
+
+static gboolean _extract_metadata (GHashTable *pMetadata)
+{
+	gboolean bTrackHasChanged = FALSE;
+	GValue *v;
+	const gchar *str;
+	
+	v = g_hash_table_lookup (pMetadata, "mpris:trackid");  // a string that uniquely identifies the track within the scope of the playlist
+	if (v != NULL && G_VALUE_HOLDS_STRING (v))
+	{
+		const gchar *cTrackID = g_value_get_string (v);
+		if (cairo_dock_strings_differ (myData.cTrackID, cTrackID))  // track has changed.
+		{
+			g_free (myData.cTrackID);
+			myData.cTrackID = g_strdup (cTrackID);
+			bTrackHasChanged = TRUE;
+		}
+	}
+
+	v = g_hash_table_lookup (pMetadata, "mpris:length");  // length of the track, in microseconds (signed 64-bit integer)
+	if (v != NULL && G_VALUE_HOLDS_INT64 (v))
+	{
+		myData.iSongLength = g_value_get_int64 (v) / 1000000;
+		cd_debug ("Length: %d", myData.iSongLength);
+	}
+
+	g_free (myData.cArtist);
+	myData.cArtist = NULL;
+	v = (GValue *) g_hash_table_lookup(pMetadata, "xesam:artist");
+	if (v != NULL && G_VALUE_HOLDS(v, G_TYPE_STRV))
+	{
+		gchar **artists = g_value_get_boxed(v);
+		if (artists != NULL)
+			myData.cArtist = g_strjoinv (NULL, artists);
+	}
+	cd_message ("  cArtist <- %s", myData.cArtist);
+	
+	g_free (myData.cAlbum);
+	myData.cAlbum = NULL;
+	v = (GValue *) g_hash_table_lookup(pMetadata, "xesam:album");
+	if (v != NULL && G_VALUE_HOLDS_STRING(v))
+	{
+		str = g_value_get_string(v);
+		if (str && *str != '\0')
+			myData.cAlbum = g_strdup (str);
+	}
+	cd_message ("  cAlbum <- %s", myData.cAlbum);
+	
+	g_free (myData.cTitle);
+	myData.cTitle = NULL;
+	v = (GValue *) g_hash_table_lookup(pMetadata, "xesam:title");
+	if (v != NULL && G_VALUE_HOLDS_STRING(v))
+	{
+		str = g_value_get_string(v);
+		if (str && *str != '\0')
+			myData.cTitle = g_strdup (str);
+	}
+	cd_message ("  cTitle <- %s", myData.cTitle);
+	
+	g_free (myData.cPlayingUri);
+	myData.cPlayingUri = NULL;
+	v = (GValue *) g_hash_table_lookup(pMetadata, "xesam:url");
+	if (!v)
+		v = (GValue *) g_hash_table_lookup(pMetadata, "xesam:uri");
+	if (v != NULL && G_VALUE_HOLDS_STRING(v))
+	{
+		str = g_value_get_string(v);
+		if (str && *str != '\0')
+			myData.cPlayingUri = g_strdup (str);
+	}
+	cd_message ("  cUri <- %s", myData.cPlayingUri);
+
+	myData.iTrackNumber = 0;  // not really useful, it's the track-number in the album.
+	v = (GValue *) g_hash_table_lookup(pMetadata, "xesam:trackNumber");
+	if (v != NULL && G_VALUE_HOLDS_INT(v))
+	{
+		myData.iTrackNumber = g_value_get_int (v);
+	}
+	cd_message ("  iTrackNumber <- %d", myData.iTrackNumber);
+
+	const gchar *cCoverPath = NULL;
+	v = g_hash_table_lookup(pMetadata, "mpris:artUrl");
+	if (v != NULL && G_VALUE_HOLDS_STRING(v))
+	{
+		cCoverPath = g_value_get_string(v);
+	}
+	cd_musicplayer_get_cover_path (cCoverPath, TRUE); // did it at the end (we have to know the artist and the album if (cCoverPath == NULL))
+
+	/// we miss iTrackListIndex and tracklist-length ...
+	
+	
+	return bTrackHasChanged;
+}
+
+static void _on_got_song_infos (DBusGProxy *proxy, DBusGProxyCall *call_id, CairoDockModuleInstance *myApplet)
+{
+	cd_debug ("=== %s ()", __func__);
+	CD_APPLET_ENTER;
+	s_pGetSongInfosCall = NULL;
+	
+	GHashTable *pMetadata = NULL;
+	GValue v = G_VALUE_INIT;
+	GError *erreur = NULL;
+	gboolean bSuccess = dbus_g_proxy_end_call (proxy,
+		call_id,
+		&erreur,
+		G_TYPE_VALUE, &v,
+		G_TYPE_INVALID);
+	if (erreur != NULL)
+	{
+		cd_warning ("couldn't get MPRIS song infos (%s)\n", erreur->message);
+		g_error_free (erreur);
+		pMetadata = NULL;
+	}
+	else
+	{
+		if (G_VALUE_HOLDS_BOXED (&v))
+		{
+			pMetadata = g_value_get_boxed (&v);  // since we don't destroy the value, we'll take care of the hash-table when we're done with it.
+		}
+	}
+	if (pMetadata != NULL)
+	{
+		_extract_metadata (pMetadata);
+		
+		g_hash_table_destroy (pMetadata);
+	}
+	else
+	{
+		cd_warning ("  can't get song properties");
+		g_free (myData.cPlayingUri);
+		myData.cPlayingUri = NULL;
+		g_free (myData.cTitle);
+		myData.cTitle = NULL;
+		g_free (myData.cAlbum);
+		myData.cAlbum = NULL;
+		g_free (myData.cArtist);
+		myData.cArtist = NULL;
+		g_free (myData.cCoverPath);
+		myData.cCoverPath = NULL;
+		myData.iSongLength = 0;
+		myData.iTrackNumber = 0;
+		myData.cover_exist = FALSE;
+	}
+	
+	cd_musicplayer_update_icon (TRUE);
+	cd_musicplayer_relaunch_handler ();
+	
+	CD_APPLET_LEAVE ();
+}
+static void cd_mpris2_getSongInfos_async (void)
+{
+	if (s_pGetSongInfosCall != NULL)
+		return;
+	s_pGetSongInfosCall = dbus_g_proxy_begin_call (myData.dbus_proxy_player,
+		"Get",
+		(DBusGProxyCallNotify)_on_got_song_infos,
+		myApplet,
+		(GDestroyNotify) NULL,
+		G_TYPE_STRING, "org.mpris.MediaPlayer2.Player",
+		G_TYPE_STRING, "Metadata",
+		G_TYPE_INVALID);
+}
+
+
+  ////////////////
+ // Callbacks. //
+////////////////
+
+static void on_properties_changed (DBusGProxy *player_proxy, const gchar *cInterface, GHashTable *pChangedProps, const gchar **cInvalidProps, gpointer data)
+{
+	g_return_if_fail (cInterface != NULL);
+	cd_debug ("");
+	GValue *v;
+	if (strcmp (cInterface, "org.mpris.MediaPlayer2.Player") == 0)
+	{
+		v = g_hash_table_lookup (pChangedProps, "PlaybackStatus");
+		if (v != NULL && G_VALUE_HOLDS_STRING (v))
+		{
+			const gchar *cStatus = g_value_get_string (v);  // "Playing", "Paused" or "Stopped"
+			myData.iPlayingStatus = _extract_status (cStatus);
+			cd_debug ("PlaybackStatus: Status: %s, %d", cStatus, myData.iPlayingStatus);
+			
+			if (myData.iPlayingStatus == PLAYER_PLAYING)  // le handler est stoppe lorsque le lecteur ne joue rien.
+				cd_musicplayer_relaunch_handler ();
+			
+			if (! myData.cover_exist && (myData.cPlayingUri != NULL || myData.cTitle != NULL))
+			{
+				cd_musicplayer_set_surface (myData.iPlayingStatus);
+				cd_debug ("cover (%d), cPlayingUri (%s), cTitle (%s)", myData.cover_exist, myData.cPlayingUri, myData.cTitle);
+			}
+			else
+			{
+				CD_APPLET_REDRAW_MY_ICON;
+			}
+		}
+		
+		v = g_hash_table_lookup (pChangedProps, "Metadata");
+		if (v != NULL && G_VALUE_HOLDS_BOXED (v))
+		{
+			GHashTable *pMetadata = g_value_get_boxed (v);
+			gboolean bTrackHasChanged = _extract_metadata (pMetadata);
+			
+			if (bTrackHasChanged)
+			{
+				myData.iPlayingStatus = PLAYER_PLAYING;  // pour les lecteurs bugues comme Exaile qui envoit un statut "stop" au changement de musique sans envoyer de status "play" par la suite. On considere donc que si le lecteur joue une nouvelle musique, c'est qu'il est en "play".
+				cd_musicplayer_update_icon (TRUE);
+			}
+			else if (myData.iPlayingStatus == PLAYER_STOPPED)
+				cd_musicplayer_update_icon (TRUE); // Force the update of the icon if the player is now stopped.
+		}
+	}
+	else /*if (strcmp (cInterface, "org.mpris.MediaPlayer2.TrackList") == 0)
+	{
+		
+	}*/
+		cd_debug ("Another interface: %s", cInterface);
+}
+
+  ////////////////////////
+ // backend definition //
+////////////////////////
+
+/* Permet de liberer la memoire prise par le backend.
+ */
+static void cd_mpris2_stop (void)
+{
+	if (myData.dbus_proxy_player != NULL)
+	{
+		if (s_pGetSongInfosCall != NULL)
+		{
+			dbus_g_proxy_cancel_call (myData.dbus_proxy_player, s_pGetSongInfosCall);
+			s_pGetSongInfosCall = NULL;
+		}
+		
+		if (s_pGetStatusCall != NULL)
+		{
+			dbus_g_proxy_cancel_call (myData.dbus_proxy_player, s_pGetStatusCall);
+			s_pGetStatusCall = NULL;
+		}
+	}
+}
+
+
+/* Controle du lecteur (permet d'effectuer les actions de bases sur le lecteur).
+ */
+static void cd_mpris2_control (MyPlayerControl pControl, const char* song)
+{
+	gboolean bToggleValue;
+	switch (pControl)
+	{
+		case PLAYER_PREVIOUS :
+			cairo_dock_dbus_call (myData.dbus_proxy_shell, "Previous");
+		break;
+		
+		case PLAYER_STOP :
+			cairo_dock_dbus_call (myData.dbus_proxy_shell, "Stop");
+		break;
+		
+		case PLAYER_PLAY_PAUSE :
+			if (myData.iPlayingStatus != PLAYER_PLAYING)
+				cairo_dock_dbus_call (myData.dbus_proxy_shell, "Play");
+			else
+				cairo_dock_dbus_call (myData.dbus_proxy_shell, "Pause");
+		break;
+		
+		case PLAYER_NEXT :
+			cairo_dock_dbus_call (myData.dbus_proxy_shell, "Next");
+		break;
+		
+		case PLAYER_JUMPBOX :
+			
+		break;
+		
+		case PLAYER_SHUFFLE :
+			bToggleValue = cd_mpris2_is_shuffle ();
+			cd_debug ("SetRandom <- %d\n", !bToggleValue);
+			dbus_g_proxy_call_no_reply (myData.dbus_proxy_player, "Set",
+				G_TYPE_INVALID,
+				G_TYPE_STRING, "org.mpris.MediaPlayer2.Player",
+				G_TYPE_STRING, "Shuffle",
+				G_TYPE_BOOLEAN, !bToggleValue,
+				G_TYPE_INVALID);
+		break;
+		
+		case PLAYER_REPEAT :
+			bToggleValue = cd_mpris2_is_loop ();
+			cd_debug ("SetLoop <- %d\n", !bToggleValue);
+			dbus_g_proxy_call_no_reply (myData.dbus_proxy_player, "Set",
+				G_TYPE_INVALID,
+				G_TYPE_STRING, "org.mpris.MediaPlayer2.Player",
+				G_TYPE_STRING, "LoopStatus",
+				G_TYPE_STRING, (bToggleValue ? "None" : "Playlist"),
+				G_TYPE_INVALID);
+		break;
+		
+		case PLAYER_ENQUEUE :
+		{
+			cd_debug ("enqueue %s\n", song);
+			GError *erreur = NULL;
+			DBusGProxy *proxy = cairo_dock_create_new_session_proxy ("org.mpris.MediaPlayer2",
+				"/org/mpris/MediaPlayer2",
+				"org.mpris.MediaPlayer2.TrackList");
+			dbus_g_proxy_call (proxy, "AddTrack", &erreur,
+				G_TYPE_INVALID,
+				G_TYPE_STRING, song,  // Uri
+				DBUS_TYPE_G_OBJECT_PATH, "",  // AfterTrack
+				G_TYPE_BOOLEAN, TRUE,  // SetAsCurrent
+				G_TYPE_INVALID);
+			g_object_unref (proxy);
+			
+			if (erreur != NULL)  // the TrackList interface may not exist.
+			{
+				g_error_free (erreur);
+				erreur = NULL;
+				dbus_g_proxy_call_no_reply (proxy, "OpenUri",
+					G_TYPE_INVALID,
+					G_TYPE_STRING, song,
+					G_TYPE_INVALID);
+			}
+		}
+		break;
+		
+		default :
+		break;
+	}
+}
+
+
+/* Recupere le temps ecoule chaque seconde (pas de signal pour ca).
+ */
+static void cd_mpris2_get_data (void)
+{
+	if (myData.iPlayingStatus == PLAYER_PLAYING)
+	{
+		cd_mpris2_get_time_elapsed ();
+		if (myData.iCurrentTime < 0)  // aucune info de temps sur le bus => lecteur ferme.
+		{
+			myData.iGetTimeFailed ++;  // certains lecteurs (qmmp par exemple) envoient le signal 'playing' trop tot lorsqu'on les relance, ils ne fournissent pas de duree tout de suite, et donc l'applet stoppe. On fait donc 3 tentatives avant de declarer le lecteur ferme.
+			cd_debug ("failed to get time %d time(s)", myData.iGetTimeFailed);
+			if (myData.iGetTimeFailed > 2)
+			{
+				cd_debug (" => player is likely closed");
+				myData.iPlayingStatus = PLAYER_NONE;
+				myData.iCurrentTime = -2;  // le temps etait a -1, on le change pour provoquer un redraw.
+			}
+		}
+		else
+			myData.iGetTimeFailed = 0;
+	}
+	else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
+	{
+		myData.iCurrentTime = 0;
+		myData.iGetTimeFailed = 0;
+	}
+}
+
+static void _cd_cclosure_marshal_VOID__STRING_HASH_STRV (GClosure *closure,
+	GValue *return_value G_GNUC_UNUSED,
+	guint n_param_values,
+	const GValue *param_values,
+	gpointer invocation_hint G_GNUC_UNUSED,
+	gpointer marshal_data)
+{
+	typedef void (*GMarshalFunc_VOID__STRING_HASH_STRV) (
+		gpointer     data1,
+		gchar      *arg_1,
+		GHashTable *arg_2,
+		gchar     **arg_3,
+		gpointer     data2);
+	register GMarshalFunc_VOID__STRING_HASH_STRV callback;
+	register GCClosure *cc = (GCClosure*) closure;
+	register gpointer data1, data2;
+	g_return_if_fail (n_param_values == 4);  // return_value est NULL ici, car la callback ne renvoit rien.
+
+	if (G_CCLOSURE_SWAP_DATA (closure))
+	{
+		data1 = closure->data;
+		data2 = g_value_peek_pointer (param_values + 0);
+	}
+	else
+	{
+		data1 = g_value_peek_pointer (param_values + 0);
+		data2 = closure->data;
+	}
+	callback = (GMarshalFunc_VOID__STRING_HASH_STRV) (marshal_data ? marshal_data : cc->callback);
+	
+	g_return_if_fail (callback != NULL);
+	g_return_if_fail (G_VALUE_HOLDS_STRING (param_values + 1));
+	g_return_if_fail (G_VALUE_HOLDS_BOXED (param_values + 2));
+	g_return_if_fail (G_VALUE_HOLDS (param_values + 3, G_TYPE_STRV));
+	
+	callback (data1,
+		(char*) g_value_get_string (param_values + 1),
+		(GHashTable*) g_value_get_boxed (param_values + 2),
+		(char**) g_value_get_boxed (param_values + 3),
+		data2);
+}
+
+static void cd_mpris2_start (void)
+{
+	// register to the signals
+	cd_debug ("%s ()", __func__);
+	dbus_g_object_register_marshaller (_cd_cclosure_marshal_VOID__STRING_HASH_STRV,
+		G_TYPE_NONE,
+		G_TYPE_STRING,
+		dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE),
+		G_TYPE_STRV,
+		G_TYPE_INVALID);
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "PropertiesChanged",
+		G_TYPE_STRING,  // interface
+		dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE),  // dict of (property, new value)
+		G_TYPE_STRV,  // array of properties unvalidated
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "PropertiesChanged",
+		G_CALLBACK(on_properties_changed), NULL, NULL);
+
+	// get the current state.
+	myData.iTrackListLength = 0;
+	myData.iTrackListIndex = 0;
+	cd_mpris2_getPlaying_async ();  // will get song infos after playing status.
+}
+
+
+void cd_musicplayer_register_mpris2_handler (void)
+{
+	MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+	pHandler->name = "Mpris2";
+	pHandler->get_data = cd_mpris2_get_data;
+	pHandler->stop = cd_mpris2_stop;
+	pHandler->start = cd_mpris2_start;
+	pHandler->control = cd_mpris2_control;
+	pHandler->bSeparateAcquisition = FALSE;
+	pHandler->iLevel = PLAYER_GOOD;
+	
+	pHandler->cMprisService = NULL;  // service is left NULL until an actual MPRIS2 player is present.
+	pHandler->path = "/org/mpris/MediaPlayer2";
+	pHandler->interface = DBUS_INTERFACE_PROPERTIES;  // "org.mpris.MediaPlayer2.Player"
+	pHandler->path2 = "/org/mpris/MediaPlayer2";
+	pHandler->interface2 = "org.mpris.MediaPlayer2.Player";
+	
+	pHandler->appclass = NULL;  // will be filled later.
+	pHandler->launch = NULL;  // will be filled later.
+	pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_STOP | PLAYER_SHUFFLE | PLAYER_REPEAT | PLAYER_ENQUEUE;
+	cd_musicplayer_register_my_handler (pHandler);
+}

=== added file 'musicPlayer/src/applet-mpris2.h'
--- musicPlayer/src/applet-mpris2.h	1970-01-01 00:00:00 +0000
+++ musicPlayer/src/applet-mpris2.h	2011-09-26 20:21:33 +0000
@@ -0,0 +1,30 @@
+/**
+* This file is a part of the Cairo-Dock project
+*
+* Copyright : (C) see the 'copyright' file.
+* E-mail    : see the 'copyright' file.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 3
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __APPLET_MPRIS2__
+#define  __APPLET_MPRIS2__
+
+#include <cairo-dock.h>
+#include "applet-struct.h"
+
+
+void cd_musicplayer_register_mpris2_handler (void);
+
+
+#endif

=== modified file 'musicPlayer/src/applet-musicplayer.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-musicplayer.c	2010-02-14 00:51:22 +0000
+++ musicPlayer/src/applet-musicplayer.c	2011-09-26 20:21:33 +0000
@@ -23,30 +23,73 @@
 
 #include "applet-struct.h"
 #include "applet-draw.h"
+#include "applet-dbus.h"
 #include "applet-musicplayer.h"
 
-
-MusicPlayerHandeler *cd_musicplayer_get_handler_by_name (const gchar *cName) {
+static void _on_name_owner_changed (const gchar *cName, gboolean bOwned, gpointer data);
+
+/*
+detect running:
+get dbus services
+foreach:
+ is mpris2 -> get it
+ is in handlers list -> get it
+
+if no current handler:
+ click/menu -> detect running player -> build list with the found one selected -> set as default in conf, get and launch handler
+
+if preferred player is defined:
+get handler from name
+if none: make a generic handler from the service
+set as current
+watch it; watch mpris2 too
+detect both async -> present => owned
+
+owned => 
+ if mpris2: set mpris2 handler as current
+ launch it
+not owned => stop handler
+
+*/
+
+MusicPlayerHandler *cd_musicplayer_get_handler_by_name (const gchar *cName)
+{
 	g_return_val_if_fail (cName != NULL, NULL);
-	GList *ic;
-	MusicPlayerHandeler *handler = NULL;
-	for (ic = myData.pHandelers; ic != NULL; ic = ic->next) {
-		handler = ic->data;
-		if (strcmp(handler->name, cName) == 0)
-			return handler;
-	}
-	return NULL;
-}
+	GList *h;
+	MusicPlayerHandler *handler;
+	for (h = myData.pHandlers; h != NULL; h = h->next)
+	{
+		handler = h->data;
+		if (strcmp (handler->name, cName) == 0)
+			return handler;
+	}
+	return NULL;
+}
+
+MusicPlayerHandler *cd_musicplayer_get_handler_by_service (const gchar *cService)
+{
+	g_return_val_if_fail (cService != NULL, NULL);
+	GList *h;
+	MusicPlayerHandler *handler;
+	for (h = myData.pHandlers; h != NULL; h = h->next)
+	{
+		handler = h->data;
+		if (handler->cMprisService && strcmp (handler->cMprisService, cService) == 0)
+			return handler;
+	}
+	return NULL;
+}
+
 
 static void _cd_musicplayer_get_data_async (gpointer data) {
-	if (myData.pCurrentHandeler->read_data)
-		myData.pCurrentHandeler->read_data();
+	if (myData.pCurrentHandler->get_data)
+		myData.pCurrentHandler->get_data();
 }
 
 static gboolean _cd_musicplayer_get_data_and_update (gpointer data) {
 	CD_APPLET_ENTER;
-	if (myData.pCurrentHandeler->read_data)
-		myData.pCurrentHandeler->read_data();
+	if (myData.pCurrentHandler->get_data)
+		myData.pCurrentHandler->get_data();
 	return cd_musicplayer_draw_icon (data);  // cette fonction sort.
 }
 
@@ -54,17 +97,23 @@
  */
 void cd_musicplayer_launch_handler (void)
 { 
-	//cd_debug ("MP : Arming %s (with class %s)", myData.pCurrentHandeler->name, myData.pCurrentHandeler->appclass);
-	if (myData.pCurrentHandeler->configure != NULL)
+	cd_debug ("%s (%s, %s)", __func__, myData.pCurrentHandler->name, myData.pCurrentHandler->appclass);
+	// connect to the player.
+	if (myData.dbus_proxy_player != NULL)  // don't start twice.
+		return;
+	if (! cd_musicplayer_dbus_connect_handler (myData.pCurrentHandler))
+		return;
+	
+	// start the handler (connect to signals, or whatever the handler has to do internally).
+	if (myData.pCurrentHandler->start != NULL)
 	{
-		myData.DBus_commands.service = myData.pCurrentHandeler->cMprisService;
-		myData.pCurrentHandeler->configure();
-		myData.pCurrentHandeler->cMprisService = myData.DBus_commands.service;
+		myData.pCurrentHandler->start();
 	}
 	
-	if (myData.pCurrentHandeler->read_data && (myData.pCurrentHandeler->iLevel == PLAYER_BAD || (myData.pCurrentHandeler->iLevel == PLAYER_GOOD && (myConfig.iQuickInfoType == MY_APPLET_TIME_ELAPSED || myConfig.iQuickInfoType == MY_APPLET_TIME_LEFT))))  // il y'a de l'acquisition de donnees periodique a faire.
+	// start the timer.
+	if (myData.pCurrentHandler->get_data && (myData.pCurrentHandler->iLevel == PLAYER_BAD || (myData.pCurrentHandler->iLevel == PLAYER_GOOD && (myConfig.iQuickInfoType == MY_APPLET_TIME_ELAPSED || myConfig.iQuickInfoType == MY_APPLET_TIME_LEFT))))  // il y'a de l'acquisition de donnees periodique a faire.
 	{
-		if (myData.pCurrentHandeler->bSeparateAcquisition == TRUE)  // Utilisation du thread pour les actions longues
+		if (myData.pCurrentHandler->bSeparateAcquisition == TRUE)  // Utilisation du thread pour les actions longues
 		{
   			myData.pTask = cairo_dock_new_task (1,
   				(CairoDockGetDataAsyncFunc) _cd_musicplayer_get_data_async,
@@ -79,14 +128,16 @@
   				NULL);
 		}
 		cairo_dock_launch_task (myData.pTask);
-	}  // else tout est fait par signaux.
+	}  // else all is done by signals.
+	
+	myData.bIsRunning = TRUE;
 }
 
 /* Relance le backend s'il avait ete arrete (lecteur en pause ou arrete).
  */
 void cd_musicplayer_relaunch_handler (void)
 {
-	if (myData.pCurrentHandeler->read_data && (myData.pCurrentHandeler->iLevel == PLAYER_BAD || (myData.pCurrentHandeler->iLevel == PLAYER_GOOD && (myConfig.iQuickInfoType == MY_APPLET_TIME_ELAPSED || myConfig.iQuickInfoType == MY_APPLET_TIME_LEFT))))  // il y'a de l'acquisition de donnees periodique a faire.
+	if (myData.pCurrentHandler->get_data && (myData.pCurrentHandler->iLevel == PLAYER_BAD || (myData.pCurrentHandler->iLevel == PLAYER_GOOD && (myConfig.iQuickInfoType == MY_APPLET_TIME_ELAPSED || myConfig.iQuickInfoType == MY_APPLET_TIME_LEFT))))  // il y'a de l'acquisition de donnees periodique a faire.
 	{
 		if (!cairo_dock_task_is_active (myData.pTask))
 			cairo_dock_launch_task (myData.pTask);
@@ -95,41 +146,253 @@
 
 /* Arrete le backend en nettoyant la memoire
  */
-void cd_musicplayer_stop_handler (void)
+void cd_musicplayer_stop_current_handler (gboolean bStopWatching)
 {
-	if (myData.pCurrentHandeler == NULL)
+	if (myData.pCurrentHandler == NULL)
 		return ;
-	cd_debug ("MP : stopping %s", myData.pCurrentHandeler->name);
-	myData.pCurrentHandeler->free_data();
+	cd_debug ("MP : stopping %s", myData.pCurrentHandler->name);
+	
+	// cancel any detection or watching of the current handler.
+	if (myData.pDetectPlayerCall != NULL)
+	{
+		dbus_g_proxy_cancel_call (cairo_dock_get_main_proxy (), myData.pDetectPlayerCall);
+		myData.pDetectPlayerCall = NULL;
+	}
+	
+	if (bStopWatching)
+	{
+		cairo_dock_stop_watching_dbus_name_owner (myData.pCurrentHandler->cMprisService, (CairoDockDbusNameOwnerChangedFunc)_on_name_owner_changed);
+		if (myData.cMpris2Service != NULL)  // can be null if we already got the MPRIS2 handler.
+		{
+			cairo_dock_stop_watching_dbus_name_owner (myData.cMpris2Service, (CairoDockDbusNameOwnerChangedFunc)_on_name_owner_changed);
+			g_free (myData.cMpris2Service);
+			myData.cMpris2Service = NULL;
+		}
+	}
+	
+	// stop whatever the handler was doing internally.
+	if (myData.pCurrentHandler->stop != NULL)
+		myData.pCurrentHandler->stop();
+	
+	// disconnect from the bus, stop all signals/task
+	cd_musicplayer_dbus_disconnect_from_bus ();
+	
 	cairo_dock_free_task (myData.pTask);
 	myData.pTask = NULL;
-	myData.dbus_enable = FALSE;
+	
+	// return to initial state.
 	myData.bIsRunning = FALSE;
 	myData.iPlayingStatus = PLAYER_NONE;
-}
-
-
-/* Ajout d'un backend a la liste
+	myData.iCurrentTime = 0;
+	myData.iGetTimeFailed = 0;
+	CD_APPLET_SET_QUICK_INFO_ON_MY_ICON (NULL);
+}
+
+
+void cd_musicplayer_register_my_handler (MusicPlayerHandler *pHandler)
+{
+	if (cd_musicplayer_get_handler_by_name (pHandler->name) != NULL)  // un peu paranoiaque...
+	{
+		cd_warning ("MP : Handler %s already listed", pHandler->name);
+		return ;
+	}
+	
+	myData.pHandlers = g_list_prepend (myData.pHandlers, pHandler);
+}
+
+
+/* Detruit un backend
  */
-void cd_musicplayer_register_my_handler (MusicPlayerHandeler *pHandeler, const gchar *cName)
-{
-	MusicPlayerHandeler *handler = cd_musicplayer_get_handler_by_name (cName);  // un peu paranoiaque ...
-	if (handler == NULL) { //Inutile de rajouter un player déjà présent
-		myData.pHandelers = g_list_prepend (myData.pHandelers, pHandeler);
+void cd_musicplayer_free_handler (MusicPlayerHandler *pHandler)
+{
+	if (pHandler == NULL)
+		return ;
+	
+	g_free (pHandler->cCoverDir);
+	g_free (pHandler);
+}
+
+static void _on_name_owner_changed (const gchar *cName, gboolean bOwned, gpointer data)
+{
+	CD_APPLET_ENTER;
+	cd_debug ("%s (%s, %d)", __func__, cName, bOwned);
+	
+	// launch or stop the handler.
+	if (bOwned)
+	{
+		if (strncmp (cName, CD_MPRIS2_SERVICE_BASE, strlen (CD_MPRIS2_SERVICE_BASE)) == 0)  // the MPRIS2 service is now on the bus, it has priority.
+		{
+			cd_debug ("the MPRIS2 service is now on the bus, it has priority");
+			if (strcmp (myData.pCurrentHandler->name, "Mpris2") != 0)  // our current handler is not the MPRIS2 one, stop it and use the latter instead.
+			{
+				cd_debug ("our current handler is not the MPRIS2 one, stop it and use the latter instead");
+				gboolean bAlreadyWatching = FALSE;
+				if (myData.cMpris2Service && strcmp (myData.cMpris2Service, cName) == 0)  // we're already watching it, don't unwatch (we can't unwatch ourselves in the callback, plus it's a waste of CPU).
+				{
+					bAlreadyWatching = TRUE;
+					g_free (myData.cMpris2Service);
+					myData.cMpris2Service = NULL;
+				}
+				cd_musicplayer_stop_current_handler (TRUE);  // so once we detect the MPRIS2 service on the bus, the other one is dropped forever.
+				
+				myData.pCurrentHandler = cd_musicplayer_get_handler_by_name ("Mpris2");
+				g_free ((gchar*)myData.pCurrentHandler->cMprisService);  // well, in _this_ case the string is not constant.
+				myData.pCurrentHandler->cMprisService = g_strdup (cName);
+				
+				myData.pCurrentHandler->launch = g_strdup (cName+strlen (CD_MPRIS2_SERVICE_BASE"."));
+				myData.pCurrentHandler->appclass = g_strdup (cName+strlen (CD_MPRIS2_SERVICE_BASE"."));
+				if (myConfig.bStealTaskBarIcon)
+					CD_APPLET_MANAGE_APPLICATION (myData.pCurrentHandler->appclass);
+				
+				if (! bAlreadyWatching)
+					cairo_dock_watch_dbus_name_owner (myData.pCurrentHandler->cMprisService, (CairoDockDbusNameOwnerChangedFunc) _on_name_owner_changed, NULL);
+			}
+		}
+		else  // it's not the MPRIS2 service, ignore it if we already have the MPRIS2 service (shouldn't happen though).
+		{
+			if (strcmp (myData.pCurrentHandler->name, "Mpris2") == 0)
+			{
+				cd_debug ("it's not the MPRIS2 service, ignore it since we already have the MPRIS2 service");
+				CD_APPLET_LEAVE ();
+			}
+		}
+		
+		cd_musicplayer_launch_handler ();
+	}
+	else  // else stop the handler.
+	{
+		cd_debug ("stop the handler");
+		cd_musicplayer_stop_current_handler (FALSE);  // FALSE = keep watching it.
+		cd_musicplayer_set_surface (PLAYER_NONE);
+		if (myConfig.cDefaultTitle != NULL)
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.cDefaultTitle);
+		else
+		{
+			if (strcmp (myData.pCurrentHandler->name, "Mpris2") == 0)
+			{
+				CD_APPLET_SET_NAME_FOR_MY_ICON (cd_musicplayer_get_string_with_first_char_to_upper (myData.pCurrentHandler->launch));
+			}
+			else
+			{
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myData.pCurrentHandler->name);
+			}
+		}
+	}
+	CD_APPLET_LEAVE ();
+}
+
+static void _on_detect_handler (gboolean bPresent, gpointer data)
+{
+	CD_APPLET_ENTER;
+	myData.pDetectPlayerCall = NULL;
+	cd_debug ("%s is present on the bus: %d\n", myData.pCurrentHandler->cMprisService, bPresent);
+	if (bPresent)
+	{
+		_on_name_owner_changed (myData.pCurrentHandler->cMprisService, bPresent, data);
+	}
+	CD_APPLET_LEAVE ();
+}
+
+static void _on_detect_mpris2 (gboolean bPresent, gpointer data)
+{
+	CD_APPLET_ENTER;
+	myData.pDetectPlayerCall = NULL;
+	cd_debug ("MPRIS2 is present on the bus: %d\n", bPresent);
+	if (bPresent)
+		_on_name_owner_changed (myData.cMpris2Service, bPresent, data);
+	else if (myData.pCurrentHandler->cMprisService != NULL)  // couldn't detect it, but it has another service, so try this one.
+		myData.pDetectPlayerCall = cairo_dock_dbus_detect_application_async (myData.pCurrentHandler->cMprisService, (CairoDockOnAppliPresentOnDbus) _on_detect_handler, NULL);
+	CD_APPLET_LEAVE ();
+}
+
+/*if prefered player is defined:
+get handler from name
+if none: make a generic handler from the service
+set as current
+watch it; watch mpris2 too
+detect async -> present => owned*/
+void cd_musicplayer_set_current_handler (const gchar *cName)
+{
+	cd_debug ("%s (%s)", __func__, cName);
+	cd_musicplayer_stop_current_handler (TRUE);
+	
+	if (cName == NULL)
+	{
+		myData.pCurrentHandler = NULL;
+		cd_musicplayer_set_surface (PLAYER_NONE);
+		if (myConfig.cDefaultTitle == NULL)
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
+		return;
+	}
+	
+	// find a handler which has this name
+	myData.pCurrentHandler = cd_musicplayer_get_handler_by_name (cName);
+	
+	// make the corresponding MPRIS2 name in any case, as it is the standard way.
+	gchar *cMpris2Service;
+	if (strncmp (cName, CD_MPRIS2_SERVICE_BASE, strlen (CD_MPRIS2_SERVICE_BASE)) == 0)  // it's already an MPRIS2 service name
+	{
+		cMpris2Service = g_strdup (cName);
+	}
+	else  // make the default MPRIS2 service name.
+	{
+		cMpris2Service = g_strdup_printf (CD_MPRIS2_SERVICE_BASE".%s", cName);
+	}
+	
+	// if no such handler, make a generic MPRIS2 handler.
+	if (myData.pCurrentHandler == NULL)  // no such handler
+	{
+		myData.pCurrentHandler = cd_musicplayer_get_handler_by_name ("Mpris2");
+		
+		if (strncmp (cName, CD_MPRIS2_SERVICE_BASE".", strlen (CD_MPRIS2_SERVICE_BASE".")) == 0)
+		{
+			myData.pCurrentHandler->launch = g_strdup (cName+strlen (CD_MPRIS2_SERVICE_BASE"."));
+			myData.pCurrentHandler->appclass = g_strdup (cName+strlen (CD_MPRIS2_SERVICE_BASE"."));
+		}
+		else
+		{
+			myData.pCurrentHandler->launch = g_strdup (cName);
+			myData.pCurrentHandler->appclass = g_strdup (cName);
+		}
+		myData.pCurrentHandler->cMprisService = cMpris2Service;
 	}
 	else
-		cd_warning ("MP : Handeler %s already listed", cName);
+	{
+		myData.cMpris2Service = cMpris2Service;
+	}
+	
+	// watch it on the bus.
+	if (myData.cMpris2Service != NULL)
+		cairo_dock_watch_dbus_name_owner (myData.cMpris2Service, (CairoDockDbusNameOwnerChangedFunc) _on_name_owner_changed, NULL);
+	if (myData.pCurrentHandler->cMprisService != NULL)  // watch both, but MPRIS2 will have the priority.
+		cairo_dock_watch_dbus_name_owner (myData.pCurrentHandler->cMprisService, (CairoDockDbusNameOwnerChangedFunc) _on_name_owner_changed, NULL);
+	
+	// detect its current presence on the bus.
+	if (myData.cMpris2Service != NULL)
+		myData.pDetectPlayerCall = cairo_dock_dbus_detect_application_async (myData.cMpris2Service, (CairoDockOnAppliPresentOnDbus) _on_detect_mpris2, NULL);  // mpris2 first, and then the other one.	
+	else if (myData.pCurrentHandler->cMprisService != NULL)
+		myData.pDetectPlayerCall = cairo_dock_dbus_detect_application_async (myData.pCurrentHandler->cMprisService, (CairoDockOnAppliPresentOnDbus) _on_detect_handler, NULL);
+	cd_musicplayer_set_surface (PLAYER_NONE);  // meanwhile, consider it's not running.
+	if (myConfig.cDefaultTitle == NULL)
+	{
+		if (strcmp (myData.pCurrentHandler->name, "Mpris2") == 0)
+		{
+			CD_APPLET_SET_NAME_FOR_MY_ICON (cd_musicplayer_get_string_with_first_char_to_upper (myData.pCurrentHandler->launch));
+			cd_debug ("musicPlayer label: set name (with upper): %s", cd_musicplayer_get_string_with_first_char_to_upper (myData.pCurrentHandler->launch));
+		}
+		else
+		{
+			CD_APPLET_SET_NAME_FOR_MY_ICON (myData.pCurrentHandler->name);
+			cd_debug ("musicPlayer label: set name: %s", myData.pCurrentHandler->name);
+		}
+	}
+	
+	// manage its taskbar icon.
+	if (myConfig.bStealTaskBarIcon)
+		CD_APPLET_MANAGE_APPLICATION (myData.pCurrentHandler->appclass);
 }
 
-
-/* Detruit un backend
- */
-void cd_musicplayer_free_handler (MusicPlayerHandeler *pHandeler)
+gchar *cd_musicplayer_get_string_with_first_char_to_upper (const gchar *cName)
 {
-	if (pHandeler == NULL)
-		return ;
-	
-	g_free (pHandeler->cCoverDir);
-	
-	g_free (pHandeler);
+	return (cName == NULL) ? NULL : g_strdup_printf ("%c%s", g_ascii_toupper (*cName), cName + 1);
 }

=== modified file 'musicPlayer/src/applet-musicplayer.h'
--- musicPlayer/src/applet-musicplayer.h	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-musicplayer.h	2011-09-26 20:21:33 +0000
@@ -26,17 +26,23 @@
 #include "applet-struct.h"
 
 
-MusicPlayerHandeler *cd_musicplayer_get_handler_by_name (const gchar *cName);
+MusicPlayerHandler *cd_musicplayer_get_handler_by_name (const gchar *cName);
+
+MusicPlayerHandler *cd_musicplayer_get_handler_by_service (const gchar *cService);
 
 void cd_musicplayer_launch_handler (void);
 
 void cd_musicplayer_relaunch_handler (void);
 
-void cd_musicplayer_stop_handler (void);
-
-void cd_musicplayer_register_my_handler (MusicPlayerHandeler *pHandeler, const gchar *cName);
-
-void cd_musicplayer_free_handler (MusicPlayerHandeler *pHandeler);
+void cd_musicplayer_stop_current_handler (gboolean bStopWatching);
+
+void cd_musicplayer_register_my_handler (MusicPlayerHandler *pHandler);
+
+void cd_musicplayer_free_handler (MusicPlayerHandler *pHandler);
+
+void cd_musicplayer_set_current_handler (const gchar *cName);
+
+gchar *cd_musicplayer_get_string_with_first_char_to_upper (const gchar *cName);
 
 
 #endif

=== modified file 'musicPlayer/src/applet-notifications.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-notifications.c	2011-08-09 18:08:08 +0000
+++ musicPlayer/src/applet-notifications.c	2011-09-26 20:21:33 +0000
@@ -28,30 +28,32 @@
 #include "applet-cover.h"
 #include "applet-notifications.h"
 
+static void _show_players_list_dialog (void);
+
 
 static void _cd_musicplayer_prev (GtkMenuItem *menu_item, gpointer *data) {
-	myData.pCurrentHandeler->control (PLAYER_PREVIOUS, NULL);
+	myData.pCurrentHandler->control (PLAYER_PREVIOUS, NULL);
 }
 static void _cd_musicplayer_pp (GtkMenuItem *menu_item, gpointer *data) {
-	myData.pCurrentHandeler->control (PLAYER_PLAY_PAUSE, NULL);
+	myData.pCurrentHandler->control (PLAYER_PLAY_PAUSE, NULL);
 }
 static void _cd_musicplayer_stop (GtkMenuItem *menu_item, gpointer *data) {
-	myData.pCurrentHandeler->control (PLAYER_STOP, NULL);
+	myData.pCurrentHandler->control (PLAYER_STOP, NULL);
 }
 static void _cd_musicplayer_next (GtkMenuItem *menu_item, gpointer *data) {
-	myData.pCurrentHandeler->control (PLAYER_NEXT, NULL);
+	myData.pCurrentHandler->control (PLAYER_NEXT, NULL);
 }
 static void _cd_musicplayer_show_from_systray (GtkMenuItem *menu_item, gpointer *data) {
-	cairo_dock_launch_command (myData.pCurrentHandeler->launch);
+	cairo_dock_launch_command (myData.pCurrentHandler->launch);
 }
 static void _cd_musicplayer_jumpbox (GtkMenuItem *menu_item, gpointer *data) {
-	myData.pCurrentHandeler->control (PLAYER_JUMPBOX, NULL);
+	myData.pCurrentHandler->control (PLAYER_JUMPBOX, NULL);
 }
 static void _cd_musicplayer_shuffle (GtkMenuItem *menu_item, gpointer *data) {
-	myData.pCurrentHandeler->control (PLAYER_SHUFFLE, NULL);
+	myData.pCurrentHandler->control (PLAYER_SHUFFLE, NULL);
 }
 static void _cd_musicplayer_repeat (GtkMenuItem *menu_item, gpointer *data) {
-	myData.pCurrentHandeler->control (PLAYER_REPEAT, NULL);
+	myData.pCurrentHandler->control (PLAYER_REPEAT, NULL);
 }
 static void _cd_musicplayer_rate (GtkMenuItem *menu_item, gpointer *data) {
 	/// trouver un moyen esthetique.
@@ -62,13 +64,20 @@
 }
 static void _cd_musicplayer_launch (GtkMenuItem *menu_item, gpointer *data)
 {
-	cairo_dock_launch_command (myData.pCurrentHandeler->launch);
+	cairo_dock_launch_command (myData.pCurrentHandler->launch);
+}
+
+static void _cd_musicplayer_choose_player (GtkMenuItem *menu_item, gpointer *data)
+{
+	CD_APPLET_ENTER;
+	_show_players_list_dialog ();
+	CD_APPLET_LEAVE ();
 }
 
 static void _cd_musicplayer_find_player (GtkMenuItem *menu_item, gpointer *data)
 {
 	CD_APPLET_ENTER;
-	MusicPlayerHandeler *pHandler = cd_musicplayer_dbus_find_opened_player ();
+	MusicPlayerHandler *pHandler = cd_musicplayer_dbus_find_opened_player ();
 	if (pHandler == NULL)
 	{
 		cairo_dock_show_temporary_dialog_with_icon (D_("Sorry, I couldn't detect any player.\nIf it is running, it is maybe because its version is too old and does not offer such service."),
@@ -77,89 +86,161 @@
 			7000,
 			MY_APPLET_SHARE_DATA_DIR"/"MY_APPLET_ICON_FILE);
 	}
-	else if (pHandler != myData.pCurrentHandeler)
+	else if (pHandler != myData.pCurrentHandler)
 	{
-		if (myData.pCurrentHandeler)
+		if (myData.pCurrentHandler != NULL)
 		{
-			cd_musicplayer_stop_handler ();  // libere tout ce qu'occupe notre ancien handler.
-			CD_APPLET_MANAGE_APPLICATION (NULL);
+			cd_musicplayer_stop_current_handler (TRUE);
 		}
-		myData.pCurrentHandeler = pHandler;
-		cd_musicplayer_launch_handler ();
-		if (myConfig.bStealTaskBarIcon)
-			CD_APPLET_MANAGE_APPLICATION (myData.pCurrentHandeler->appclass);
-		
+		
+		// get the name of the running player.
+		const gchar *cPlayerName;
+		if (strcmp (pHandler->name, "Mpris2") == 0)  // generic MPRIS2 handler, use the program name.
+			cPlayerName = pHandler->launch;
+		else
+			cPlayerName = pHandler->name;
+		cd_debug ("found %s (%s)", pHandler->name, cPlayerName);
+		
+		// write it down into our conf file
 		cairo_dock_update_conf_file (CD_APPLET_MY_CONF_FILE,
-			G_TYPE_STRING, "Configuration", "current-player", pHandler->name,
+			G_TYPE_STRING, "Configuration", "current-player", cPlayerName,
 			G_TYPE_INVALID);
+		myConfig.cMusicPlayer = g_strdup (cPlayerName);
+		
+		// set the handler with this value.
+		cd_musicplayer_set_current_handler (myConfig.cMusicPlayer);
 	}
 	CD_APPLET_LEAVE ();
 }
 
+
+static void _choice_dialog_action (int iClickedButton, GtkWidget *pInteractiveWidget, gpointer data, CairoDialog *pDialog)
+{
+	if (iClickedButton == 1 || iClickedButton == -2)  // click on "cancel", or Escape
+		return;
+	// get the value in the widget.
+	GtkWidget *pEntry = gtk_bin_get_child (GTK_BIN (pInteractiveWidget));
+	const gchar *cPlayerName = gtk_entry_get_text (GTK_ENTRY (pEntry));
+	if (cPlayerName == NULL || *cPlayerName == '\0')
+		return;
+	// write it down into our conf file
+	cairo_dock_update_conf_file (myApplet->cConfFilePath,
+		G_TYPE_STRING, "Configuration", "current-player", cPlayerName,
+		G_TYPE_INVALID);
+	myConfig.cMusicPlayer = g_strdup (cPlayerName);
+	// set the handler with this value.
+	cd_musicplayer_set_current_handler (myConfig.cMusicPlayer);
+}
+static void _show_players_list_dialog (void)
+{
+	// build a list of the available groups.
+	GtkWidget *pComboBox = gtk_combo_box_entry_new_text ();
+	GList *h;
+	MusicPlayerHandler *handler;
+	for (h = myData.pHandlers; h != NULL; h = h->next)
+	{
+		handler = h->data;
+		if (handler->cMprisService != NULL)
+			gtk_combo_box_append_text (GTK_COMBO_BOX (pComboBox), handler->name);
+	}
+	GtkTreeModel *pModel = gtk_combo_box_get_model (GTK_COMBO_BOX (pComboBox));
+	if (pModel)
+		gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (pModel), CAIRO_DOCK_MODEL_NAME, GTK_SORT_ASCENDING);
+	/// maybe try to set the dialog color (text and bg colors)...
+
+	// detect a running player and set it as the current choice.
+	MusicPlayerHandler *pRunningHandler = cd_musicplayer_dbus_find_opened_player ();
+	if (pRunningHandler != NULL)
+	{
+		GtkWidget *pEntry = gtk_bin_get_child (GTK_BIN (pComboBox));
+		if (strcmp (pRunningHandler->name, "Mpris2") == 0)  // generic MPRIS2 handler, use the program name.
+			gtk_entry_set_text (GTK_ENTRY (pEntry), pRunningHandler->launch);
+		else
+			gtk_entry_set_text (GTK_ENTRY (pEntry), pRunningHandler->name);
+	}
+
+	// build the dialog.
+	CairoDialogAttribute attr;
+	memset (&attr, 0, sizeof (CairoDialogAttribute));
+	attr.cText = D_("Choose a music player to control");
+	attr.cImageFilePath = NULL;
+	attr.pInteractiveWidget = pComboBox;
+	attr.pActionFunc = (CairoDockActionOnAnswerFunc)_choice_dialog_action;
+	attr.pUserData = NULL;
+	attr.pFreeDataFunc = (GFreeFunc)NULL;
+	const gchar *cButtons[] = {"ok", "cancel", NULL};
+	attr.cButtonsImage = cButtons;
+
+	cairo_dock_build_dialog (&attr, myIcon, myContainer);
+}
+
 //\___________ Define here the action to be taken when the user left-clicks on your icon or on its subdock or your desklet. The icon and the container that were clicked are available through the macros CD_APPLET_CLICKED_ICON and CD_APPLET_CLICKED_CONTAINER. CD_APPLET_CLICKED_ICON may be NULL if the user clicked in the container but out of icons.
 CD_APPLET_ON_CLICK_BEGIN
-	if (CD_APPLET_MY_CONTAINER_IS_OPENGL && myData.numberButtons != 0  && myConfig.bOpenglThemes && myDesklet)
+	if (myData.pCurrentHandler != NULL)
 	{
-		// Actions au clic sur un bouton :
-		if (myData.mouseOnButton1)
+		if (CD_APPLET_MY_CONTAINER_IS_OPENGL && myData.numberButtons != 0  && myConfig.bOpenglThemes && myDesklet)
 		{
-			cd_musicplayer_dbus_detect_player ();  // on teste ici au cas ou l'applet n'aurait pas detecte la fermeture du lecteur.
-			if(myData.bIsRunning)
-			{
-				_cd_musicplayer_pp (NULL, NULL);
-			}
-			else if (myData.pCurrentHandeler->launch != NULL)
-			{
-				cairo_dock_launch_command (myData.pCurrentHandeler->launch);
+			// Actions au clic sur un bouton :
+			if (myData.mouseOnButton1)
+			{
+				if(myData.bIsRunning)
+				{
+					_cd_musicplayer_pp (NULL, NULL);
+				}
+				else if (myData.pCurrentHandler->launch != NULL)
+				{
+					cairo_dock_launch_command (myData.pCurrentHandler->launch);
+				}
+			}
+			else if (myData.mouseOnButton2)
+				_cd_musicplayer_prev (NULL, NULL);
+			else if (myData.mouseOnButton3)
+				_cd_musicplayer_next (NULL, NULL);
+			else if (myData.mouseOnButton4)
+			{
+				if(myData.bIsRunning)
+				{
+					if (myData.pCurrentHandler->iPlayerControls & PLAYER_JUMPBOX)
+						_cd_musicplayer_jumpbox (NULL, NULL);
+					else if (myIcon->Xid != 0)
+						cairo_dock_show_xwindow (myIcon->Xid);
+				}
+				else if (myData.pCurrentHandler->launch != NULL)
+					cairo_dock_launch_command (myData.pCurrentHandler->launch);
+			}
+			else
+			{
+				if(myData.bIsRunning)
+					cd_musicplayer_popup_info ();
+				else if (myData.pCurrentHandler->launch != NULL)
+					cairo_dock_launch_command (myData.pCurrentHandler->launch);
 			}
 		}
-		else if (myData.mouseOnButton2)
-			_cd_musicplayer_prev (NULL, NULL);
-		else if (myData.mouseOnButton3)
-			_cd_musicplayer_next (NULL, NULL);
-		else if (myData.mouseOnButton4)
+		else  // pas de boutons.
 		{
-			cd_musicplayer_dbus_detect_player ();  // on teste ici au cas ou l'applet n'aurait pas detecte la fermeture du lecteur.
 			if(myData.bIsRunning)
 			{
-				if (myData.pCurrentHandeler->iPlayerControls & PLAYER_JUMPBOX)
-					_cd_musicplayer_jumpbox (NULL, NULL);
+				if (myConfig.bPauseOnClick)
+				{
+					_cd_musicplayer_pp (NULL, NULL);
+				}
 				else if (myIcon->Xid != 0)
-					cairo_dock_show_xwindow (myIcon->Xid);
+				{
+					if (myIcon->Xid == cairo_dock_get_current_active_window ())  // la fenetre du lecteur a le focus. en mode desklet ca ne marche pas car il aura pris le focus au moment du clic.
+						cairo_dock_minimize_xwindow (myIcon->Xid);
+					else
+						cairo_dock_show_xwindow (myIcon->Xid);
+				}
+				else if (myData.pCurrentHandler->launch != NULL)
+                              	  cairo_dock_launch_command (myData.pCurrentHandler->launch);
 			}
-			else if (myData.pCurrentHandeler->launch != NULL)
-				cairo_dock_launch_command (myData.pCurrentHandeler->launch);
-		}
-		else
-		{
-			cd_musicplayer_dbus_detect_player ();  // on teste ici au cas ou l'applet n'aurait pas detecte la fermeture du lecteur.
-			if(myData.bIsRunning)
-				cd_musicplayer_popup_info ();
-			else if (myData.pCurrentHandeler->launch != NULL)
-				cairo_dock_launch_command (myData.pCurrentHandeler->launch);
+			else if (myData.pCurrentHandler->launch != NULL)
+				cairo_dock_launch_command (myData.pCurrentHandler->launch);
 		}
 	}
-	else  // pas de boutons.
+	else
 	{
-		cd_musicplayer_dbus_detect_player ();  // on teste ici au cas ou l'applet n'aurait pas detecte la fermeture du lecteur.
-		if(myData.bIsRunning)
-		{
-			if (myConfig.bPauseOnClick)
-			{
-				_cd_musicplayer_pp (NULL, NULL);
-			}
-			else if (myIcon->Xid != 0)
-			{
-				if (myIcon->Xid == cairo_dock_get_current_active_window ())  // la fenetre du lecteur a le focus. en mode desklet ca ne marche pas car il aura pris le focus au moment du clic.
-					cairo_dock_minimize_xwindow (myIcon->Xid);
-				else
-					cairo_dock_show_xwindow (myIcon->Xid);
-			}
-			else if (myData.pCurrentHandeler->launch != NULL)
-                                cairo_dock_launch_command (myData.pCurrentHandeler->launch);
-		}
-		else if (myData.pCurrentHandeler->launch != NULL)
-			cairo_dock_launch_command (myData.pCurrentHandeler->launch);
+		_show_players_list_dialog ();
 	}
 CD_APPLET_ON_CLICK_END
 
@@ -170,30 +251,33 @@
 	if (! myData.bIsRunning)
 	{
 		CD_APPLET_ADD_IN_MENU_WITH_STOCK (D_("Find opened player"), GTK_STOCK_FIND, _cd_musicplayer_find_player, CD_APPLET_MY_MENU);
-		CD_APPLET_ADD_IN_MENU_WITH_STOCK (myData.pCurrentHandeler->name, GTK_STOCK_MEDIA_PLAY, _cd_musicplayer_launch, CD_APPLET_MY_MENU);
+		if (myData.pCurrentHandler != NULL)
+			CD_APPLET_ADD_IN_MENU_WITH_STOCK (myData.pCurrentHandler->name, GTK_STOCK_MEDIA_PLAY, _cd_musicplayer_launch, CD_APPLET_MY_MENU);
+		else
+			CD_APPLET_ADD_IN_MENU_WITH_STOCK (D_("Choose a player"), GTK_STOCK_INDEX, _cd_musicplayer_choose_player, CD_APPLET_MY_MENU);
 		CD_APPLET_ADD_SEPARATOR_IN_MENU (pSubMenu);
 	}
 	else
 	{
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_PREVIOUS)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_PREVIOUS)
 		{
 			gchar *cLabel = g_strdup_printf ("%s (%s)", D_("Previous"), D_("scroll-up"));
 			CD_APPLET_ADD_IN_MENU_WITH_STOCK (cLabel, GTK_STOCK_MEDIA_PREVIOUS, _cd_musicplayer_prev, CD_APPLET_MY_MENU);
 			g_free (cLabel);
 		}
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_PLAY_PAUSE)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_PLAY_PAUSE)
 		{
 			gchar *cLabel = g_strdup_printf ("%s (%s)", D_("Play/Pause"), myConfig.bPauseOnClick ? D_("left-click") : D_("middle-click"));
 			CD_APPLET_ADD_IN_MENU_WITH_STOCK (cLabel, (myData.iPlayingStatus != PLAYER_PLAYING ? GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE), _cd_musicplayer_pp, CD_APPLET_MY_MENU);
 			g_free (cLabel);
 		}
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_NEXT)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_NEXT)
 		{
 			gchar *cLabel = g_strdup_printf ("%s (%s)", D_("Next"), D_("scroll-down"));
 			CD_APPLET_ADD_IN_MENU_WITH_STOCK (cLabel, GTK_STOCK_MEDIA_NEXT, _cd_musicplayer_next, CD_APPLET_MY_MENU);
 			g_free (cLabel);
 		}
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_STOP)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_STOP)
 			CD_APPLET_ADD_IN_MENU_WITH_STOCK (D_("Stop"), GTK_STOCK_MEDIA_STOP, _cd_musicplayer_stop, CD_APPLET_MY_MENU);
 		
 		CD_APPLET_ADD_SEPARATOR_IN_MENU (CD_APPLET_MY_MENU);  // on n'a jamais aucune action, don con met toujours un separateur.
@@ -206,15 +290,15 @@
 		if (pSubMenu == CD_APPLET_MY_MENU)
 			CD_APPLET_ADD_SEPARATOR_IN_MENU (CD_APPLET_MY_MENU);
 		
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_JUMPBOX)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_JUMPBOX)
 			CD_APPLET_ADD_IN_MENU (D_("Show JumpBox"), _cd_musicplayer_jumpbox, pSubMenu);
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_SHUFFLE)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_SHUFFLE)
 			CD_APPLET_ADD_IN_MENU (D_("Toggle Shuffle"), _cd_musicplayer_shuffle, pSubMenu);
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_REPEAT)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_REPEAT)
 			CD_APPLET_ADD_IN_MENU (D_("Toggle Repeat"), _cd_musicplayer_repeat, pSubMenu);
-		if (myData.pCurrentHandeler->iPlayerControls & PLAYER_RATE)
+		if (myData.pCurrentHandler->iPlayerControls & PLAYER_RATE)
 			CD_APPLET_ADD_IN_MENU (D_("Rate this song"), _cd_musicplayer_rate, pSubMenu);
-		if (myData.pCurrentHandeler->iPlayerControls & (PLAYER_REPEAT | PLAYER_SHUFFLE | PLAYER_RATE | PLAYER_JUMPBOX))
+		if (myData.pCurrentHandler->iPlayerControls & (PLAYER_REPEAT | PLAYER_SHUFFLE | PLAYER_RATE | PLAYER_JUMPBOX))
 			CD_APPLET_ADD_SEPARATOR_IN_MENU (pSubMenu);
 	}
 	CD_APPLET_ADD_ABOUT_IN_MENU (pSubMenu);
@@ -222,13 +306,20 @@
 
 
 CD_APPLET_ON_MIDDLE_CLICK_BEGIN
-	if (myConfig.bPauseOnClick)
+	if (myData.pCurrentHandler != NULL)
 	{
-		_cd_musicplayer_next (NULL, NULL);
+		if (myConfig.bPauseOnClick)
+		{
+			_cd_musicplayer_next (NULL, NULL);
+		}
+		else
+		{
+			_cd_musicplayer_pp (NULL, NULL);
+		}
 	}
 	else
 	{
-		_cd_musicplayer_pp (NULL, NULL);
+		_show_players_list_dialog ();
 	}
 CD_APPLET_ON_MIDDLE_CLICK_END
 
@@ -236,66 +327,78 @@
 CD_APPLET_ON_DROP_DATA_BEGIN
 	cd_message (" %s --> nouvelle pochette ou chanson !", CD_APPLET_RECEIVED_DATA);
 	
-	gboolean isJpeg = g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"jpg") 
-		|| g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"JPG")
-		|| g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"jpeg")
-		|| g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"JPEG");
-	
-	if (isJpeg)
+	if (myData.pCurrentHandler != NULL)
 	{
-		if (myData.cArtist != NULL && myData.cAlbum != NULL/* && myData.pCurrentHandeler->cCoverDir != NULL*/)
-		{
-			cd_debug ("MP - Le fichier est un JPEG");
-			gchar *cDirPath = myData.pCurrentHandeler->cCoverDir ? g_strdup (myData.pCurrentHandeler->cCoverDir) : g_strdup_printf("%s/musicplayer", g_cCairoDockDataDir);
-			gchar *cCommand, *cHost = NULL;
-			gchar *cFilePath = (*CD_APPLET_RECEIVED_DATA == '/' ? g_strdup (CD_APPLET_RECEIVED_DATA) : g_filename_from_uri (CD_APPLET_RECEIVED_DATA, &cHost, NULL));
-			if (cHost != NULL)  // fichier distant, on le telecharge dans le cache du lecteur.
-			{
-				cd_debug ("MP - Le fichier est distant (sur %s)", cHost);
-				cCommand = g_strdup_printf ("wget -O \"%s/%s - %s.jpg\" '%s'",
-					cDirPath,
-					myData.cArtist,
-					myData.cAlbum,
-					CD_APPLET_RECEIVED_DATA);
-			}
-			else  // fichier local, on le copie juste dans le cache du lecteur.
-			{
-				cd_debug ("MP - Le fichier est local");
-				cCommand = g_strdup_printf ("cp \"%s\" \"%s/%s - %s.jpg\"",
-					cFilePath,
-					cDirPath,
-					myData.cArtist,
-					myData.cAlbum);
-				
-			}
-			cd_debug ("MP - on recupere la pochette par : '%s'", cCommand);
-			cairo_dock_launch_command (cCommand);
-			g_free (cCommand);
-			g_free (cFilePath);
-			g_free (cHost);
-			g_free (cDirPath);
-			
-			cd_musicplayer_get_cover_path (NULL, TRUE);
-			cd_musicplayer_update_icon (FALSE);
+			gboolean isJpeg = g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"jpg") 
+			|| g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"JPG")
+			|| g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"jpeg")
+			|| g_str_has_suffix(CD_APPLET_RECEIVED_DATA,"JPEG");
+
+		if (isJpeg)
+		{
+			if (myData.cArtist != NULL && myData.cAlbum != NULL/* && myData.pCurrentHandler->cCoverDir != NULL*/)
+			{
+				cd_debug ("MP - Le fichier est un JPEG");
+				gchar *cDirPath = myData.pCurrentHandler->cCoverDir ? g_strdup (myData.pCurrentHandler->cCoverDir) : g_strdup_printf("%s/musicplayer", g_cCairoDockDataDir);
+				gchar *cCommand, *cHost = NULL;
+				gchar *cFilePath = (*CD_APPLET_RECEIVED_DATA == '/' ? g_strdup (CD_APPLET_RECEIVED_DATA) : g_filename_from_uri (CD_APPLET_RECEIVED_DATA, &cHost, NULL));
+				if (cHost != NULL)  // fichier distant, on le telecharge dans le cache du lecteur.
+				{
+					cd_debug ("MP - Le fichier est distant (sur %s)", cHost);
+					cCommand = g_strdup_printf ("wget -O \"%s/%s - %s.jpg\" '%s'",
+						cDirPath,
+						myData.cArtist,
+						myData.cAlbum,
+						CD_APPLET_RECEIVED_DATA);
+				}
+				else  // fichier local, on le copie juste dans le cache du lecteur.
+				{
+					cd_debug ("MP - Le fichier est local");
+					cCommand = g_strdup_printf ("cp \"%s\" \"%s/%s - %s.jpg\"",
+						cFilePath,
+						cDirPath,
+						myData.cArtist,
+						myData.cAlbum);
+
+				}
+				cd_debug ("MP - on recupere la pochette par : '%s'", cCommand);
+				cairo_dock_launch_command (cCommand);
+				g_free (cCommand);
+				g_free (cFilePath);
+				g_free (cHost);
+				g_free (cDirPath);
+
+				cd_musicplayer_get_cover_path (NULL, TRUE);
+				cd_musicplayer_update_icon (FALSE);
+			}
+		}
+		else
+		{
+			cd_debug ("MP - on rajoute la chanson a la queue.");
+			myData.pCurrentHandler->control (PLAYER_ENQUEUE, CD_APPLET_RECEIVED_DATA);
 		}
 	}
 	else
 	{
-		cd_debug ("MP - on rajoute la chanson a la queue.");
-		myData.pCurrentHandeler->control (PLAYER_ENQUEUE, CD_APPLET_RECEIVED_DATA);
+		_show_players_list_dialog ();
 	}
 CD_APPLET_ON_DROP_DATA_END
 
 
 CD_APPLET_ON_SCROLL_BEGIN
-	if (CD_APPLET_SCROLL_DOWN) {
-  		_cd_musicplayer_next (NULL, NULL);
-	}
-	else if (CD_APPLET_SCROLL_UP) {
-  		_cd_musicplayer_prev (NULL, NULL);
+	if (myData.pCurrentHandler != NULL)
+	{
+		if (CD_APPLET_SCROLL_DOWN) {
+  			_cd_musicplayer_next (NULL, NULL);
+		}
+		else if (CD_APPLET_SCROLL_UP) {
+  			_cd_musicplayer_prev (NULL, NULL);
+		}
 	}
 	else
-  		CD_APPLET_LEAVE (CAIRO_DOCK_LET_PASS_NOTIFICATION);
+	{
+		_show_players_list_dialog ();
+	}
 CD_APPLET_ON_SCROLL_END
 
 
@@ -351,5 +454,4 @@
 		*bStartAnimation = TRUE;  // ca c'est pour faire une animation de transition...
 	}
 	CD_APPLET_LEAVE (CAIRO_DOCK_LET_PASS_NOTIFICATION);
-	//return CAIRO_DOCK_LET_PASS_NOTIFICATION;
 }

=== modified file 'musicPlayer/src/applet-qmmp.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-qmmp.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-qmmp.c	2011-09-26 20:21:33 +0000
@@ -33,11 +33,10 @@
  */
 void cd_musicplayer_register_qmmp_handler (void)
 {
-	MusicPlayerHandeler *pQmmp = cd_mpris_new_handler ();
-	pQmmp->cMprisService = "org.mpris.qmmp";
-	pQmmp->appclass = "qmmp";  // les classes sont passees en minuscule par le dock.
-	pQmmp->launch = "qmmp";
-	pQmmp->name = "Qmmp";
-	pQmmp->iPlayer = MP_QMMP;
-	cd_musicplayer_register_my_handler (pQmmp, "Qmmp");
+	MusicPlayerHandler *pHandler = cd_mpris_new_handler ();
+	pHandler->cMprisService = "org.mpris.qmmp";
+	pHandler->appclass = "qmmp";  // les classes sont passees en minuscule par le dock.
+	pHandler->launch = "qmmp";
+	pHandler->name = "Qmmp";
+	cd_musicplayer_register_my_handler (pHandler);
 }

=== modified file 'musicPlayer/src/applet-quodlibet.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-quodlibet.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-quodlibet.c	2011-09-26 20:21:33 +0000
@@ -92,7 +92,7 @@
 
 /* Renvoie le temps ecoule en secondes.
  */
-gint64 cairo_dock_dbus_get_integer64 (DBusGProxy *pDbusProxy, const gchar *cAccessor)
+static gint64 cairo_dock_dbus_get_integer64 (DBusGProxy *pDbusProxy, const gchar *cAccessor)
 {
 	GError *erreur = NULL;
 	gint64 iValue = 0;
@@ -167,7 +167,7 @@
 	cd_musicplayer_get_cover_path (NULL, TRUE);
 }
 
-void cd_quodlibet_getSongInfos (void)
+static void cd_quodlibet_getSongInfos (void)
 {
 	GHashTable *data_list = NULL;
 	
@@ -205,7 +205,7 @@
 // Les callbacks des signaux DBus. //
 /////////////////////////////////////
 
-/* Fonction executée à chaque changement de musique.
+/* Fonction executee à chaque changement de musique.
  */
 static void onChangeSong(DBusGProxy *player_proxy, GHashTable *metadata, gpointer data)
 {
@@ -215,7 +215,6 @@
 	if (metadata != NULL)
 	{
 		_extract_metadata (metadata);
-		myData.bIsRunning = TRUE;
 	}
 	else
 	{
@@ -232,20 +231,17 @@
 		myData.iSongLength = 0;
 		myData.iTrackNumber = 0;
 		myData.cover_exist = FALSE;
-		
-		cd_musicplayer_dbus_detect_player ();
 	}
 	cd_musicplayer_update_icon (TRUE);
 	CD_APPLET_LEAVE ();
 }
 
-/* Fonction executée à chaque changement "paused".
+/* Fonction executee à chaque changement "paused".
  */
-static void onChangePlaying (DBusGProxy *player_proxy, gpointer data)  // paused
+static void on_pause (DBusGProxy *player_proxy, gpointer data)  // paused
 {
 	CD_APPLET_ENTER;
 	cd_debug ("MP : %s ()\n", __func__);
-	myData.bIsRunning = TRUE;
 	
 	myData.iPlayingStatus = PLAYER_PAUSED;
 	
@@ -266,13 +262,12 @@
 	}
 	CD_APPLET_LEAVE ();
 }
-/* Fonction executée à chaque changement "unpaused".
+/* Fonction executee à chaque changement "unpaused".
  */
-static void onChangePlaying2 (DBusGProxy *player_proxy, gpointer data)  // unpaused
+static void on_unpaused (DBusGProxy *player_proxy, gpointer data)  // unpaused
 {
 	CD_APPLET_ENTER;
 	cd_debug ("MP : %s ()\n", __func__);
-	myData.bIsRunning = TRUE;
 	
 	myData.iPlayingStatus = PLAYER_PLAYING;
 	
@@ -292,57 +287,9 @@
 // Definition du backend. //
 ////////////////////////////
 
-/* Fonction de connexion au bus de QL.
- */
-static gboolean _cd_quodlibet_dbus_connect_to_bus (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		myData.dbus_enable = cd_musicplayer_dbus_connect_to_bus (); // cree le proxy.
-
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "paused",
-			G_TYPE_INVALID);
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "paused",
-			G_CALLBACK(onChangePlaying), NULL, NULL);
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "unpaused",
-			G_TYPE_NONE,
-			G_TYPE_INVALID);  // idem.
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "unpaused",
-			G_CALLBACK(onChangePlaying2), NULL, NULL);
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "song-started",
-			QL_DBUS_TYPE_SONG_METADATA,
-			G_TYPE_INVALID);
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "song-started",
-			G_CALLBACK(onChangeSong), NULL, NULL);
-		
-		return TRUE;
-	}
-	return FALSE;
-}
-
-/* Permet de libérer la mémoire prise par le backend.
- */
-void cd_quodlibet_free_data (void)
-{
-	if (myData.dbus_proxy_player != NULL)
-	{
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "paused",
-			G_CALLBACK(onChangePlaying), NULL);
-		
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "unpaused",
-			G_CALLBACK(onChangePlaying2), NULL);
-				
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "song-started",
-			G_CALLBACK(onChangeSong), NULL);
-	}
-	musicplayer_dbus_disconnect_from_bus();
-}
-
 /* Controle du lecteur
  */
-void cd_quodlibet_control (MyPlayerControl pControl, const char* song)
+static void cd_quodlibet_control (MyPlayerControl pControl, const char* song)
 {
 	const gchar *cCommand = NULL;
 		
@@ -366,64 +313,51 @@
 	
 	if (cCommand != NULL)
 	{
-		cd_debug ("MP : Handeler QuodLibet : will use '%s'", cCommand);
+		cd_debug ("MP : Handler QuodLibet : will use '%s'", cCommand);
 		cairo_dock_dbus_call (myData.dbus_proxy_player, cCommand);
 	}
 }
 
 /* Recupere le temps ecoule chaque seconde (pas de signal pour ca).
  */
-static void cd_quodlibet_read_data (void)
+static void cd_quodlibet_get_data (void)
 {
-	if (myData.dbus_enable)
+	if (myData.iPlayingStatus == PLAYER_PLAYING)
 	{
-		if (myData.bIsRunning)
-		{
-			if (myData.iPlayingStatus == PLAYER_PLAYING)
-			{
-				_quodlibet_get_time_elapsed ();
-				if (myData.iCurrentTime < 0)
-					myData.iPlayingStatus = PLAYER_STOPPED;
-			}
-			else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
-				myData.iCurrentTime = 0;
-		}
-		else 
-		{
-			myData.iCurrentTime = 0;
-		}
-		cd_message (" myData.iCurrentTime <- %d", __func__, myData.iCurrentTime);
+		_quodlibet_get_time_elapsed ();
+		if (myData.iCurrentTime < 0)
+			myData.iPlayingStatus = PLAYER_STOPPED;
 	}
+	else if (myData.iPlayingStatus != PLAYER_PAUSED)  // en pause le temps reste constant.
+		myData.iCurrentTime = 0;
 }
 
 /* Initialise le backend de QL.
  */
-static void cd_quodlibet_configure (void)
+static void cd_quodlibet_start (void)
 {
-	myData.DBus_commands.service = "net.sacredchao.QuodLibet";
-	myData.DBus_commands.path = "/net/sacredchao/QuodLibet";
-	myData.DBus_commands.interface = "net.sacredchao.QuodLibet";
+	// register to the signals
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "paused",
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "paused",
+		G_CALLBACK(on_pause), NULL, NULL);
+
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "unpaused",
+		G_TYPE_NONE,
+		G_TYPE_INVALID);  // idem.
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "unpaused",
+		G_CALLBACK(on_unpaused), NULL, NULL);
+
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "song-started",
+		QL_DBUS_TYPE_SONG_METADATA,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "song-started",
+		G_CALLBACK(onChangeSong), NULL, NULL);
 	
-	myData.dbus_enable = _cd_quodlibet_dbus_connect_to_bus ();  // se connecte au bus et aux signaux de QL.
-	if (myData.dbus_enable)
-	{
-		cd_musicplayer_dbus_detect_player ();  // on teste la presence de QL sur le bus <=> s'il est ouvert ou pas.
-		if(myData.bIsRunning)  // player en cours d'execution, on recupere son etat.
-		{
-			cd_debug ("MP : QL is running\n");
-			_quodlibet_getPlaying ();
-			cd_quodlibet_getSongInfos ();
-			cd_musicplayer_update_icon (TRUE);
-		}
-		else  // player eteint.
-		{
-			cd_musicplayer_set_surface (PLAYER_NONE);
-		}
-	}
-	else  // sinon on signale par l'icone appropriee que le bus n'est pas accessible.
-	{
-		cd_musicplayer_set_surface (PLAYER_BROKEN);
-	}
+	// get the current state.
+	_quodlibet_getPlaying ();
+	cd_quodlibet_getSongInfos ();
+	cd_musicplayer_update_icon (TRUE);
 }
 
 
@@ -431,21 +365,25 @@
  */
 void cd_musicplayer_register_quodlibet_handler (void)
 {
-	MusicPlayerHandeler *pQuodlibet = g_new0 (MusicPlayerHandeler, 1);
-	pQuodlibet->read_data = cd_quodlibet_read_data;
-	pQuodlibet->free_data = cd_quodlibet_free_data;
-	pQuodlibet->configure = cd_quodlibet_configure;  // renseigne les proprietes DBus et se connecte au bus.
-	pQuodlibet->control = cd_quodlibet_control;
-	pQuodlibet->get_cover = NULL;
-	pQuodlibet->cCoverDir = NULL;  /// il me semble que QL gere les pochettes ...
-	
-	pQuodlibet->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT;
-	pQuodlibet->appclass = "quodlibet";
-	pQuodlibet->launch = "quodlibet";
-	pQuodlibet->name = "QuodLibet";
-	pQuodlibet->cMprisService = "net.sacredchao.QuodLibet";
-	pQuodlibet->iPlayer = MP_QUODLIBET;
-	pQuodlibet->bSeparateAcquisition = FALSE;
-	pQuodlibet->iLevel = PLAYER_GOOD;  // n'a besoin d'une boucle que pour afficher le temps ecoule.
-	cd_musicplayer_register_my_handler (pQuodlibet, "QuodLibet");
+	MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+	pHandler->name = "QuodLibet";
+	pHandler->get_data = cd_quodlibet_get_data;
+	pHandler->stop = NULL;
+	pHandler->start = cd_quodlibet_start;
+	pHandler->control = cd_quodlibet_control;
+	pHandler->get_cover = NULL;
+	pHandler->cCoverDir = NULL;  /// il me semble que QL gere les pochettes ...
+	
+	pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT;
+	pHandler->appclass = "quodlibet";
+	pHandler->launch = "quodlibet";
+	pHandler->cMprisService = "net.sacredchao.QuodLibet";
+	pHandler->path = "/net/sacredchao/QuodLibet";
+	pHandler->interface = "net.sacredchao.QuodLibet";
+	pHandler->path2 = NULL;
+	pHandler->interface2 = NULL;
+	
+	pHandler->bSeparateAcquisition = FALSE;
+	pHandler->iLevel = PLAYER_GOOD;  // n'a besoin d'une boucle que pour afficher le temps ecoule.
+	cd_musicplayer_register_my_handler (pHandler);
 }

=== modified file 'musicPlayer/src/applet-rhythmbox.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-rhythmbox.c	2011-08-09 18:08:08 +0000
+++ musicPlayer/src/applet-rhythmbox.c	2011-09-26 20:21:33 +0000
@@ -28,6 +28,7 @@
 #include "applet-dbus.h"
 #include "applet-draw.h"
 #include "applet-cover.h"
+#include "applet-mpris.h"
 #include "applet-rhythmbox.h"
 
 /////////////////////////////////
@@ -129,7 +130,7 @@
 // Les callbacks des signaux DBus. //
 /////////////////////////////////////
 
-/* Fonction executée à chaque changement de musique.
+/* Fonction executee a chaque changement de musique.
  */
 static void onChangeSong(DBusGProxy *player_proxy,const gchar *uri, gpointer data)
 {
@@ -140,7 +141,6 @@
 	if(uri != NULL && *uri != '\0')
 	{
 		myData.cPlayingUri = g_strdup (uri);
-		myData.bIsRunning = TRUE;
 		cd_rhythmbox_getSongInfos (TRUE);  // TRUE <=> get all
 	}
 	else
@@ -158,14 +158,12 @@
 		myData.cCoverPath = NULL;
 		myData.iSongLength = 0;
 		myData.iTrackNumber = 0;
-		
-		cd_musicplayer_dbus_detect_player ();
 	}
 	cd_musicplayer_update_icon (TRUE);
 	CD_APPLET_LEAVE ();
 }
 
-/* Fonction executée à chaque changement play/pause
+/* Fonction executee a chaque changement play/pause
  */
 static void onChangePlaying(DBusGProxy *player_proxy, gboolean playing, gpointer data)
 {
@@ -187,7 +185,7 @@
 }
 
 
-/* Fonction executée à chaque changement de temps joué
+/* Fonction executee a chaque changement de temps joué
  */
 static void onElapsedChanged (DBusGProxy *player_proxy, int elapsed, gpointer data)
 {
@@ -239,76 +237,6 @@
 // Definition du backend. //
 ////////////////////////////
 
-/* Fonction de connexion au bus de rhythmbox.
- */
-gboolean cd_rhythmbox_dbus_connect_to_bus (void)
-{
-	if (cairo_dock_dbus_is_enabled ())
-	{
-		myData.dbus_enable = cd_musicplayer_dbus_connect_to_bus (); // cree le proxy.
-		
-		myData.dbus_enable_shell = musicplayer_dbus_connect_to_bus_Shell ();  // cree le proxy pour la 2eme interface car RB en a 2.
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "playingChanged",
-			G_TYPE_BOOLEAN,
-			G_TYPE_INVALID);
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "playingUriChanged",
-			G_TYPE_STRING,
-			G_TYPE_INVALID);
-		
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "elapsedChanged",
-			G_TYPE_UINT,
-			G_TYPE_INVALID);
-		
-		/*TODO
-		dbus_g_proxy_add_signal(myData.dbus_proxy_player, "playingSongPropertyChanged",
-			G_TYPE_STRING,
-			G_TYPE_STRING,
-			G_TYPE_VALUE,
-			G_TYPE_VALUE,
-			G_TYPE_INVALID);*/
-		
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "playingChanged",
-			G_CALLBACK(onChangePlaying), NULL, NULL);
-			
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "playingUriChanged",
-			G_CALLBACK(onChangeSong), NULL, NULL);
-		
-		dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "elapsedChanged",
-			G_CALLBACK(onElapsedChanged), NULL, NULL);
-		
-		/*dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "playingSongPropertyChanged",
-			G_CALLBACK(onSongPropertyChanged), NULL, NULL);*/
-		
-		return TRUE;
-	}
-	return FALSE;
-}
-
-/* Permet de libérer la mémoire prise par notre controleur
- */
-void cd_rhythmbox_free_data (void) {
-	if (myData.dbus_proxy_player != NULL)
-	{
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "playingChanged",
-			G_CALLBACK(onChangePlaying), NULL);
-		
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "playingUriChanged",
-			G_CALLBACK(onChangeSong), NULL);
-		
-		dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "elapsedChanged",
-			G_CALLBACK(onElapsedChanged), NULL);
-		
-		/*dbus_g_proxy_disconnect_signal(myData.dbus_proxy_player, "playingSongPropertyChanged",
-			G_CALLBACK(onSongPropertyChanged), NULL);*/
-	}
-	
-	musicplayer_dbus_disconnect_from_bus();
-	musicplayer_dbus_disconnect_from_bus_Shell();
-}
-
-
 /* Controle du lecteur (permet d'effectuer les actions de bases sur le lecteur)
  */
 void cd_rhythmbox_control (MyPlayerControl pControl, const char* song)
@@ -318,15 +246,15 @@
 		
 	switch (pControl) {
 		case PLAYER_PREVIOUS :
-			cCommand = myData.DBus_commands.previous;  // ou bien rhythmbox-client --previous
+			cCommand = "previous";  // ou bien rhythmbox-client --previous
 		break;
 		
 		case PLAYER_PLAY_PAUSE :
-			cCommand = myData.DBus_commands.play;  // ou bien rhythmbox-client --pause/--play
+			cCommand = "playPause";  // ou bien rhythmbox-client --pause/--play
 		break;
 
 		case PLAYER_NEXT :
-			cCommand = myData.DBus_commands.next;  // ou bien rhythmbox-client --next
+			cCommand = "next";  // ou bien rhythmbox-client --next
 		break;
 		
 		case PLAYER_ENQUEUE :
@@ -364,64 +292,97 @@
 
 /* Initialise le backend de RB.
  */
-void cd_rhythmbox_configure (void)
-{
-	cd_debug ("");
-	myData.DBus_commands.service = "org.gnome.Rhythmbox";
-	myData.DBus_commands.path = "/org/gnome/Rhythmbox/Player";
-	myData.DBus_commands.path2 = "/org/gnome/Rhythmbox/Shell";
-	myData.DBus_commands.interface = "org.gnome.Rhythmbox.Player";
-	myData.DBus_commands.interface2 = "org.gnome.Rhythmbox.Shell";
-	myData.DBus_commands.play = "playPause";
-	myData.DBus_commands.pause = "playPause";
-	myData.DBus_commands.stop = "";
-	myData.DBus_commands.next = "next";
-	myData.DBus_commands.previous = "previous";
-	
-	myData.dbus_enable = cd_rhythmbox_dbus_connect_to_bus ();  // se connecte au bus et aux signaux de RB.
-	if (myData.dbus_enable)
-	{
-		cd_musicplayer_dbus_detect_player ();  // on teste la presence de RB sur le bus <=> s'il est ouvert ou pas.
-		if(myData.bIsRunning)  // player en cours d'execution, on recupere son etat.
-		{
-			cd_debug ("MP : RB is running");
-			_rhythmbox_getPlaying();
-			_rhythmbox_getPlayingUri();
-			cd_rhythmbox_getSongInfos (TRUE);  // TRUE <=> get all
-			cd_musicplayer_update_icon (TRUE);
-		}
-		else  // player eteint.
-		{
-			cd_musicplayer_set_surface (PLAYER_NONE);
-		}
-	}
-	else  // sinon on signale par l'icone appropriee que le bus n'est pas accessible.
-	{
-		cd_musicplayer_set_surface (PLAYER_BROKEN);
-	}
+static void cd_rhythmbox_start (void)
+{
+	// register to the signals
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "playingChanged",
+		G_TYPE_BOOLEAN,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "playingChanged",
+		G_CALLBACK(onChangePlaying), NULL, NULL);
+	
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "playingUriChanged",
+		G_TYPE_STRING,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "playingUriChanged",
+		G_CALLBACK(onChangeSong), NULL, NULL);
+	
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "elapsedChanged",
+		G_TYPE_UINT,
+		G_TYPE_INVALID);
+	dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "elapsedChanged",
+		G_CALLBACK(onElapsedChanged), NULL, NULL);
+	
+	/*TODO (or maybe not, if they included MPRIS2)
+	dbus_g_proxy_add_signal(myData.dbus_proxy_player, "playingSongPropertyChanged",
+		G_TYPE_STRING,
+		G_TYPE_STRING,
+		G_TYPE_VALUE,
+		G_TYPE_VALUE,
+		G_TYPE_INVALID);
+	/*dbus_g_proxy_connect_signal(myData.dbus_proxy_player, "playingSongPropertyChanged",
+		G_CALLBACK(onSongPropertyChanged), NULL, NULL);*/
+	
+	// get the current state.
+	_rhythmbox_getPlaying();
+	_rhythmbox_getPlayingUri();
+	cd_rhythmbox_getSongInfos (TRUE);  // TRUE <=> get all
+	cd_musicplayer_update_icon (TRUE);
+}
+
+/*
+ * We can't test if a bus is available because the dock is launched after.
+ * Or we have to connect to a bus before and react if there is something after...
+ *  but it's a bit annoying because we have to register the handler and then disable it (e.g. MPRIS vs MPRIS2)!
+ * But with the version 2.90 of RB, we have to use MPRIS2 because rhythmbox-client is unavailable.
+ */
+static gboolean _is_MPRIS2_available (void)
+{
+	gchar *cResult = cairo_dock_launch_command_sync ("which rhythmbox-client");
+	gboolean bResult = ! (cResult != NULL && *cResult == '/');
+	g_free (cResult);
+	return bResult;
 }
 
 /* On enregistre notre lecteur.
  */
 void cd_musicplayer_register_rhythmbox_handler (void)
 {
-	cd_debug ("");
-	MusicPlayerHandeler *pRhythmbox = g_new0 (MusicPlayerHandeler, 1);
-	pRhythmbox->read_data = NULL;  // rien a faire vu que l'echange de donnees se fait entierement avec les proxys DBus.
-	pRhythmbox->free_data = cd_rhythmbox_free_data;
-	pRhythmbox->configure = cd_rhythmbox_configure;  // renseigne les proprietes DBus et se connecte au bus.
-	pRhythmbox->control = cd_rhythmbox_control;
-	pRhythmbox->get_cover = cd_rhythmbox_get_cover_path;
-	
-	pRhythmbox->appclass = "rhythmbox";
-	pRhythmbox->name = "Rhythmbox";
-	pRhythmbox->launch = "rhythmbox";
-	pRhythmbox->cMprisService = "org.gnome.Rhythmbox";
-	pRhythmbox->cCoverDir = g_strdup_printf ("%s/.cache/rhythmbox/covers", g_getenv ("HOME"));
-	pRhythmbox->iPlayer = MP_RHYTHMBOX;
-	pRhythmbox->bSeparateAcquisition = FALSE;
-	pRhythmbox->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_ENQUEUE;
-	pRhythmbox->iLevel = PLAYER_EXCELLENT;
-	
-	cd_musicplayer_register_my_handler(pRhythmbox, "rhythmbox");
+	if (_is_MPRIS2_available ())
+	{
+		cd_debug ("MP - MPRIS2 for RB seems to be available");
+		MusicPlayerHandler *pHandler = cd_mpris_new_handler ();
+		pHandler->cMprisService = "org.mpris.MediaPlayer2.rhythmbox";
+		pHandler->appclass = "rhythmbox";
+		pHandler->launch = "rhythmbox";
+		pHandler->name = "Rhythmbox";
+		cd_musicplayer_register_my_handler (pHandler);
+		myData.bForceCoverNeedsTest = TRUE; // it seems RB copy the cover on its cache but it takes a few time...
+	}
+	else
+	{
+		cd_debug ("MP - Used RB DBus methods");
+		MusicPlayerHandler *pHandler = g_new0 (MusicPlayerHandler, 1);
+		pHandler->name = "Rhythmbox";
+		pHandler->get_data = NULL;  // rien a faire vu que l'echange de donnees se fait entierement avec les proxys DBus.
+		pHandler->stop = NULL;  // signals are disconnected when the proxy is destroyed.
+		pHandler->start = cd_rhythmbox_start;  // renseigne les proprietes DBus et se connecte au bus.
+		pHandler->control = cd_rhythmbox_control;
+		pHandler->get_cover = cd_rhythmbox_get_cover_path;
+		
+		pHandler->appclass = "rhythmbox";
+		pHandler->launch = "rhythmbox";
+		pHandler->cMprisService = "org.gnome.Rhythmbox";
+		pHandler->path = "/org/gnome/Rhythmbox/Player";
+		pHandler->interface = "org.gnome.Rhythmbox.Player";
+		pHandler->path2 = "/org/gnome/Rhythmbox/Shell";
+		pHandler->interface2 = "org.gnome.Rhythmbox.Shell";
+		
+		pHandler->cCoverDir = g_strdup_printf ("%s/.cache/rhythmbox/covers", g_getenv ("HOME"));
+		pHandler->bSeparateAcquisition = FALSE;
+		pHandler->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_ENQUEUE;
+		pHandler->iLevel = PLAYER_EXCELLENT;
+		
+		cd_musicplayer_register_my_handler(pHandler);
+	}
 }

=== modified file 'musicPlayer/src/applet-songbird.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-songbird.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-songbird.c	2011-09-26 20:21:33 +0000
@@ -27,13 +27,13 @@
 #include "applet-mpris.h"
 #include "applet-songbird.h"
 
-void cd_musicplayer_register_songbird_handler (void) { //On enregistre notre lecteur
-	MusicPlayerHandeler *pSongbird = cd_mpris_new_handler ();
-	pSongbird->cMprisService = "org.mpris.songbird";
-	pSongbird->appclass = "songbird";
-	pSongbird->launch = "songbird-bin";
-	pSongbird->name = "Songbird";
- 	pSongbird->iPlayer = MP_SONGBIRD;
-	pSongbird->name = "Songbird";
-	cd_musicplayer_register_my_handler (pSongbird, "Songbird");
+void cd_musicplayer_register_songbird_handler (void)
+{
+	MusicPlayerHandler *pHandler = cd_mpris_new_handler ();
+	pHandler->cMprisService = "org.mpris.songbird";
+	pHandler->appclass = "songbird";
+	pHandler->launch = "songbird-bin";
+	pHandler->name = "Songbird";
+	pHandler->name = "Songbird";
+	cd_musicplayer_register_my_handler (pHandler);
 }

=== modified file 'musicPlayer/src/applet-struct.h'
--- musicPlayer/src/applet-struct.h	2010-09-07 02:38:17 +0000
+++ musicPlayer/src/applet-struct.h	2011-09-26 20:21:33 +0000
@@ -17,34 +17,13 @@
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-
 #ifndef __CD_APPLET_STRUCT__
 #define  __CD_APPLET_STRUCT__
 
 #include <cairo-dock.h>
 
 //Canvas
-typedef struct _MusicPlayerHandeler MusicPlayerHandeler;
-
-// Players supportes
-typedef enum {
-	MP_RHYTHMBOX=0,
-	MP_AMAROK2,
-	MP_EXAILE,
-	MP_EXAILE3,
-	MP_LISTEN,
-	MP_SONGBIRD,
-	MP_QMMP,
-	MP_GMUSICBROWSER,
-	MP_GUAYADEQUE,
-	MP_CLEMENTINE,
-	MP_QUODLIBET,
-	MP_BANSHEE,
-	MP_AUDACIOUS,
-	MP_XMMS2,
-	MP_XMMS,
-	MB_NB_PLAYERS
-} MySupportedPlayers;
+typedef struct _MusicPlayerHandler MusicPlayerHandler;
 
 typedef enum {
 	PLAYER_NONE = 0,
@@ -76,46 +55,27 @@
 
 
 typedef void (*MusicPlayerGetDataFunc) (void);  // acquisition des donnees, threade.
-typedef void (*MusicPlayerFreeDataFunc) (void);  // libere les ressources specifiques au backend (deconnexion des signaux, etc)
-typedef void (*MusicPlayerConfigureFunc) (void);  // initialise le backend (connexion des signaux, etc)
+typedef void (*MusicPlayerStopFunc) (void);  // libere les ressources specifiques au backend (deconnexion des signaux, etc)
+typedef void (*MusicPlayerStartFunc) (void);  // initialise le backend (connexion des signaux, etc)
 typedef void (*MusicPlayerControlerFunc) (MyPlayerControl pControl, const gchar *cFile);  // controle du lecteur (play/pause/next/etc)
 typedef void (*MusicPlayerGetCoverFunc) (void);  // pour les lecteurs buggues, recupere la couverture. Renseigner ce champ fera que si le lecteur n'a pas renvoye de couverture au changement de chanson, on retentera 2 secondes plus tard avec cette fonction.
 
-//A remplir lors du configure pour les players utilisant DBus.
-typedef struct {
-	const gchar *service;
-	const gchar *path;
+struct _MusicPlayerHandler {
+	const gchar *name;  // nom du backend.
+	MusicPlayerGetDataFunc 		get_data;
+	MusicPlayerStopFunc 		stop;
+	MusicPlayerStartFunc		start;
+	MusicPlayerControlerFunc	control;
+	MusicPlayerGetCoverFunc		get_cover;
+	const gchar *cMprisService;  // old Dbus service name
+	const gchar *path;  // Player object
 	const gchar *interface;
-	const gchar *path2;
+	const gchar *path2;  // TrackList object.
 	const gchar *interface2;
-	const gchar *play;
-	const gchar *pause;
-	const gchar *play_pause;
-	const gchar *stop;
-	const gchar *next;
-	const gchar *previous;
-	const gchar *get_status;
-	const gchar *get_title;
-	const gchar *get_artist;
-	const gchar *get_album;
-	const gchar *get_cover_path;
-	const gchar *duration;
-	const gchar *current_position;
-} MusicPlayerDBus;
-
-struct _MusicPlayerHandeler {
-	MusicPlayerGetDataFunc 			read_data;
-	MusicPlayerFreeDataFunc 		free_data;
-	MusicPlayerConfigureFunc		configure;
-	MusicPlayerControlerFunc		control;
-	MusicPlayerGetCoverFunc			get_cover;
-	const gchar *cMprisService;  // nom du service DBus si le lecteur respecte la norme MPRIS.
 	const gchar *appclass;  // classe de l'appli.
-	const gchar *name;  // nom du backend.
 	const gchar *launch;  // commande lancant le lecteur.
 	gchar *cCoverDir;  // repertoire utilisateur de l'appli, contenant les couvertures.
-	gboolean bSeparateAcquisition;  // Sert a activer le thread ou pas (TRUE = activé; False = désactivé)
-	MySupportedPlayers iPlayer;  // ID du backend.
+	gboolean bSeparateAcquisition;  // Sert a activer le thread ou pas (TRUE = active; False = desactive)
 	MyPlayerControl iPlayerControls;  // un masque "OU" de MyPlayerControl.
 	MyLevel iLevel;
 };
@@ -134,6 +94,9 @@
 
 #define MP_DBUS_TYPE_SONG_METADATA (dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE))
 
+#define CD_MPRIS2_SERVICE_BASE "org.mpris.MediaPlayer2"
+#define CD_MPRIS2_OBJ /org/mpris/MediaPlayer2
+#define CD_MPRIS2_MAIN_IFACE org.mpris.MediaPlayer2
 
 struct _AppletConfig {
 	gboolean bEnableDialogs;
@@ -156,10 +119,11 @@
 };
 
 struct _AppletData {
-	//Pointeurs du canvas
+	// general
 	CairoDockTask *pTask;
-	GList *pHandelers;
-	MusicPlayerHandeler *pCurrentHandeler;
+	GList *pHandlers;
+	MusicPlayerHandler *pCurrentHandler;
+	gchar *cMpris2Service;  // MPRIS2 service associated with the current handler.
 	
 	//Informations essentielles
 	DBusGProxy *dbus_proxy_player;
@@ -169,6 +133,7 @@
 	gchar *cArtist;
 	gchar *cAlbum;
 	gchar* cPlayingUri;
+	gchar* cTrackID;
 	MyPlayerStatus iPlayingStatus, pPreviousPlayingStatus;
 	gint iTrackNumber, iPreviousTrackNumber;  // track number = position dans la play-list, et non pas numero de piste dans l'album (qui ne nous interesse pas).
 	gint iCurrentTime, iPreviousCurrentTime, iGetTimeFailed;
@@ -178,13 +143,10 @@
 	gint iTrackListIndex;
 	
 	// Pour les lecteurs utilisant DBus
-	MusicPlayerDBus DBus_commands;
-	gboolean dbus_enable;
-	gboolean dbus_enable_shell;
 	gboolean bIsRunning;
 	DBusGProxyCall *pDetectPlayerCall;
 	
-	//Données de dessin
+	//Donnees de dessin
 	cairo_surface_t *pSurfaces[PLAYER_NB_STATUS];
 	cairo_surface_t *pCover;
 	
@@ -198,6 +160,7 @@
 	gchar *cCurrentXmlFile;
 	gboolean cover_exist;
 	gboolean bCoverNeedsTest;
+	gboolean bForceCoverNeedsTest; // some players copy covers on their cache folder but it takes a few time...
 	
 	// pochette 3D
 	gint iCoverTransition;

=== modified file 'musicPlayer/src/applet-xmms.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-xmms.c	2010-08-10 00:05:57 +0000
+++ musicPlayer/src/applet-xmms.c	2011-09-26 20:21:33 +0000
@@ -90,7 +90,7 @@
 		break;
 	}
 	
-	cd_debug ("Handeler XMMS: will use '%s'", cCommand?cCommand:cCommand2);
+	cd_debug ("Handler XMMS: will use '%s'", cCommand?cCommand:cCommand2);
 	g_spawn_command_line_async (cCommand?cCommand:cCommand2, &erreur);
 	g_free (cCommand2);
 	
@@ -238,7 +238,7 @@
 }
 
 void cd_musicplayer_register_xmms_handler (void) { //On enregistre notre lecteurs
-	MusicPlayerHandeler *pXMMS = g_new0 (MusicPlayerHandeler, 1);
+	MusicPlayerHandler *pXMMS = g_new0 (MusicPlayerHandler, 1);
 	pXMMS->read_data = cd_xmms_read_data;
 	pXMMS->free_data = cd_xmms_free_data;
 	pXMMS->configure = NULL; //Cette fonction permettera de préparer le controleur
@@ -248,7 +248,6 @@
 	pXMMS->name = "XMMS";
 	pXMMS->iPlayerControls = PLAYER_PREVIOUS | PLAYER_PLAY_PAUSE | PLAYER_NEXT | PLAYER_STOP | PLAYER_JUMPBOX | PLAYER_SHUFFLE | PLAYER_ENQUEUE | PLAYER_REPEAT;
 	pXMMS->launch = "xmms";
-	pXMMS->iPlayer = MP_XMMS;
 	pXMMS->bSeparateAcquisition = TRUE;
-	cd_musicplayer_register_my_handler (pXMMS, "XMMS");
+	cd_musicplayer_register_my_handler (pXMMS);
 }

=== modified file 'musicPlayer/src/applet-xmms2.c' (properties changed: +x to -x)
--- musicPlayer/src/applet-xmms2.c	2009-10-05 19:27:17 +0000
+++ musicPlayer/src/applet-xmms2.c	2011-09-26 20:21:33 +0000
@@ -32,11 +32,10 @@
  */
 void cd_musicplayer_register_xmms2_handler (void)
 {
-	MusicPlayerHandeler *pXmms2 = cd_mpris_new_handler ();
-	pXmms2->cMprisService = "org.xmms.xmms2";  /// trouver le nom ...
-	pXmms2->appclass = "xmms2";  /// idem...
-	pXmms2->launch = "xmms2";  /// idem...
-	pXmms2->name = "XMMS 2";
-	pXmms2->iPlayer = MP_XMMS2;
-	cd_musicplayer_register_my_handler (pXmms2, "XMMS 2");
+	MusicPlayerHandler *pHandler = cd_mpris_new_handler ();
+	pHandler->cMprisService = "org.xmms.xmms2";  /// trouver le nom ...
+	pHandler->appclass = "xmms2";  /// idem...
+	pHandler->launch = "xmms2";  /// idem...
+	pHandler->name = "XMMS 2";
+	cd_musicplayer_register_my_handler (pHandler);
 }

=== modified file 'netspeed/data/netspeed.conf.in'
--- netspeed/data/netspeed.conf.in	2011-08-09 18:08:08 +0000
+++ netspeed/data/netspeed.conf.in	2011-09-26 20:21:33 +0000
@@ -56,7 +56,7 @@
 #b Is detached from the dock
 initially detached=false
 #l[Normal;Keep above;Keep below;Keep on widget layer;Reserve space] Visibility:
-#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=utility)}
+#{for CompizFusion's "widget layer", set behaviour in Compiz to: (class=Cairo-dock & type=Utility)}
 accessibility=0
 #b Should be visible on all desktops?
 sticky=true
@@ -107,9 +107,12 @@
 #X[Gauge;gtk-dialog-info]
 frame_gauge=
 
-#h+[@gaugesdir@;gauges;gauges2] Choose one of the available themes:/
+#h+[@gaugesdir@;gauges;gauges3] Choose one of the available themes:/
 theme = Turbo-night-fuel
 
+#l+[No;With dock orientation;Yes] Rotate applet theme :
+rotate theme = No
+
 
 #X[Graph;gtk-dialog-info]
 frame_graph=

=== modified file 'netspeed/src/applet-config.c'
--- netspeed/src/applet-config.c	2009-10-05 19:27:17 +0000
+++ netspeed/src/applet-config.c	2011-09-26 20:21:33 +0000
@@ -40,6 +40,7 @@
 	myConfig.iInfoDisplay = CD_CONFIG_GET_INTEGER ("Configuration", "info display");
 
 	myConfig.cGThemePath = CD_CONFIG_GET_GAUGE_THEME ("Configuration", "theme");
+	myConfig.iRotateTheme = CD_CONFIG_GET_INTEGER ("Configuration", "rotate theme");
 	/*myConfig.fAlpha = CD_CONFIG_GET_DOUBLE ("Configuration", "watermark alpha");
 	if (myConfig.fAlpha != 0)
 	{

=== modified file 'netspeed/src/applet-init.c'
--- netspeed/src/applet-init.c	2010-09-07 02:38:17 +0000
+++ netspeed/src/applet-init.c	2011-09-26 20:21:33 +0000
@@ -43,6 +43,7 @@
 		memset (&attr, 0, sizeof (CairoGaugeAttribute));
 		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
 		pRenderAttr->cModelName = "gauge";
+		pRenderAttr->iRotateTheme = myConfig.iRotateTheme;
 		attr.cThemePath = myConfig.cGThemePath;
 	}
 	else if (myConfig.iDisplayType == CD_NETSPEED_GRAPH)
@@ -51,9 +52,10 @@
 		memset (&attr, 0, sizeof (CairoGraphAttribute));
 		pRenderAttr = CAIRO_DATA_RENDERER_ATTRIBUTE (&attr);
 		pRenderAttr->cModelName = "graph";
-		pRenderAttr->iMemorySize = (myIcon->fWidth > 1 ? myIcon->fWidth : 32);  // fWidht peut etre <= 1 en mode desklet au chargement.
+		int w, h;
+		CD_APPLET_GET_MY_ICON_EXTENT (&w, &h);
+		pRenderAttr->iMemorySize = (w > 1 ? w : 32);
 		attr.iType = myConfig.iGraphType;
-		attr.iRadius = 10;
 		attr.bMixGraphs = myConfig.bMixGraph;
 		double fHighColor[CD_NETSPEED_NB_MAX_VALUES*3];
 		double fLowColor[CD_NETSPEED_NB_MAX_VALUES*3];
@@ -82,7 +84,7 @@
 			pRenderAttr->format_value = (CairoDataRendererFormatValueFunc)cd_netspeed_format_value;
 			pRenderAttr->pFormatData = myApplet;
 		}
-		const gchar *labels[2] = {"UP", "DOWN"};
+		const gchar *labels[2] = {"DOWN", "UP"};
 		pRenderAttr->cLabels = (gchar **)labels;
 		if (! bReload)
 			CD_APPLET_ADD_DATA_RENDERER_ON_MY_ICON (pRenderAttr);
@@ -140,7 +142,10 @@
 		}
 		if (myConfig.iInfoDisplay != CAIRO_DOCK_INFO_ON_LABEL)
 		{
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			if (myConfig.defaultTitle) // has another default name
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			else
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
 		}
 		
 		cairo_dock_relaunch_task_immediately (myData.pPeriodicTask, myConfig.iCheckInterval);

=== modified file 'netspeed/src/applet-netspeed.c'
--- netspeed/src/applet-netspeed.c	2010-09-07 02:38:17 +0000
+++ netspeed/src/applet-netspeed.c	2011-09-26 20:21:33 +0000
@@ -89,10 +89,7 @@
 void cd_netspeed_format_value (CairoDataRenderer *pRenderer, int iNumValue, gchar *cFormatBuffer, int iBufferLength, CairoDockModuleInstance *myApplet)
 {
 	static gchar s_upRateFormatted[11];
-	double fValue = cairo_data_renderer_get_normalized_current_value_with_latency (pRenderer, iNumValue);
-	
-	fValue *= (iNumValue == 0 ? myData.iMaxUpRate : myData.iMaxDownRate);
-	cd_netspeed_formatRate (fValue, s_upRateFormatted, 11, FALSE);
+	cd_netspeed_formatRate (iNumValue == 0 ? myData.iDownloadSpeed : myData.iUploadSpeed, s_upRateFormatted, 11, FALSE);
 	snprintf (cFormatBuffer, iBufferLength,
 		"%s%s",
 		cairo_data_renderer_can_write_values (pRenderer) ? (iNumValue == 0 ?"↓" : "↑") : "",
@@ -132,6 +129,8 @@
 				if (strncmp (tmp, myConfig.cInterface, myConfig.iStringLen) == 0 && *(tmp+myConfig.iStringLen) == ':')  // c'est l'interface qu'on veut.
 				{
 					tmp += myConfig.iStringLen+1;  // on saute le ':' avec.
+					while (*tmp == ' ')  // on saute les espaces.
+						tmp ++;
 					iReceivedBytes = atoll (tmp);
 					
 					int i = 0;
@@ -177,7 +176,12 @@
 	if ( ! myData.bAcquisitionOK)
 	{
 		if (myConfig.iInfoDisplay == CAIRO_DOCK_INFO_ON_LABEL)
-			CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+		{
+			if (myConfig.defaultTitle) // has another default name
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myConfig.defaultTitle);
+			else
+				CD_APPLET_SET_NAME_FOR_MY_ICON (myApplet->pModule->pVisitCard->cTitle);
+		}
 		else if (myConfig.iInfoDisplay == CAIRO_DOCK_INFO_ON_ICON)
 			CD_APPLET_SET_QUICK_INFO_ON_MY_ICON ("N/A");
 		
@@ -199,21 +203,11 @@
 		}
 		else
 		{
-			if (myConfig.iInfoDisplay != CAIRO_DOCK_INFO_NONE)
+			if (myConfig.iInfoDisplay == CAIRO_DOCK_INFO_ON_LABEL)
 			{
 				cd_netspeed_formatRate (myData.iUploadSpeed, s_upRateFormatted, 11, myDesklet != NULL);
 				cd_netspeed_formatRate (myData.iDownloadSpeed, s_downRateFormatted, 11, myDesklet != NULL);
-				
-				if (myConfig.iInfoDisplay == CAIRO_DOCK_INFO_ON_ICON)
-				{
-					CairoDataRenderer *pRenderer = cairo_dock_get_icon_data_renderer (myIcon);
-					if (!pRenderer || ! cairo_data_renderer_can_write_values (pRenderer))
-						CD_APPLET_SET_QUICK_INFO_ON_MY_ICON_PRINTF ("↓%s\n↑%s", s_downRateFormatted, s_upRateFormatted);
-				}
-				else
-				{
-					CD_APPLET_SET_NAME_FOR_MY_ICON_PRINTF ("↓%s\n↑%s", s_downRateFormatted, s_upRateFormatted);
-				}
+				CD_APPLET_SET_NAME_FOR_MY_ICON_PRINTF ("↓%s - ↑%s", s_downRateFormatted, s_upRateFormatted);
 			}
 			
 			if(myData.iUploadSpeed > myData.iMaxUpRate) {

=== modified file 'netspeed/src/applet-struct.h'
--- netspeed/src/applet-struct.h	2009-08-26 21:07:39 +0000
+++ netspeed/src/applet-struct.h	2011-09-26 20:21:33 +0000
@@ -55,6 +55,7 @@
 	
 	gchar *cSystemMonitorCommand;
 	gdouble fSmoothFactor;
+	RendererRotateTheme iRotateTheme;
 } ;
 
 struct _AppletData {

=== modified file 'po/ar.po'
--- po/ar.po	2011-08-09 18:08:08 +0000
+++ po/ar.po	2011-09-26 20:21:33 +0000
@@ -7,15 +7,15 @@
 msgstr ""
 "Project-Id-Version: cairo-dock-plug-ins\n"
 "Report-Msgid-Bugs-To: fabounet@xxxxxxxxxxxx\n"
-"POT-Creation-Date: 2011-07-15 23:57+0000\n"
-"PO-Revision-Date: 2010-11-13 22:57+0000\n"
-"Last-Translator: Ahmed Mohammed <Unknown>\n"
+"POT-Creation-Date: 2011-09-23 23:43+0000\n"
+"PO-Revision-Date: 2011-09-16 00:48+0000\n"
+"Last-Translator: Fabounet <fabounet03@xxxxxxxxx>\n"
 "Language-Team: Arabic <ar@xxxxxx>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2011-07-17 04:35+0000\n"
-"X-Generator: Launchpad (build 13405)\n"
+"X-Launchpad-Export-Date: 2011-09-25 04:44+0000\n"
+"X-Generator: Launchpad (build 14012)\n"
 "Language: ar\n"
 
 #: ../Animated-icons/src/applet-init.c:32
@@ -257,11 +257,11 @@
 #: ../Xgamma/src/applet-notifications.c:89
 #: ../alsaMixer/src/applet-notifications.c:71
 #: ../dustbin/src/applet-notifications.c:139
-#: ../logout/src/applet-notifications.c:144
-#: ../logout/src/applet-notifications.c:153
-#: ../logout/src/applet-notifications.c:163
+#: ../logout/src/applet-notifications.c:142
+#: ../logout/src/applet-notifications.c:151
+#: ../logout/src/applet-notifications.c:160
 #: ../mail/src/cd-mail-applet-notifications.c:157
-#: ../musicPlayer/src/applet-notifications.c:186
+#: ../musicPlayer/src/applet-notifications.c:270
 #: ../netspeed/src/applet-notifications.c:97
 #: ../quick-browser/src/applet-notifications.c:43
 #: ../shortcuts/src/applet-notifications.c:250
@@ -325,25 +325,25 @@
 
 #: ../Dbus/src/interface-applet-signals.c:365
 #: ../Cairo-Penguin/data/messages:13 ../Clipper/data/messages:17
-#: ../Composite-Manager/data/messages:13 ../Disks/data/messages:17
+#: ../Composite-Manager/data/messages:13 ../Disks/data/messages:13
 #: ../Folders/data/messages:29 ../GMenu/data/messages:17
-#: ../Impulse/data/messages:17 ../MeMenu/data/messages:11
-#: ../Messaging-Menu/data/messages:13 ../Network-Monitor/data/messages:17
+#: ../Impulse/data/messages:15 ../MeMenu/data/messages:11
+#: ../Messaging-Menu/data/messages:13 ../Network-Monitor/data/messages:19
 #: ../RSSreader/data/messages:19 ../Recent-Events/data/messages:17
 #: ../Scooby-Do/data/messages:115 ../Status-Notifier/data/messages:17
-#: ../System-Monitor/data/messages:15 ../Toons/data/messages:15
+#: ../System-Monitor/data/messages:17 ../Toons/data/messages:17
 #: ../Xgamma/data/messages:19 ../alsaMixer/data/messages:15
-#: ../clock/data/messages:17 ../dnd2share/data/messages:17
+#: ../clock/data/messages:19 ../dnd2share/data/messages:17
 #: ../dustbin/data/messages:13 ../keyboard-indicator/data/messages:13
 #: ../logout/data/messages:17 ../mail/data/messages:13
 #: ../musicPlayer/data/messages:15 ../netspeed/data/messages:13
-#: ../powermanager/data/messages:17 ../quick-browser/data/messages:19
+#: ../powermanager/data/messages:19 ../quick-browser/data/messages:19
 #: ../shortcuts/data/messages:17 ../showDesktop/data/messages:21
-#: ../slider/data/messages:15 ../stack/data/messages:19
+#: ../slider/data/messages:17 ../stack/data/messages:19
 #: ../switcher/data/messages:17 ../systray/data/messages:17
 #: ../template/data/messages:17 ../terminal/data/messages:17
 #: ../tomboy/data/messages:27 ../weather/data/messages:15
-#: ../weblets/data/messages:17 ../wifi/data/messages:15
+#: ../weblets/data/messages:17 ../wifi/data/messages:17
 msgid "Applet's Handbook"
 msgstr ""
 
@@ -369,44 +369,44 @@
 "The applet '%s' has been succefully installed and automatically launched"
 msgstr "البريمج '%s' تم تنصيبه بنجاح وتشغيله"
 
-#: ../Disks/src/applet-disks.c:43 ../Disks/src/applet-disks.c:51
+#: ../Disks/src/applet-disks.c:45 ../Disks/src/applet-disks.c:53
 #: ../Network-Monitor/src/applet-netspeed.c:42
 #: ../Network-Monitor/src/applet-netspeed.c:50
 #: ../netspeed/src/applet-netspeed.c:42 ../netspeed/src/applet-netspeed.c:50
 msgid "B"
 msgstr "بايت"
 
-#: ../Disks/src/applet-disks.c:59 ../Network-Monitor/src/applet-netspeed.c:58
+#: ../Disks/src/applet-disks.c:61 ../Network-Monitor/src/applet-netspeed.c:58
 #: ../netspeed/src/applet-netspeed.c:58
 msgid "KB"
 msgstr "ك.ب."
 
-#: ../Disks/src/applet-disks.c:67 ../Network-Monitor/src/applet-netspeed.c:66
+#: ../Disks/src/applet-disks.c:69 ../Network-Monitor/src/applet-netspeed.c:66
 #: ../netspeed/src/applet-netspeed.c:66
 #: ../netspeed/src/applet-notifications.c:37
 #: ../netspeed/src/applet-notifications.c:38
 msgid "MB"
 msgstr "م.ب."
 
-#: ../Disks/src/applet-disks.c:75 ../Network-Monitor/src/applet-netspeed.c:74
+#: ../Disks/src/applet-disks.c:77 ../Network-Monitor/src/applet-netspeed.c:74
 #: ../netspeed/src/applet-netspeed.c:74
 msgid "GB"
 msgstr "جيجا بايت"
 
-#: ../Disks/src/applet-disks.c:83 ../Network-Monitor/src/applet-netspeed.c:82
+#: ../Disks/src/applet-disks.c:85 ../Network-Monitor/src/applet-netspeed.c:82
 #: ../netspeed/src/applet-netspeed.c:82
 msgid "TB"
 msgstr "تيرا بايت"
 
-#: ../Disks/src/applet-disks.c:138
+#: ../Disks/src/applet-disks.c:171
 msgid "r"
 msgstr ""
 
-#: ../Disks/src/applet-disks.c:138
+#: ../Disks/src/applet-disks.c:171
 msgid "w"
 msgstr ""
 
-#: ../Disks/src/applet-disks.c:142
+#: ../Disks/src/applet-disks.c:175
 msgid "N/A"
 msgstr "غ/م"
 
@@ -416,15 +416,37 @@
 
 #: ../Disks/src/applet-init.c:32
 msgid ""
-"<b><i>monitors disks activity</i></b>.\n"
-"\n"
-"Initial release, a lot more need to be done :\n"
-" - All disks option\n"
-" - Pop up showing disks info to know what to add in the list\n"
-" - Free space\n"
-" - Find actions : left, middle click, drop and wheel\n"
-" - Fill menu with actions\n"
-" - Editable labels ?\n"
+"<b><i>Monitors disks speed and space</i></b>.\n"
+"\n"
+"This applet show your disks informations. You can activate both options at "
+"once, but they're better separated in 2 or more instances of the applet.\n"
+"Using both in the same applet can cause problems with the speed display not "
+"scaling down.\n"
+"\n"
+"<b>Disk space</b> :  Show disk transfer rates. Up to 10 partitions\n"
+"  You need to configure the mount point of each monitored partition like / "
+"or /home\n"
+"  Better seen in a gauge, with 30 or 60s refresh rate and really short or no "
+"transition delay.\n"
+"\n"
+"<b>Disk speed</b> :  Show disk transfer rates. Up to 5 disks\n"
+"  You need to configure the name of each monitored disk with his device name "
+"like sda or sdb\n"
+"  Better seen in a graph, with 2 or 3s refresh rate and no delay between "
+"transitions.\n"
+"\n"
+"Second release, a lot more need to be done :\n"
+" <u>Free space :</u>\n"
+" - Popup with detailed informations.\n"
+" - Editable labels ?\n"
+" <u>Speed :</u>\n"
+" - All disks option.\n"
+" - Pop up showing disks info to know what to add in the list.\n"
+" - Editable labels ?\n"
+" - Get real block size for disks\n"
+" <u>Global</u>\n"
+" - Find actions : left, middle click, drop and wheel.\n"
+" - Fill menu with actions.\n"
 msgstr ""
 
 #: ../Disks/src/applet-notifications.c:72
@@ -477,6 +499,7 @@
 " او يمكنك سحب المجلد ووضعه بداخل الشريط\n"
 "الضغط بزر الماوس الاوسط على الايقونة الرئيسية سيفتح المجلد.\n"
 
+#: ../Folders/src/applet-init.c:87 ../Folders/src/applet-init.c:150
 #: ../Folders/src/applet-notifications.c:42
 msgid "Open the configuration of the applet to choose a folder to import."
 msgstr ""
@@ -549,7 +572,7 @@
 msgstr "إنقل هذا الملف"
 
 #: ../Folders/src/applet-notifications.c:378
-#: ../Recent-Events/src/applet-dialog.c:255
+#: ../Recent-Events/src/applet-dialog.c:263
 #: ../slider/src/applet-notifications.c:240
 msgid "Open with"
 msgstr "فتح بـ"
@@ -586,11 +609,11 @@
 msgid "By type"
 msgstr ""
 
-#: ../Folders/src/applet-notifications.c:452
+#: ../Folders/src/applet-notifications.c:463
 msgid "The folder has been imported."
 msgstr ""
 
-#: ../Folders/src/applet-notifications.c:485
+#: ../Folders/src/applet-notifications.c:521
 msgid "Do you want to import the content of the folder too?"
 msgstr ""
 
@@ -612,6 +635,14 @@
 msgid "Applications Menu"
 msgstr "قائمة البرامج"
 
+#: ../GMenu/src/applet-menu-callbacks.c:215 ../GMenu/data/messages:123
+msgid "Logout"
+msgstr ""
+
+#: ../GMenu/src/applet-menu-callbacks.c:218 ../GMenu/data/messages:125
+msgid "Shutdown"
+msgstr ""
+
 #: ../GMenu/src/applet-notifications.c:76
 msgid "Quick launch"
 msgstr "تشغيل سريع"
@@ -628,7 +659,7 @@
 msgid "Recent Documents"
 msgstr "المستندات المستعملة مؤخراً"
 
-#: ../GMenu/src/applet-recent.c:111
+#: ../GMenu/src/applet-recent.c:115
 msgid "Clear the list of the recently used documents?"
 msgstr "مسح قائمة الملفات المسخدمة مؤخراً؟"
 
@@ -636,8 +667,11 @@
 msgid "Enter a command to launch:"
 msgstr "ادخل أمراً لتشغيله:"
 
-#: ../Impulse/src/applet-init.c:29
-msgid "Impulse"
+#: ../Impulse/src/applet-impulse.c:170
+msgid ""
+"There is something wrong with PulseAudio.\n"
+"Can you check its status (installed? running? version?) and report this bug "
+"(if any) to forum.glx-dock.org"
 msgstr ""
 
 #: ../Impulse/src/applet-init.c:32
@@ -703,11 +737,11 @@
 msgstr "تم فصل كابل"
 
 #: ../Network-Monitor/src/applet-draw.c:30
-#: ../powermanager/src/powermanager-draw.c:144 ../wifi/src/applet-draw.c:31
-#: ../Clipper/data/messages:101 ../Network-Monitor/data/messages:215
-#: ../alsaMixer/data/messages:129 ../dnd2share/data/messages:113
-#: ../dustbin/data/messages:103 ../wifi/data/messages:133
-#: ../wifi/data/messages:183
+#: ../powermanager/src/powermanager-draw.c:160 ../wifi/src/applet-draw.c:31
+#: ../Clipper/data/messages:101 ../GMenu/data/messages:121
+#: ../Network-Monitor/data/messages:217 ../alsaMixer/data/messages:129
+#: ../dnd2share/data/messages:113 ../dustbin/data/messages:103
+#: ../wifi/data/messages:135 ../wifi/data/messages:185
 msgid "None"
 msgstr "لا شيء"
 
@@ -770,10 +804,10 @@
 msgstr "معرف الشبكة"
 
 #: ../Network-Monitor/src/applet-draw.c:145
-#: ../musicPlayer/src/applet-draw.c:344 ../musicPlayer/src/applet-draw.c:346
-#: ../musicPlayer/src/applet-draw.c:348
-#: ../powermanager/src/powermanager-draw.c:173
-#: ../powermanager/src/powermanager-draw.c:226
+#: ../musicPlayer/src/applet-draw.c:369 ../musicPlayer/src/applet-draw.c:371
+#: ../musicPlayer/src/applet-draw.c:373
+#: ../powermanager/src/powermanager-draw.c:189
+#: ../powermanager/src/powermanager-draw.c:242
 msgid "Unknown"
 msgstr "مجهول"
 
@@ -918,68 +952,68 @@
 "Is your connection alive?"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:280
+#: ../Recent-Events/src/applet-dialog.c:288
 #: ../stack/src/applet-notifications.c:184
 msgid "Open parent folder"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:282
+#: ../Recent-Events/src/applet-dialog.c:290
 msgid "Copy the location"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:284
+#: ../Recent-Events/src/applet-dialog.c:292
 msgid "Delete this event"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:357
+#: ../Recent-Events/src/applet-dialog.c:365
 msgid "All"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:358
+#: ../Recent-Events/src/applet-dialog.c:366
 msgid "Document"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:360
+#: ../Recent-Events/src/applet-dialog.c:368
 msgid "Image"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:361
+#: ../Recent-Events/src/applet-dialog.c:369
 msgid "Audio"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:362
+#: ../Recent-Events/src/applet-dialog.c:370
 msgid "Video"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:363
+#: ../Recent-Events/src/applet-dialog.c:371
 msgid "Web"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:364
+#: ../Recent-Events/src/applet-dialog.c:372
 msgid "Other"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:365
+#: ../Recent-Events/src/applet-dialog.c:373
 msgid "Top Results"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:371
+#: ../Recent-Events/src/applet-dialog.c:379
 msgid "Look for events"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:422
+#: ../Recent-Events/src/applet-dialog.c:430
 msgid "File name"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:429
+#: ../Recent-Events/src/applet-dialog.c:437
 msgid "Last access"
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:478
+#: ../Recent-Events/src/applet-dialog.c:490
 msgid "You need to install the Zeitgeist data engine."
 msgstr ""
 
-#: ../Recent-Events/src/applet-dialog.c:484
+#: ../Recent-Events/src/applet-dialog.c:496
 msgid "Browse and search in recent events"
 msgstr ""
 
@@ -997,11 +1031,11 @@
 msgid "Recent files"
 msgstr "آخر الملفات"
 
-#: ../Recent-Events/src/applet-notifications.c:154
+#: ../Recent-Events/src/applet-notifications.c:159
 msgid "Delete today's events"
 msgstr ""
 
-#: ../Recent-Events/src/applet-notifications.c:156
+#: ../Recent-Events/src/applet-notifications.c:161
 msgid "Delete all events"
 msgstr ""
 
@@ -1063,7 +1097,7 @@
 msgstr "فتح في نافذة جديدة"
 
 #: ../Scooby-Do/src/applet-backend-firefox.c:433
-#: ../dnd2share/src/applet-notifications.c:473
+#: ../dnd2share/src/applet-notifications.c:484
 msgid "Open file"
 msgstr "افتح ملفًا"
 
@@ -1358,7 +1392,7 @@
 msgid "I couldn't load the mixer"
 msgstr ""
 
-#: ../alsaMixer/src/applet-mixer.c:297
+#: ../alsaMixer/src/applet-mixer.c:283
 msgid "Set up volume:"
 msgstr ""
 
@@ -1394,7 +1428,7 @@
 msgid "Calendar and tasks"
 msgstr "أجندة و مهام"
 
-#: ../clock/src/applet-config.c:36 ../clock/data/messages:167
+#: ../clock/src/applet-config.c:36 ../clock/data/messages:169
 msgid "Alarm"
 msgstr "منبه"
 
@@ -1559,13 +1593,13 @@
 msgid "Right-click to add a new task."
 msgstr ""
 
-#: ../clock/src/applet-task-editor.c:398 ../musicPlayer/src/applet-draw.c:345
+#: ../clock/src/applet-task-editor.c:398 ../musicPlayer/src/applet-draw.c:370
 #: ../RSSreader/data/messages:137
 msgid "Title"
 msgstr ""
 
 #: ../clock/src/applet-task-editor.c:405
-#: ../dnd2share/src/applet-notifications.c:378 ../Doncky/data/messages:99
+#: ../dnd2share/src/applet-notifications.c:387 ../Doncky/data/messages:99
 #: ../RSSreader/data/messages:153
 msgid "Text"
 msgstr ""
@@ -1648,7 +1682,7 @@
 msgstr ""
 
 #: ../desklet-rendering/src/rendering-desklet-decorations.c:105
-#: ../slider/data/messages:131
+#: ../slider/data/messages:133
 msgid "none"
 msgstr ""
 
@@ -1762,34 +1796,38 @@
 "Just middle-click to paste it anywhere."
 msgstr ""
 
-#: ../dnd2share/src/applet-notifications.c:378
+#: ../dnd2share/src/applet-notifications.c:387
 msgid "File"
 msgstr ""
 
-#: ../dnd2share/src/applet-notifications.c:381
+#: ../dnd2share/src/applet-notifications.c:390
 msgid "Click on the icon to copy the URL into the clipboard."
 msgstr ""
 
-#: ../dnd2share/src/applet-notifications.c:395
+#: ../dnd2share/src/applet-notifications.c:404
 msgid "Send the clipboard's content"
 msgstr ""
 
-#: ../dnd2share/src/applet-notifications.c:398
+#: ../dnd2share/src/applet-notifications.c:407
 msgid "History"
 msgstr ""
 
-#: ../dnd2share/src/applet-notifications.c:475
+#: ../dnd2share/src/applet-notifications.c:486
 msgid "Get text"
 msgstr ""
 
-#: ../dnd2share/src/applet-notifications.c:477
+#: ../dnd2share/src/applet-notifications.c:488
 msgid "Remove from history"
 msgstr ""
 
-#: ../dnd2share/src/applet-notifications.c:480
+#: ../dnd2share/src/applet-notifications.c:491
 msgid "Clear History"
 msgstr ""
 
+#: ../dnd2share/src/applet-notifications.c:496
+msgid "Use only a files hosting site"
+msgstr ""
+
 #: ../dock-rendering/src/rendering-init.c:34
 msgid "Caroussel"
 msgstr ""
@@ -1987,64 +2025,64 @@
 "  and program an automatic shutdown at a given time.\n"
 msgstr ""
 
-#: ../logout/src/applet-init.c:38 ../logout/src/applet-logout.c:335
-#: ../logout/src/applet-notifications.c:144
-#: ../logout/src/applet-notifications.c:146 ../logout/data/messages:99
+#: ../logout/src/applet-init.c:38 ../logout/src/applet-logout.c:343
+#: ../logout/src/applet-notifications.c:142
+#: ../logout/src/applet-notifications.c:144 ../logout/data/messages:99
 #: ../logout/data/messages:107
 msgid "Log out"
 msgstr ""
 
-#: ../logout/src/applet-logout.c:317 ../logout/src/applet-notifications.c:153
-#: ../logout/src/applet-notifications.c:155 ../logout/data/messages:101
+#: ../logout/src/applet-logout.c:323 ../logout/src/applet-notifications.c:151
+#: ../logout/src/applet-notifications.c:153 ../logout/data/messages:101
 #: ../logout/data/messages:109
 msgid "Shut down"
 msgstr ""
 
-#: ../logout/src/applet-logout.c:321
+#: ../logout/src/applet-logout.c:327
 msgid "Restart"
 msgstr ""
 
-#: ../logout/src/applet-logout.c:325
-#: ../powermanager/src/powermanager-menu-functions.c:58
+#: ../logout/src/applet-logout.c:331
+#: ../powermanager/src/powermanager-menu-functions.c:86
 msgid "Hibernate"
 msgstr ""
 
-#: ../logout/src/applet-logout.c:326
-msgid "Your computer will still consume a small amount of energy."
-msgstr ""
-
-#: ../logout/src/applet-logout.c:330
-#: ../powermanager/src/powermanager-menu-functions.c:60
-msgid "Suspend"
-msgstr ""
-
-#: ../logout/src/applet-logout.c:331
+#: ../logout/src/applet-logout.c:332
 msgid "Your computer will not consume any energy."
 msgstr ""
 
 #: ../logout/src/applet-logout.c:336
+#: ../powermanager/src/powermanager-menu-functions.c:88
+msgid "Suspend"
+msgstr ""
+
+#: ../logout/src/applet-logout.c:337
+msgid "Your computer will still consume a small amount of energy."
+msgstr ""
+
+#: ../logout/src/applet-logout.c:344
 msgid "Close your session and allow to open a new one."
 msgstr ""
 
-#: ../logout/src/applet-logout.c:340 ../logout/src/applet-notifications.c:163
-#: ../logout/src/applet-notifications.c:165 ../logout/data/messages:103
+#: ../logout/src/applet-logout.c:349 ../logout/src/applet-notifications.c:160
+#: ../logout/src/applet-notifications.c:162 ../logout/data/messages:103
 #: ../logout/data/messages:111
 msgid "Lock screen"
 msgstr ""
 
-#: ../logout/src/applet-logout.c:344 ../logout/src/applet-notifications.c:171
+#: ../logout/src/applet-logout.c:353 ../logout/src/applet-notifications.c:169
 msgid "Guest session"
 msgstr ""
 
-#: ../logout/src/applet-logout.c:348 ../logout/src/applet-notifications.c:174
+#: ../logout/src/applet-logout.c:357 ../logout/src/applet-notifications.c:172
 msgid "Program an automatic shut-down"
 msgstr ""
 
-#: ../logout/src/applet-logout.c:386
+#: ../logout/src/applet-logout.c:395
 msgid "Your computer will shut-down in 1 minute."
 msgstr ""
 
-#: ../logout/src/applet-logout.c:410
+#: ../logout/src/applet-logout.c:419
 msgid "Choose in how many minutes your PC will stop:"
 msgstr ""
 
@@ -2094,7 +2132,7 @@
 msgstr ""
 
 #: ../mail/src/cd-mail-applet-accounts.c:39 ../RSSreader/data/messages:111
-#: ../netspeed/data/messages:135 ../powermanager/data/messages:155
+#: ../netspeed/data/messages:143 ../powermanager/data/messages:157
 #: ../weather/data/messages:109
 msgid "Refresh time:"
 msgstr ""
@@ -2245,51 +2283,51 @@
 msgid "This plugin adds a motion blur effect to docks."
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:227
+#: ../musicPlayer/src/applet-draw.c:226
 msgid "Unknown artist"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:227
+#: ../musicPlayer/src/applet-draw.c:226
 msgid "Unknown title"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:233 ../musicPlayer/src/applet-mpris.c:317
+#: ../musicPlayer/src/applet-draw.c:232 ../musicPlayer/src/applet-mpris.c:317
 msgid "Track"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:334
+#: ../musicPlayer/src/applet-draw.c:359
 msgid "Current song"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:343
+#: ../musicPlayer/src/applet-draw.c:368
 msgid "Artist"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:347
+#: ../musicPlayer/src/applet-draw.c:372
 msgid "Album"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:349
+#: ../musicPlayer/src/applet-draw.c:374
 msgid "Length"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:351
+#: ../musicPlayer/src/applet-draw.c:376
 msgid "Track n°"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:352
+#: ../musicPlayer/src/applet-draw.c:377
 msgid "Song n°"
 msgstr ""
 
-#: ../musicPlayer/src/applet-draw.c:354
+#: ../musicPlayer/src/applet-draw.c:379
 msgid "There is no media playing."
 msgstr ""
 
-#: ../musicPlayer/src/applet-init.c:48
+#: ../musicPlayer/src/applet-init.c:49
 msgid "musicPlayer"
 msgstr ""
 
-#: ../musicPlayer/src/applet-init.c:51
+#: ../musicPlayer/src/applet-init.c:52
 msgid ""
 "This applet lets you control any music player.\n"
 "Left click to Play/Pause, middle-click to play Next song.\n"
@@ -2302,66 +2340,74 @@
 "       For Exaile 0.3, you have to activate its MPRIS plug-in"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:74
+#: ../musicPlayer/src/applet-notifications.c:83
 msgid ""
 "Sorry, I couldn't detect any player.\n"
 "If it is running, it is maybe because its version is too old and does not "
 "offer such service."
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:172
+#: ../musicPlayer/src/applet-notifications.c:165
+msgid "Choose a music player to control"
+msgstr ""
+
+#: ../musicPlayer/src/applet-notifications.c:253
 msgid "Find opened player"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:180
+#: ../musicPlayer/src/applet-notifications.c:257
+msgid "Choose a player"
+msgstr ""
+
+#: ../musicPlayer/src/applet-notifications.c:264
 msgid "Previous"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:180
+#: ../musicPlayer/src/applet-notifications.c:264
 msgid "scroll-up"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:186
+#: ../musicPlayer/src/applet-notifications.c:270
 msgid "Play/Pause"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:186
+#: ../musicPlayer/src/applet-notifications.c:270
 msgid "left-click"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:192
+#: ../musicPlayer/src/applet-notifications.c:276
 msgid "Next"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:192
+#: ../musicPlayer/src/applet-notifications.c:276
 msgid "scroll-down"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:197
+#: ../musicPlayer/src/applet-notifications.c:281
 msgid "Stop"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:201
+#: ../musicPlayer/src/applet-notifications.c:285
 msgid "Information"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:204
+#: ../musicPlayer/src/applet-notifications.c:288
 msgid "Show the Window"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:210
+#: ../musicPlayer/src/applet-notifications.c:294
 msgid "Show JumpBox"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:212
+#: ../musicPlayer/src/applet-notifications.c:296
 msgid "Toggle Shuffle"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:214
+#: ../musicPlayer/src/applet-notifications.c:298
 msgid "Toggle Repeat"
 msgstr ""
 
-#: ../musicPlayer/src/applet-notifications.c:216
+#: ../musicPlayer/src/applet-notifications.c:300
 msgid "Rate this song"
 msgstr ""
 
@@ -2405,70 +2451,66 @@
 msgid "Re-check interface"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:100
+#: ../powermanager/src/powermanager-draw.c:116
 msgid "Battery charged"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:122
+#: ../powermanager/src/powermanager-draw.c:138
 msgid "Time before empty"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:122
+#: ../powermanager/src/powermanager-draw.c:138
 msgid "Time before full"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:179
+#: ../powermanager/src/powermanager-draw.c:195
 msgid "Laptop on Battery."
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:180
-#: ../powermanager/src/powermanager-draw.c:189
+#: ../powermanager/src/powermanager-draw.c:196
+#: ../powermanager/src/powermanager-draw.c:205
 msgid "Battery charged at:"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:181
+#: ../powermanager/src/powermanager-draw.c:197
 msgid "Estimated time before empty:"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:188
+#: ../powermanager/src/powermanager-draw.c:204
 msgid "Laptop on Charge."
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:190
+#: ../powermanager/src/powermanager-draw.c:206
 msgid "Estimated time before full:"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:197
+#: ../powermanager/src/powermanager-draw.c:213
 msgid "Model"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:201
-msgid "Technology"
-msgstr ""
-
-#: ../powermanager/src/powermanager-draw.c:205
+#: ../powermanager/src/powermanager-draw.c:221
 msgid "Maximum capacity"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:210
+#: ../powermanager/src/powermanager-draw.c:226
 msgid "No battery found."
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:232
+#: ../powermanager/src/powermanager-draw.c:248
 msgid ""
 "PowerManager.\n"
 "Battery charge seems to be low"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:232
+#: ../powermanager/src/powermanager-draw.c:248
 msgid "Estimated time with charge:"
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:232
+#: ../powermanager/src/powermanager-draw.c:248
 msgid "Please put your laptop on charge."
 msgstr ""
 
-#: ../powermanager/src/powermanager-draw.c:246
+#: ../powermanager/src/powermanager-draw.c:262
 msgid ""
 "PowerManager.\n"
 "Your battery is now charged"
@@ -2486,10 +2528,14 @@
 "<b>Right-click</b> on the icon to hibernate or suspend the system."
 msgstr ""
 
-#: ../powermanager/src/powermanager-menu-functions.c:56
+#: ../powermanager/src/powermanager-menu-functions.c:65
 msgid "Set up power management"
 msgstr ""
 
+#: ../powermanager/src/powermanager-menu-functions.c:81
+msgid "Power statistics"
+msgstr ""
+
 #: ../quick-browser/src/applet-init.c:29
 msgid "Quick Browser"
 msgstr ""
@@ -3187,7 +3233,7 @@
 #: ../Animated-icons/data/messages:155 ../Animated-icons/data/messages:167
 #: ../Animated-icons/data/messages:179 ../Animated-icons/data/messages:193
 #: ../Remote-Control/data/messages:7 ../Scooby-Do/data/messages:15
-#: ../Scooby-Do/data/messages:19 ../Toons/data/messages:99
+#: ../Scooby-Do/data/messages:19 ../Toons/data/messages:101
 #: ../icon-effect/data/messages:101 ../icon-effect/data/messages:123
 #: ../icon-effect/data/messages:145 ../icon-effect/data/messages:167
 #: ../icon-effect/data/messages:187 ../show-mouse/data/messages:19
@@ -3219,25 +3265,25 @@
 msgstr ""
 
 #: ../Animated-icons/data/messages:93 ../Clipper/data/messages:47
-#: ../Composite-Manager/data/messages:43 ../Disks/data/messages:35
+#: ../Composite-Manager/data/messages:43 ../Disks/data/messages:29
 #: ../Doncky/data/messages:45 ../Folders/data/messages:59
-#: ../GMenu/data/messages:47 ../Impulse/data/messages:47
+#: ../GMenu/data/messages:47 ../Impulse/data/messages:45
 #: ../MeMenu/data/messages:41 ../Messaging-Menu/data/messages:43
-#: ../Network-Monitor/data/messages:47 ../RSSreader/data/messages:49
+#: ../Network-Monitor/data/messages:49 ../RSSreader/data/messages:49
 #: ../Recent-Events/data/messages:47 ../Status-Notifier/data/messages:47
-#: ../System-Monitor/data/messages:45 ../Toons/data/messages:45
+#: ../System-Monitor/data/messages:47 ../Toons/data/messages:47
 #: ../Xgamma/data/messages:49 ../alsaMixer/data/messages:45
-#: ../clock/data/messages:47 ../dnd2share/data/messages:43
+#: ../clock/data/messages:49 ../dnd2share/data/messages:43
 #: ../dustbin/data/messages:43 ../keyboard-indicator/data/messages:43
 #: ../logout/data/messages:47 ../mail/data/messages:43
 #: ../musicPlayer/data/messages:45 ../netspeed/data/messages:43
-#: ../powermanager/data/messages:47 ../quick-browser/data/messages:49
+#: ../powermanager/data/messages:49 ../quick-browser/data/messages:49
 #: ../shortcuts/data/messages:47 ../showDesktop/data/messages:51
-#: ../slider/data/messages:45 ../stack/data/messages:49
+#: ../slider/data/messages:47 ../stack/data/messages:49
 #: ../switcher/data/messages:39 ../systray/data/messages:39
 #: ../template/data/messages:47 ../terminal/data/messages:47
 #: ../tomboy/data/messages:57 ../weather/data/messages:45
-#: ../weblets/data/messages:47 ../wifi/data/messages:45
+#: ../weblets/data/messages:47 ../wifi/data/messages:47
 msgid "Normal"
 msgstr ""
 
@@ -3255,15 +3301,16 @@
 
 #: ../Animated-icons/data/messages:111 ../Animated-icons/data/messages:115
 #: ../Clipper/data/messages:9 ../Composite-Manager/data/messages:93
-#: ../Composite-Manager/data/messages:97 ../Disks/data/messages:9
-#: ../Doncky/data/messages:9 ../Doncky/data/messages:93
-#: ../Folders/data/messages:21 ../GMenu/data/messages:9
-#: ../GMenu/data/messages:101 ../Impulse/data/messages:9
+#: ../Composite-Manager/data/messages:97 ../Doncky/data/messages:9
+#: ../Doncky/data/messages:93 ../Folders/data/messages:21
+#: ../GMenu/data/messages:9 ../GMenu/data/messages:101
+#: ../Impulse/data/messages:7 ../Impulse/data/messages:127
+#: ../Impulse/data/messages:131 ../Impulse/data/messages:135
 #: ../RSSreader/data/messages:11 ../RSSreader/data/messages:131
-#: ../Recent-Events/data/messages:9 ../System-Monitor/data/messages:173
-#: ../System-Monitor/data/messages:181 ../Xgamma/data/messages:11
-#: ../alsaMixer/data/messages:137 ../alsaMixer/data/messages:141
-#: ../alsaMixer/data/messages:145 ../dnd2share/data/messages:9
+#: ../Recent-Events/data/messages:9 ../System-Monitor/data/messages:183
+#: ../System-Monitor/data/messages:191 ../Xgamma/data/messages:11
+#: ../alsaMixer/data/messages:139 ../alsaMixer/data/messages:143
+#: ../alsaMixer/data/messages:149 ../dnd2share/data/messages:9
 #: ../logout/data/messages:9 ../quick-browser/data/messages:11
 #: ../shortcuts/data/messages:9 ../showDesktop/data/messages:9
 #: ../stack/data/messages:11 ../switcher/data/messages:9
@@ -3461,27 +3508,27 @@
 #: ../Cairo-Penguin/data/messages:7 ../Clipper/data/messages:7
 #: ../Composite-Manager/data/messages:7 ../Disks/data/messages:7
 #: ../Doncky/data/messages:7 ../Folders/data/messages:9
-#: ../GMenu/data/messages:7 ../Impulse/data/messages:7
-#: ../Messaging-Menu/data/messages:7 ../Network-Monitor/data/messages:9
-#: ../RSSreader/data/messages:9 ../Recent-Events/data/messages:7
-#: ../System-Monitor/data/messages:7 ../Toons/data/messages:7
-#: ../Xgamma/data/messages:9 ../alsaMixer/data/messages:9
-#: ../clock/data/messages:9 ../dnd2share/data/messages:7
-#: ../dustbin/data/messages:7 ../keyboard-indicator/data/messages:7
-#: ../logout/data/messages:7 ../mail/data/messages:7
-#: ../musicPlayer/data/messages:9 ../netspeed/data/messages:7
-#: ../quick-browser/data/messages:9 ../shortcuts/data/messages:7
-#: ../showDesktop/data/messages:7 ../slider/data/messages:7
-#: ../stack/data/messages:9 ../switcher/data/messages:7
-#: ../template/data/messages:7 ../weather/data/messages:9
-#: ../weblets/data/messages:7 ../wifi/data/messages:7
+#: ../GMenu/data/messages:7 ../Messaging-Menu/data/messages:7
+#: ../Network-Monitor/data/messages:9 ../RSSreader/data/messages:9
+#: ../Recent-Events/data/messages:7 ../System-Monitor/data/messages:7
+#: ../Toons/data/messages:7 ../Xgamma/data/messages:9
+#: ../alsaMixer/data/messages:9 ../clock/data/messages:9
+#: ../dnd2share/data/messages:7 ../dustbin/data/messages:7
+#: ../keyboard-indicator/data/messages:7 ../logout/data/messages:7
+#: ../mail/data/messages:7 ../musicPlayer/data/messages:9
+#: ../netspeed/data/messages:7 ../quick-browser/data/messages:9
+#: ../shortcuts/data/messages:7 ../showDesktop/data/messages:7
+#: ../slider/data/messages:7 ../stack/data/messages:9
+#: ../switcher/data/messages:7 ../template/data/messages:7
+#: ../weather/data/messages:9 ../weblets/data/messages:7
+#: ../wifi/data/messages:7
 msgid "Name of the icon as it will appear in its caption in the dock:"
 msgstr ""
 
 #: ../Cairo-Penguin/data/messages:9 ../Clipper/data/messages:13
-#: ../Composite-Manager/data/messages:9 ../Disks/data/messages:13
+#: ../Composite-Manager/data/messages:9 ../Disks/data/messages:9
 #: ../Doncky/data/messages:13 ../Folders/data/messages:25
-#: ../GMenu/data/messages:13 ../Impulse/data/messages:13
+#: ../GMenu/data/messages:13 ../Impulse/data/messages:11
 #: ../MeMenu/data/messages:7 ../Messaging-Menu/data/messages:9
 #: ../Network-Monitor/data/messages:11 ../RSSreader/data/messages:15
 #: ../Recent-Events/data/messages:13 ../Status-Notifier/data/messages:13
@@ -3502,9 +3549,9 @@
 msgstr ""
 
 #: ../Cairo-Penguin/data/messages:11 ../Clipper/data/messages:15
-#: ../Composite-Manager/data/messages:11 ../Disks/data/messages:15
+#: ../Composite-Manager/data/messages:11 ../Disks/data/messages:11
 #: ../Doncky/data/messages:15 ../Folders/data/messages:27
-#: ../GMenu/data/messages:15 ../Impulse/data/messages:15
+#: ../GMenu/data/messages:15 ../Impulse/data/messages:13
 #: ../MeMenu/data/messages:9 ../Messaging-Menu/data/messages:11
 #: ../Network-Monitor/data/messages:13 ../RSSreader/data/messages:17
 #: ../Recent-Events/data/messages:15 ../Status-Notifier/data/messages:15
@@ -3526,48 +3573,49 @@
 
 #: ../Cairo-Penguin/data/messages:15 ../Clipper/data/messages:93
 #: ../Composite-Manager/data/messages:89 ../Dbus/data/messages:1
-#: ../Disks/data/messages:99 ../Doncky/data/messages:91
+#: ../Disks/data/messages:89 ../Doncky/data/messages:91
 #: ../Folders/data/messages:105 ../GMenu/data/messages:93
-#: ../Impulse/data/messages:93 ../MeMenu/data/messages:87
-#: ../Messaging-Menu/data/messages:89 ../Network-Monitor/data/messages:93
+#: ../Impulse/data/messages:91 ../MeMenu/data/messages:87
+#: ../Messaging-Menu/data/messages:89 ../Network-Monitor/data/messages:95
 #: ../RSSreader/data/messages:95 ../Recent-Events/data/messages:93
 #: ../Remote-Control/data/messages:1 ../Scooby-Do/data/messages:1
-#: ../Status-Notifier/data/messages:93 ../System-Monitor/data/messages:91
-#: ../Toons/data/messages:91 ../Xgamma/data/messages:95
-#: ../alsaMixer/data/messages:91 ../clock/data/messages:93
+#: ../Status-Notifier/data/messages:93 ../System-Monitor/data/messages:93
+#: ../Toons/data/messages:93 ../Xgamma/data/messages:95
+#: ../alsaMixer/data/messages:91 ../clock/data/messages:95
 #: ../dnd2share/data/messages:89 ../dustbin/data/messages:89
 #: ../keyboard-indicator/data/messages:89 ../logout/data/messages:93
 #: ../mail/data/messages:89 ../motion-blur/data/messages:1
 #: ../musicPlayer/data/messages:91 ../netspeed/data/messages:89
-#: ../powermanager/data/messages:93 ../quick-browser/data/messages:95
+#: ../powermanager/data/messages:95 ../quick-browser/data/messages:95
 #: ../shortcuts/data/messages:93 ../show-mouse/data/messages:1
-#: ../showDesktop/data/messages:97 ../slider/data/messages:91
+#: ../showDesktop/data/messages:97 ../slider/data/messages:93
 #: ../stack/data/messages:95 ../switcher/data/messages:85
 #: ../switcher/data/messages:87 ../systray/data/messages:85
 #: ../template/data/messages:93 ../terminal/data/messages:93
 #: ../tomboy/data/messages:103 ../weather/data/messages:91
 #: ../weather/data/messages:93 ../weblets/data/messages:93
-#: ../wifi/data/messages:91
+#: ../wifi/data/messages:93
 msgid "Configuration"
 msgstr ""
 
-#: ../Cairo-Penguin/data/messages:17 ../Disks/data/messages:109
-#: ../Network-Monitor/data/messages:141 ../Network-Monitor/data/messages:185
-#: ../System-Monitor/data/messages:101 ../Toons/data/messages:93
-#: ../dustbin/data/messages:93 ../mail/data/messages:97
-#: ../netspeed/data/messages:99 ../powermanager/data/messages:105
-#: ../weather/data/messages:123 ../wifi/data/messages:103
+#: ../Cairo-Penguin/data/messages:17 ../Disks/data/messages:99
+#: ../Network-Monitor/data/messages:143 ../Network-Monitor/data/messages:187
+#: ../System-Monitor/data/messages:103 ../Toons/data/messages:95
+#: ../alsaMixer/data/messages:147 ../dustbin/data/messages:93
+#: ../mail/data/messages:97 ../netspeed/data/messages:99
+#: ../powermanager/data/messages:107 ../weather/data/messages:123
+#: ../wifi/data/messages:105
 msgid "Choose one of the available themes:"
 msgstr ""
 
 #: ../Cairo-Penguin/data/messages:19 ../Clipper/data/messages:141
-#: ../Disks/data/messages:147 ../Network-Monitor/data/messages:169
-#: ../System-Monitor/data/messages:155 ../System-Monitor/data/messages:201
-#: ../Toons/data/messages:95 ../dnd2share/data/messages:95
-#: ../mail/data/messages:129 ../musicPlayer/data/messages:141
-#: ../netspeed/data/messages:133 ../powermanager/data/messages:153
-#: ../shortcuts/data/messages:131 ../slider/data/messages:125
-#: ../tomboy/data/messages:117 ../wifi/data/messages:167
+#: ../Disks/data/messages:137 ../Network-Monitor/data/messages:171
+#: ../System-Monitor/data/messages:165 ../System-Monitor/data/messages:211
+#: ../Toons/data/messages:97 ../dnd2share/data/messages:95
+#: ../mail/data/messages:129 ../musicPlayer/data/messages:139
+#: ../netspeed/data/messages:141 ../powermanager/data/messages:155
+#: ../shortcuts/data/messages:131 ../slider/data/messages:127
+#: ../tomboy/data/messages:117 ../wifi/data/messages:169
 msgid "in seconds."
 msgstr ""
 
@@ -3594,7 +3642,7 @@
 
 #: ../Clipper/data/messages:11 ../Doncky/data/messages:11
 #: ../Folders/data/messages:23 ../GMenu/data/messages:11
-#: ../Impulse/data/messages:11 ../RSSreader/data/messages:13
+#: ../Impulse/data/messages:9 ../RSSreader/data/messages:13
 #: ../Recent-Events/data/messages:11 ../Xgamma/data/messages:13
 #: ../dnd2share/data/messages:11 ../logout/data/messages:11
 #: ../quick-browser/data/messages:13 ../shortcuts/data/messages:11
@@ -3606,831 +3654,830 @@
 msgstr ""
 
 #: ../Clipper/data/messages:19 ../Composite-Manager/data/messages:15
-#: ../Disks/data/messages:19 ../Doncky/data/messages:17
+#: ../Disks/data/messages:15 ../Doncky/data/messages:17
 #: ../Folders/data/messages:31 ../GMenu/data/messages:19
-#: ../Impulse/data/messages:19 ../MeMenu/data/messages:13
-#: ../Messaging-Menu/data/messages:15 ../Network-Monitor/data/messages:19
+#: ../Impulse/data/messages:17 ../MeMenu/data/messages:13
+#: ../Messaging-Menu/data/messages:15 ../Network-Monitor/data/messages:21
 #: ../RSSreader/data/messages:21 ../Recent-Events/data/messages:19
-#: ../Status-Notifier/data/messages:19 ../System-Monitor/data/messages:17
-#: ../Toons/data/messages:17 ../Xgamma/data/messages:21
-#: ../alsaMixer/data/messages:17 ../clock/data/messages:19
+#: ../Status-Notifier/data/messages:19 ../System-Monitor/data/messages:19
+#: ../Toons/data/messages:19 ../Xgamma/data/messages:21
+#: ../alsaMixer/data/messages:17 ../clock/data/messages:21
 #: ../dnd2share/data/messages:19 ../dustbin/data/messages:15
 #: ../keyboard-indicator/data/messages:15 ../logout/data/messages:19
 #: ../mail/data/messages:15 ../musicPlayer/data/messages:17
-#: ../netspeed/data/messages:15 ../powermanager/data/messages:19
+#: ../netspeed/data/messages:15 ../powermanager/data/messages:21
 #: ../quick-browser/data/messages:21 ../shortcuts/data/messages:19
 #: ../show-mouse/data/messages:13 ../showDesktop/data/messages:23
-#: ../slider/data/messages:17 ../stack/data/messages:21
+#: ../slider/data/messages:19 ../stack/data/messages:21
 #: ../switcher/data/messages:19 ../systray/data/messages:19
 #: ../template/data/messages:19 ../terminal/data/messages:19
 #: ../tomboy/data/messages:29 ../weather/data/messages:17
-#: ../weblets/data/messages:19 ../wifi/data/messages:17
+#: ../weblets/data/messages:19 ../wifi/data/messages:19
 msgid "Desklet"
 msgstr ""
 
 #: ../Clipper/data/messages:21 ../Composite-Manager/data/messages:17
-#: ../Disks/data/messages:47 ../Doncky/data/messages:19
+#: ../Disks/data/messages:41 ../Doncky/data/messages:19
 #: ../Folders/data/messages:33 ../GMenu/data/messages:21
-#: ../Impulse/data/messages:21 ../MeMenu/data/messages:15
-#: ../Messaging-Menu/data/messages:17 ../Network-Monitor/data/messages:21
+#: ../Impulse/data/messages:19 ../MeMenu/data/messages:15
+#: ../Messaging-Menu/data/messages:17 ../Network-Monitor/data/messages:23
 #: ../RSSreader/data/messages:23 ../Recent-Events/data/messages:21
-#: ../Status-Notifier/data/messages:21 ../System-Monitor/data/messages:19
-#: ../Toons/data/messages:19 ../Xgamma/data/messages:23
-#: ../alsaMixer/data/messages:19 ../clock/data/messages:21
+#: ../Status-Notifier/data/messages:21 ../System-Monitor/data/messages:21
+#: ../Toons/data/messages:21 ../Xgamma/data/messages:23
+#: ../alsaMixer/data/messages:19 ../clock/data/messages:23
 #: ../dnd2share/data/messages:21 ../dustbin/data/messages:17
 #: ../keyboard-indicator/data/messages:17 ../logout/data/messages:21
 #: ../mail/data/messages:17 ../musicPlayer/data/messages:19
-#: ../netspeed/data/messages:17 ../powermanager/data/messages:21
+#: ../netspeed/data/messages:17 ../powermanager/data/messages:23
 #: ../quick-browser/data/messages:23 ../shortcuts/data/messages:21
-#: ../showDesktop/data/messages:25 ../slider/data/messages:19
+#: ../showDesktop/data/messages:25 ../slider/data/messages:21
 #: ../stack/data/messages:23 ../switcher/data/messages:21
 #: ../systray/data/messages:21 ../template/data/messages:21
 #: ../terminal/data/messages:21 ../tomboy/data/messages:31
 #: ../weather/data/messages:19 ../weblets/data/messages:21
-#: ../wifi/data/messages:19
+#: ../wifi/data/messages:21
 msgid "Position"
 msgstr ""
 
 #: ../Clipper/data/messages:23 ../Composite-Manager/data/messages:19
-#: ../Disks/data/messages:49 ../Doncky/data/messages:21
+#: ../Disks/data/messages:43 ../Doncky/data/messages:21
 #: ../Folders/data/messages:35 ../GMenu/data/messages:23
-#: ../Impulse/data/messages:23 ../MeMenu/data/messages:17
-#: ../Messaging-Menu/data/messages:19 ../Network-Monitor/data/messages:23
+#: ../Impulse/data/messages:21 ../MeMenu/data/messages:17
+#: ../Messaging-Menu/data/messages:19 ../Network-Monitor/data/messages:25
 #: ../RSSreader/data/messages:25 ../Recent-Events/data/messages:23
-#: ../Status-Notifier/data/messages:23 ../System-Monitor/data/messages:21
-#: ../Toons/data/messages:21 ../Xgamma/data/messages:25
-#: ../alsaMixer/data/messages:21 ../clock/data/messages:23
+#: ../Status-Notifier/data/messages:23 ../System-Monitor/data/messages:23
+#: ../Toons/data/messages:23 ../Xgamma/data/messages:25
+#: ../alsaMixer/data/messages:21 ../clock/data/messages:25
 #: ../dnd2share/data/messages:23 ../dustbin/data/messages:19
 #: ../keyboard-indicator/data/messages:19 ../logout/data/messages:23
 #: ../mail/data/messages:19 ../musicPlayer/data/messages:21
-#: ../netspeed/data/messages:19 ../powermanager/data/messages:23
+#: ../netspeed/data/messages:19 ../powermanager/data/messages:25
 #: ../quick-browser/data/messages:25 ../shortcuts/data/messages:23
-#: ../showDesktop/data/messages:27 ../slider/data/messages:21
+#: ../showDesktop/data/messages:27 ../slider/data/messages:23
 #: ../stack/data/messages:25 ../switcher/data/messages:23
 #: ../systray/data/messages:23 ../template/data/messages:23
 #: ../terminal/data/messages:23 ../tomboy/data/messages:33
 #: ../weather/data/messages:21 ../weblets/data/messages:23
-#: ../wifi/data/messages:21
+#: ../wifi/data/messages:23
 msgid ""
 "If locked, the desklet cannot be moved by simply dragging it with the left "
 "mouse button. It can still be moved with ALT + left-click."
 msgstr ""
 
 #: ../Clipper/data/messages:25 ../Composite-Manager/data/messages:21
-#: ../Disks/data/messages:51 ../Doncky/data/messages:23
+#: ../Disks/data/messages:45 ../Doncky/data/messages:23
 #: ../Folders/data/messages:37 ../GMenu/data/messages:25
-#: ../Impulse/data/messages:25 ../MeMenu/data/messages:19
-#: ../Messaging-Menu/data/messages:21 ../Network-Monitor/data/messages:25
+#: ../Impulse/data/messages:23 ../MeMenu/data/messages:19
+#: ../Messaging-Menu/data/messages:21 ../Network-Monitor/data/messages:27
 #: ../RSSreader/data/messages:27 ../Recent-Events/data/messages:25
-#: ../Status-Notifier/data/messages:25 ../System-Monitor/data/messages:23
-#: ../Toons/data/messages:23 ../Xgamma/data/messages:27
-#: ../alsaMixer/data/messages:23 ../clock/data/messages:25
+#: ../Status-Notifier/data/messages:25 ../System-Monitor/data/messages:25
+#: ../Toons/data/messages:25 ../Xgamma/data/messages:27
+#: ../alsaMixer/data/messages:23 ../clock/data/messages:27
 #: ../dnd2share/data/messages:25 ../dustbin/data/messages:21
 #: ../keyboard-indicator/data/messages:21 ../logout/data/messages:25
 #: ../mail/data/messages:21 ../musicPlayer/data/messages:23
-#: ../netspeed/data/messages:21 ../powermanager/data/messages:25
+#: ../netspeed/data/messages:21 ../powermanager/data/messages:27
 #: ../quick-browser/data/messages:27 ../shortcuts/data/messages:25
-#: ../showDesktop/data/messages:29 ../slider/data/messages:23
+#: ../showDesktop/data/messages:29 ../slider/data/messages:25
 #: ../stack/data/messages:27 ../switcher/data/messages:25
 #: ../systray/data/messages:25 ../template/data/messages:25
 #: ../terminal/data/messages:25 ../tomboy/data/messages:35
 #: ../weather/data/messages:23 ../weblets/data/messages:25
-#: ../wifi/data/messages:23
+#: ../wifi/data/messages:25
 msgid "Lock position?"
 msgstr ""
 
 #: ../Clipper/data/messages:27 ../Composite-Manager/data/messages:23
-#: ../Disks/data/messages:25 ../Doncky/data/messages:25
+#: ../Disks/data/messages:21 ../Doncky/data/messages:25
 #: ../Folders/data/messages:39 ../GMenu/data/messages:27
-#: ../Impulse/data/messages:27 ../MeMenu/data/messages:21
-#: ../Messaging-Menu/data/messages:23 ../Network-Monitor/data/messages:27
+#: ../Impulse/data/messages:25 ../MeMenu/data/messages:21
+#: ../Messaging-Menu/data/messages:23 ../Network-Monitor/data/messages:29
 #: ../RSSreader/data/messages:29 ../Recent-Events/data/messages:27
-#: ../Status-Notifier/data/messages:27 ../System-Monitor/data/messages:25
-#: ../Toons/data/messages:25 ../Xgamma/data/messages:29
-#: ../alsaMixer/data/messages:25 ../clock/data/messages:27
+#: ../Status-Notifier/data/messages:27 ../System-Monitor/data/messages:27
+#: ../Toons/data/messages:27 ../Xgamma/data/messages:29
+#: ../alsaMixer/data/messages:25 ../clock/data/messages:29
 #: ../dnd2share/data/messages:27 ../dustbin/data/messages:23
 #: ../keyboard-indicator/data/messages:23 ../logout/data/messages:27
 #: ../mail/data/messages:23 ../musicPlayer/data/messages:25
-#: ../netspeed/data/messages:23 ../powermanager/data/messages:27
+#: ../netspeed/data/messages:23 ../powermanager/data/messages:29
 #: ../quick-browser/data/messages:29 ../shortcuts/data/messages:27
-#: ../showDesktop/data/messages:31 ../slider/data/messages:25
+#: ../showDesktop/data/messages:31 ../slider/data/messages:27
 #: ../stack/data/messages:29 ../switcher/data/messages:27
 #: ../template/data/messages:27 ../terminal/data/messages:27
 #: ../tomboy/data/messages:37 ../weather/data/messages:25
-#: ../weblets/data/messages:27 ../wifi/data/messages:25
+#: ../weblets/data/messages:27 ../wifi/data/messages:27
 msgid ""
 "Depending on your WindowManager, you may be able to resize this with ALT + "
 "middle-click or ALT + left-click."
 msgstr ""
 
 #: ../Clipper/data/messages:29 ../Composite-Manager/data/messages:25
-#: ../Disks/data/messages:27 ../Doncky/data/messages:27
+#: ../Disks/data/messages:23 ../Doncky/data/messages:27
 #: ../Folders/data/messages:41 ../GMenu/data/messages:29
-#: ../Impulse/data/messages:29 ../MeMenu/data/messages:23
-#: ../Messaging-Menu/data/messages:25 ../Network-Monitor/data/messages:29
+#: ../Impulse/data/messages:27 ../MeMenu/data/messages:23
+#: ../Messaging-Menu/data/messages:25 ../Network-Monitor/data/messages:31
 #: ../RSSreader/data/messages:31 ../Recent-Events/data/messages:29
-#: ../Status-Notifier/data/messages:29 ../System-Monitor/data/messages:27
-#: ../Toons/data/messages:27 ../Xgamma/data/messages:31
-#: ../alsaMixer/data/messages:27 ../clock/data/messages:29
+#: ../Status-Notifier/data/messages:29 ../System-Monitor/data/messages:29
+#: ../Toons/data/messages:29 ../Xgamma/data/messages:31
+#: ../alsaMixer/data/messages:27 ../clock/data/messages:31
 #: ../dnd2share/data/messages:29 ../dustbin/data/messages:25
 #: ../keyboard-indicator/data/messages:25 ../logout/data/messages:29
 #: ../mail/data/messages:25 ../musicPlayer/data/messages:27
-#: ../netspeed/data/messages:25 ../powermanager/data/messages:29
+#: ../netspeed/data/messages:25 ../powermanager/data/messages:31
 #: ../quick-browser/data/messages:31 ../shortcuts/data/messages:29
-#: ../showDesktop/data/messages:33 ../slider/data/messages:27
+#: ../showDesktop/data/messages:33 ../slider/data/messages:29
 #: ../stack/data/messages:31 ../switcher/data/messages:29
 #: ../template/data/messages:29 ../terminal/data/messages:29
 #: ../tomboy/data/messages:39 ../weather/data/messages:27
-#: ../weblets/data/messages:29 ../wifi/data/messages:27
+#: ../weblets/data/messages:29 ../wifi/data/messages:29
 msgid "Desklet dimensions (width x height):"
 msgstr ""
 
-#: ../Clipper/data/messages:31 ../Disks/data/messages:53
+#: ../Clipper/data/messages:31 ../Disks/data/messages:47
 #: ../Doncky/data/messages:29 ../Folders/data/messages:43
 #: ../GMenu/data/messages:31 ../MeMenu/data/messages:25
-#: ../Messaging-Menu/data/messages:27 ../Network-Monitor/data/messages:31
-#: ../RSSreader/data/messages:33 ../System-Monitor/data/messages:29
-#: ../Toons/data/messages:29 ../Xgamma/data/messages:33
+#: ../Messaging-Menu/data/messages:27 ../Network-Monitor/data/messages:33
+#: ../RSSreader/data/messages:33 ../System-Monitor/data/messages:31
+#: ../Toons/data/messages:31 ../Xgamma/data/messages:33
 #: ../dnd2share/data/messages:31 ../keyboard-indicator/data/messages:27
 #: ../logout/data/messages:31 ../mail/data/messages:27
-#: ../musicPlayer/data/messages:29 ../powermanager/data/messages:31
+#: ../musicPlayer/data/messages:29 ../powermanager/data/messages:33
 #: ../quick-browser/data/messages:33 ../shortcuts/data/messages:31
-#: ../showDesktop/data/messages:35 ../slider/data/messages:29
+#: ../showDesktop/data/messages:35 ../slider/data/messages:31
 #: ../stack/data/messages:33 ../terminal/data/messages:31
 #: ../weather/data/messages:29 ../weblets/data/messages:31
-#: ../wifi/data/messages:29
+#: ../wifi/data/messages:31
 msgid ""
 "Depending on your WindowManager, you may be able to move this with ALT + "
 "left-click."
 msgstr ""
 
 #: ../Clipper/data/messages:33 ../Composite-Manager/data/messages:29
-#: ../Disks/data/messages:55 ../Doncky/data/messages:31
+#: ../Disks/data/messages:49 ../Doncky/data/messages:31
 #: ../Folders/data/messages:45 ../GMenu/data/messages:33
-#: ../Impulse/data/messages:33 ../MeMenu/data/messages:27
-#: ../Messaging-Menu/data/messages:29 ../Network-Monitor/data/messages:33
+#: ../Impulse/data/messages:31 ../MeMenu/data/messages:27
+#: ../Messaging-Menu/data/messages:29 ../Network-Monitor/data/messages:35
 #: ../RSSreader/data/messages:35 ../Recent-Events/data/messages:33
-#: ../Status-Notifier/data/messages:33 ../System-Monitor/data/messages:31
-#: ../Toons/data/messages:31 ../Xgamma/data/messages:35
-#: ../alsaMixer/data/messages:31 ../clock/data/messages:33
+#: ../Status-Notifier/data/messages:33 ../System-Monitor/data/messages:33
+#: ../Toons/data/messages:33 ../Xgamma/data/messages:35
+#: ../alsaMixer/data/messages:31 ../clock/data/messages:35
 #: ../dnd2share/data/messages:33 ../dustbin/data/messages:29
 #: ../keyboard-indicator/data/messages:29 ../logout/data/messages:33
 #: ../mail/data/messages:29 ../musicPlayer/data/messages:31
-#: ../netspeed/data/messages:29 ../powermanager/data/messages:33
+#: ../netspeed/data/messages:29 ../powermanager/data/messages:35
 #: ../quick-browser/data/messages:35 ../shortcuts/data/messages:33
-#: ../showDesktop/data/messages:37 ../slider/data/messages:31
+#: ../showDesktop/data/messages:37 ../slider/data/messages:33
 #: ../stack/data/messages:35 ../switcher/data/messages:31
 #: ../systray/data/messages:29 ../template/data/messages:33
 #: ../terminal/data/messages:33 ../tomboy/data/messages:43
 #: ../weather/data/messages:31 ../weblets/data/messages:33
-#: ../wifi/data/messages:31
+#: ../wifi/data/messages:33
 msgid "Desklet position (x, y):"
 msgstr ""
 
 #: ../Clipper/data/messages:35 ../Composite-Manager/data/messages:31
-#: ../Disks/data/messages:57 ../Doncky/data/messages:33
+#: ../Disks/data/messages:51 ../Doncky/data/messages:33
 #: ../Folders/data/messages:47 ../GMenu/data/messages:35
-#: ../Impulse/data/messages:35 ../MeMenu/data/messages:29
-#: ../Messaging-Menu/data/messages:31 ../Network-Monitor/data/messages:35
+#: ../Impulse/data/messages:33 ../MeMenu/data/messages:29
+#: ../Messaging-Menu/data/messages:31 ../Network-Monitor/data/messages:37
 #: ../RSSreader/data/messages:37 ../Recent-Events/data/messages:35
-#: ../Status-Notifier/data/messages:35 ../System-Monitor/data/messages:33
-#: ../Toons/data/messages:33 ../Xgamma/data/messages:37
-#: ../alsaMixer/data/messages:33 ../clock/data/messages:35
+#: ../Status-Notifier/data/messages:35 ../System-Monitor/data/messages:35
+#: ../Toons/data/messages:35 ../Xgamma/data/messages:37
+#: ../alsaMixer/data/messages:33 ../clock/data/messages:37
 #: ../dustbin/data/messages:31 ../keyboard-indicator/data/messages:31
 #: ../logout/data/messages:35 ../mail/data/messages:31
 #: ../musicPlayer/data/messages:33 ../netspeed/data/messages:31
-#: ../powermanager/data/messages:35 ../quick-browser/data/messages:37
+#: ../powermanager/data/messages:37 ../quick-browser/data/messages:37
 #: ../shortcuts/data/messages:35 ../showDesktop/data/messages:39
-#: ../slider/data/messages:33 ../stack/data/messages:37
+#: ../slider/data/messages:35 ../stack/data/messages:37
 #: ../template/data/messages:35 ../terminal/data/messages:35
 #: ../tomboy/data/messages:45 ../weather/data/messages:33
-#: ../weblets/data/messages:35 ../wifi/data/messages:33
+#: ../weblets/data/messages:35 ../wifi/data/messages:35
 msgid ""
 "You can quickly rotate the desklet with the mouse, by dragging the little "
 "buttons on its left and top sides."
 msgstr ""
 
 #: ../Clipper/data/messages:37 ../Composite-Manager/data/messages:33
-#: ../Disks/data/messages:59 ../Doncky/data/messages:35
+#: ../Disks/data/messages:53 ../Doncky/data/messages:35
 #: ../Folders/data/messages:49 ../GMenu/data/messages:37
-#: ../Impulse/data/messages:37 ../MeMenu/data/messages:31
-#: ../Messaging-Menu/data/messages:33 ../Network-Monitor/data/messages:37
+#: ../Impulse/data/messages:35 ../MeMenu/data/messages:31
+#: ../Messaging-Menu/data/messages:33 ../Network-Monitor/data/messages:39
 #: ../RSSreader/data/messages:39 ../Recent-Events/data/messages:37
-#: ../Status-Notifier/data/messages:37 ../System-Monitor/data/messages:35
-#: ../Toons/data/messages:35 ../Xgamma/data/messages:39
-#: ../alsaMixer/data/messages:35 ../clock/data/messages:37
+#: ../Status-Notifier/data/messages:37 ../System-Monitor/data/messages:37
+#: ../Toons/data/messages:37 ../Xgamma/data/messages:39
+#: ../alsaMixer/data/messages:35 ../clock/data/messages:39
 #: ../dustbin/data/messages:33 ../keyboard-indicator/data/messages:33
 #: ../logout/data/messages:37 ../mail/data/messages:33
 #: ../musicPlayer/data/messages:35 ../netspeed/data/messages:33
-#: ../powermanager/data/messages:37 ../quick-browser/data/messages:39
+#: ../powermanager/data/messages:39 ../quick-browser/data/messages:39
 #: ../shortcuts/data/messages:37 ../showDesktop/data/messages:41
-#: ../slider/data/messages:35 ../stack/data/messages:39
+#: ../slider/data/messages:37 ../stack/data/messages:39
 #: ../template/data/messages:37 ../terminal/data/messages:37
 #: ../tomboy/data/messages:47 ../weather/data/messages:35
-#: ../weblets/data/messages:37 ../wifi/data/messages:35
+#: ../weblets/data/messages:37 ../wifi/data/messages:37
 msgid "Rotation:"
 msgstr ""
 
 #: ../Clipper/data/messages:39 ../Composite-Manager/data/messages:35
-#: ../Disks/data/messages:29 ../Doncky/data/messages:37
-#: ../Folders/data/messages:51 ../GMenu/data/messages:39
-#: ../Impulse/data/messages:39 ../MeMenu/data/messages:33
-#: ../Messaging-Menu/data/messages:35 ../Network-Monitor/data/messages:39
-#: ../RSSreader/data/messages:41 ../Recent-Events/data/messages:39
-#: ../Status-Notifier/data/messages:39 ../System-Monitor/data/messages:37
-#: ../Toons/data/messages:37 ../Xgamma/data/messages:41
-#: ../alsaMixer/data/messages:37 ../clock/data/messages:39
-#: ../dnd2share/data/messages:35 ../dustbin/data/messages:35
-#: ../keyboard-indicator/data/messages:35 ../logout/data/messages:39
-#: ../mail/data/messages:35 ../musicPlayer/data/messages:37
-#: ../netspeed/data/messages:35 ../powermanager/data/messages:39
-#: ../quick-browser/data/messages:41 ../shortcuts/data/messages:39
-#: ../showDesktop/data/messages:43 ../slider/data/messages:37
-#: ../stack/data/messages:41 ../switcher/data/messages:33
-#: ../systray/data/messages:31 ../template/data/messages:39
-#: ../terminal/data/messages:39 ../tomboy/data/messages:49
-#: ../weather/data/messages:37 ../weblets/data/messages:39
-#: ../wifi/data/messages:37
+#: ../Doncky/data/messages:37 ../Folders/data/messages:51
+#: ../GMenu/data/messages:39 ../Impulse/data/messages:37
+#: ../MeMenu/data/messages:33 ../Messaging-Menu/data/messages:35
+#: ../Network-Monitor/data/messages:41 ../RSSreader/data/messages:41
+#: ../Recent-Events/data/messages:39 ../Status-Notifier/data/messages:39
+#: ../System-Monitor/data/messages:39 ../Toons/data/messages:39
+#: ../Xgamma/data/messages:41 ../alsaMixer/data/messages:37
+#: ../clock/data/messages:41 ../dnd2share/data/messages:35
+#: ../dustbin/data/messages:35 ../keyboard-indicator/data/messages:35
+#: ../logout/data/messages:39 ../mail/data/messages:35
+#: ../musicPlayer/data/messages:37 ../netspeed/data/messages:35
+#: ../powermanager/data/messages:41 ../quick-browser/data/messages:41
+#: ../shortcuts/data/messages:39 ../showDesktop/data/messages:43
+#: ../slider/data/messages:39 ../stack/data/messages:41
+#: ../switcher/data/messages:33 ../systray/data/messages:31
+#: ../template/data/messages:39 ../terminal/data/messages:39
+#: ../tomboy/data/messages:49 ../weather/data/messages:37
+#: ../weblets/data/messages:39 ../wifi/data/messages:39
 msgid "Visibility"
 msgstr ""
 
 #: ../Clipper/data/messages:41 ../Composite-Manager/data/messages:37
-#: ../Disks/data/messages:23 ../Doncky/data/messages:39
+#: ../Disks/data/messages:19 ../Doncky/data/messages:39
 #: ../Folders/data/messages:53 ../GMenu/data/messages:41
-#: ../Impulse/data/messages:41 ../MeMenu/data/messages:35
-#: ../Messaging-Menu/data/messages:37 ../Network-Monitor/data/messages:41
+#: ../Impulse/data/messages:39 ../MeMenu/data/messages:35
+#: ../Messaging-Menu/data/messages:37 ../Network-Monitor/data/messages:43
 #: ../RSSreader/data/messages:43 ../Recent-Events/data/messages:41
 #: ../Scooby-Do/data/messages:25 ../Status-Notifier/data/messages:41
-#: ../System-Monitor/data/messages:39 ../Toons/data/messages:39
+#: ../System-Monitor/data/messages:41 ../Toons/data/messages:41
 #: ../Xgamma/data/messages:43 ../alsaMixer/data/messages:39
-#: ../clock/data/messages:41 ../dnd2share/data/messages:37
+#: ../clock/data/messages:43 ../dnd2share/data/messages:37
 #: ../dustbin/data/messages:37 ../keyboard-indicator/data/messages:37
 #: ../logout/data/messages:41 ../mail/data/messages:37
 #: ../musicPlayer/data/messages:39 ../netspeed/data/messages:37
-#: ../powermanager/data/messages:41 ../quick-browser/data/messages:43
+#: ../powermanager/data/messages:43 ../quick-browser/data/messages:43
 #: ../shortcuts/data/messages:41 ../showDesktop/data/messages:45
-#: ../slider/data/messages:39 ../stack/data/messages:43
+#: ../slider/data/messages:41 ../stack/data/messages:43
 #: ../switcher/data/messages:35 ../systray/data/messages:33
 #: ../template/data/messages:41 ../terminal/data/messages:41
 #: ../tomboy/data/messages:51 ../weather/data/messages:39
-#: ../weblets/data/messages:41 ../wifi/data/messages:39
+#: ../weblets/data/messages:41 ../wifi/data/messages:41
 msgid "Is detached from the dock"
 msgstr ""
 
 #: ../Clipper/data/messages:43 ../Composite-Manager/data/messages:39
-#: ../Disks/data/messages:31 ../Doncky/data/messages:41
+#: ../Disks/data/messages:25 ../Doncky/data/messages:41
 #: ../Folders/data/messages:55 ../GMenu/data/messages:43
-#: ../Impulse/data/messages:43 ../MeMenu/data/messages:37
-#: ../Messaging-Menu/data/messages:39 ../Network-Monitor/data/messages:43
+#: ../Impulse/data/messages:41 ../MeMenu/data/messages:37
+#: ../Messaging-Menu/data/messages:39 ../Network-Monitor/data/messages:45
 #: ../RSSreader/data/messages:45 ../Recent-Events/data/messages:43
-#: ../Status-Notifier/data/messages:43 ../System-Monitor/data/messages:41
-#: ../Toons/data/messages:41 ../Xgamma/data/messages:45
-#: ../alsaMixer/data/messages:41 ../clock/data/messages:43
+#: ../Status-Notifier/data/messages:43 ../System-Monitor/data/messages:43
+#: ../Toons/data/messages:43 ../Xgamma/data/messages:45
+#: ../alsaMixer/data/messages:41 ../clock/data/messages:45
 #: ../dnd2share/data/messages:39 ../dustbin/data/messages:39
 #: ../keyboard-indicator/data/messages:39 ../logout/data/messages:43
 #: ../mail/data/messages:39 ../musicPlayer/data/messages:41
-#: ../netspeed/data/messages:39 ../powermanager/data/messages:43
+#: ../netspeed/data/messages:39 ../powermanager/data/messages:45
 #: ../quick-browser/data/messages:45 ../shortcuts/data/messages:43
-#: ../showDesktop/data/messages:47 ../slider/data/messages:41
+#: ../showDesktop/data/messages:47 ../slider/data/messages:43
 #: ../stack/data/messages:45 ../systray/data/messages:35
 #: ../template/data/messages:43 ../terminal/data/messages:43
 #: ../tomboy/data/messages:53 ../weather/data/messages:41
-#: ../weblets/data/messages:43 ../wifi/data/messages:41
+#: ../weblets/data/messages:43 ../wifi/data/messages:43
 msgid ""
 "for CompizFusion's \"widget layer\", set behaviour in Compiz to: "
-"(class=Cairo-dock & type=utility)"
+"(class=Cairo-dock & type=Utility)"
 msgstr ""
 
 #: ../Clipper/data/messages:45 ../Composite-Manager/data/messages:41
-#: ../Disks/data/messages:33 ../Doncky/data/messages:43
+#: ../Disks/data/messages:27 ../Doncky/data/messages:43
 #: ../Folders/data/messages:57 ../GMenu/data/messages:45
-#: ../Impulse/data/messages:45 ../MeMenu/data/messages:39
-#: ../Messaging-Menu/data/messages:41 ../Network-Monitor/data/messages:45
+#: ../Impulse/data/messages:43 ../MeMenu/data/messages:39
+#: ../Messaging-Menu/data/messages:41 ../Network-Monitor/data/messages:47
 #: ../RSSreader/data/messages:47 ../Recent-Events/data/messages:45
-#: ../Status-Notifier/data/messages:45 ../System-Monitor/data/messages:43
-#: ../Toons/data/messages:43 ../Xgamma/data/messages:47
-#: ../alsaMixer/data/messages:43 ../clock/data/messages:45
+#: ../Status-Notifier/data/messages:45 ../System-Monitor/data/messages:45
+#: ../Toons/data/messages:45 ../Xgamma/data/messages:47
+#: ../alsaMixer/data/messages:43 ../clock/data/messages:47
 #: ../dnd2share/data/messages:41 ../dustbin/data/messages:41
 #: ../keyboard-indicator/data/messages:41 ../logout/data/messages:45
 #: ../mail/data/messages:41 ../musicPlayer/data/messages:43
-#: ../netspeed/data/messages:41 ../powermanager/data/messages:45
+#: ../netspeed/data/messages:41 ../powermanager/data/messages:47
 #: ../quick-browser/data/messages:47 ../shortcuts/data/messages:45
-#: ../showDesktop/data/messages:49 ../slider/data/messages:43
+#: ../showDesktop/data/messages:49 ../slider/data/messages:45
 #: ../stack/data/messages:47 ../switcher/data/messages:37
 #: ../systray/data/messages:37 ../template/data/messages:45
 #: ../terminal/data/messages:45 ../tomboy/data/messages:55
 #: ../weather/data/messages:43 ../weblets/data/messages:45
-#: ../wifi/data/messages:43
+#: ../wifi/data/messages:45
 msgid "Visibility:"
 msgstr ""
 
 #: ../Clipper/data/messages:49 ../Composite-Manager/data/messages:45
-#: ../Disks/data/messages:37 ../Doncky/data/messages:47
+#: ../Disks/data/messages:31 ../Doncky/data/messages:47
 #: ../Folders/data/messages:61 ../GMenu/data/messages:49
-#: ../Impulse/data/messages:49 ../MeMenu/data/messages:43
-#: ../Messaging-Menu/data/messages:45 ../Network-Monitor/data/messages:49
+#: ../Impulse/data/messages:47 ../MeMenu/data/messages:43
+#: ../Messaging-Menu/data/messages:45 ../Network-Monitor/data/messages:51
 #: ../RSSreader/data/messages:51 ../Recent-Events/data/messages:49
-#: ../Status-Notifier/data/messages:49 ../System-Monitor/data/messages:47
-#: ../Toons/data/messages:47 ../Xgamma/data/messages:51
-#: ../alsaMixer/data/messages:47 ../clock/data/messages:49
+#: ../Status-Notifier/data/messages:49 ../System-Monitor/data/messages:49
+#: ../Toons/data/messages:49 ../Xgamma/data/messages:51
+#: ../alsaMixer/data/messages:47 ../clock/data/messages:51
 #: ../dnd2share/data/messages:45 ../dustbin/data/messages:45
 #: ../keyboard-indicator/data/messages:45 ../logout/data/messages:49
 #: ../mail/data/messages:45 ../musicPlayer/data/messages:47
-#: ../netspeed/data/messages:45 ../powermanager/data/messages:49
+#: ../netspeed/data/messages:45 ../powermanager/data/messages:51
 #: ../quick-browser/data/messages:51 ../shortcuts/data/messages:49
-#: ../showDesktop/data/messages:53 ../slider/data/messages:47
+#: ../showDesktop/data/messages:53 ../slider/data/messages:49
 #: ../stack/data/messages:51 ../switcher/data/messages:41
 #: ../systray/data/messages:41 ../template/data/messages:49
 #: ../terminal/data/messages:49 ../tomboy/data/messages:59
 #: ../weather/data/messages:47 ../weblets/data/messages:49
-#: ../wifi/data/messages:47
+#: ../wifi/data/messages:49
 msgid "Keep above"
 msgstr ""
 
 #: ../Clipper/data/messages:51 ../Composite-Manager/data/messages:47
-#: ../Disks/data/messages:39 ../Doncky/data/messages:49
+#: ../Disks/data/messages:33 ../Doncky/data/messages:49
 #: ../Folders/data/messages:63 ../GMenu/data/messages:51
-#: ../Impulse/data/messages:51 ../MeMenu/data/messages:45
-#: ../Messaging-Menu/data/messages:47 ../Network-Monitor/data/messages:51
+#: ../Impulse/data/messages:49 ../MeMenu/data/messages:45
+#: ../Messaging-Menu/data/messages:47 ../Network-Monitor/data/messages:53
 #: ../RSSreader/data/messages:53 ../Recent-Events/data/messages:51
-#: ../Status-Notifier/data/messages:51 ../System-Monitor/data/messages:49
-#: ../Toons/data/messages:49 ../Xgamma/data/messages:53
-#: ../alsaMixer/data/messages:49 ../clock/data/messages:51
+#: ../Status-Notifier/data/messages:51 ../System-Monitor/data/messages:51
+#: ../Toons/data/messages:51 ../Xgamma/data/messages:53
+#: ../alsaMixer/data/messages:49 ../clock/data/messages:53
 #: ../dnd2share/data/messages:47 ../dustbin/data/messages:47
 #: ../keyboard-indicator/data/messages:47 ../logout/data/messages:51
 #: ../mail/data/messages:47 ../musicPlayer/data/messages:49
-#: ../netspeed/data/messages:47 ../powermanager/data/messages:51
+#: ../netspeed/data/messages:47 ../powermanager/data/messages:53
 #: ../quick-browser/data/messages:53 ../shortcuts/data/messages:51
-#: ../showDesktop/data/messages:55 ../slider/data/messages:49
+#: ../showDesktop/data/messages:55 ../slider/data/messages:51
 #: ../stack/data/messages:53 ../switcher/data/messages:43
 #: ../systray/data/messages:43 ../template/data/messages:51
 #: ../terminal/data/messages:51 ../tomboy/data/messages:61
 #: ../weather/data/messages:49 ../weblets/data/messages:51
-#: ../wifi/data/messages:49
+#: ../wifi/data/messages:51
 msgid "Keep below"
 msgstr ""
 
 #: ../Clipper/data/messages:53 ../Composite-Manager/data/messages:49
-#: ../Disks/data/messages:41 ../Doncky/data/messages:51
+#: ../Disks/data/messages:35 ../Doncky/data/messages:51
 #: ../Folders/data/messages:65 ../GMenu/data/messages:53
-#: ../Impulse/data/messages:53 ../MeMenu/data/messages:47
-#: ../Messaging-Menu/data/messages:49 ../Network-Monitor/data/messages:53
+#: ../Impulse/data/messages:51 ../MeMenu/data/messages:47
+#: ../Messaging-Menu/data/messages:49 ../Network-Monitor/data/messages:55
 #: ../RSSreader/data/messages:55 ../Recent-Events/data/messages:53
-#: ../Status-Notifier/data/messages:53 ../System-Monitor/data/messages:51
-#: ../Toons/data/messages:51 ../Xgamma/data/messages:55
-#: ../alsaMixer/data/messages:51 ../clock/data/messages:53
+#: ../Status-Notifier/data/messages:53 ../System-Monitor/data/messages:53
+#: ../Toons/data/messages:53 ../Xgamma/data/messages:55
+#: ../alsaMixer/data/messages:51 ../clock/data/messages:55
 #: ../dnd2share/data/messages:49 ../dustbin/data/messages:49
 #: ../keyboard-indicator/data/messages:49 ../logout/data/messages:53
 #: ../mail/data/messages:49 ../musicPlayer/data/messages:51
-#: ../netspeed/data/messages:49 ../powermanager/data/messages:53
+#: ../netspeed/data/messages:49 ../powermanager/data/messages:55
 #: ../quick-browser/data/messages:55 ../shortcuts/data/messages:53
-#: ../showDesktop/data/messages:57 ../slider/data/messages:51
+#: ../showDesktop/data/messages:57 ../slider/data/messages:53
 #: ../stack/data/messages:55 ../switcher/data/messages:45
 #: ../systray/data/messages:45 ../template/data/messages:53
 #: ../terminal/data/messages:53 ../tomboy/data/messages:63
 #: ../weather/data/messages:51 ../weblets/data/messages:53
-#: ../wifi/data/messages:51
+#: ../wifi/data/messages:53
 msgid "Keep on widget layer"
 msgstr ""
 
 #: ../Clipper/data/messages:55 ../Composite-Manager/data/messages:51
-#: ../Disks/data/messages:43 ../Doncky/data/messages:53
+#: ../Disks/data/messages:37 ../Doncky/data/messages:53
 #: ../Folders/data/messages:67 ../GMenu/data/messages:55
-#: ../Impulse/data/messages:55 ../MeMenu/data/messages:49
-#: ../Messaging-Menu/data/messages:51 ../Network-Monitor/data/messages:55
+#: ../Impulse/data/messages:53 ../MeMenu/data/messages:49
+#: ../Messaging-Menu/data/messages:51 ../Network-Monitor/data/messages:57
 #: ../RSSreader/data/messages:57 ../Recent-Events/data/messages:55
-#: ../Status-Notifier/data/messages:55 ../System-Monitor/data/messages:53
-#: ../Toons/data/messages:53 ../Xgamma/data/messages:57
-#: ../alsaMixer/data/messages:53 ../clock/data/messages:55
+#: ../Status-Notifier/data/messages:55 ../System-Monitor/data/messages:55
+#: ../Toons/data/messages:55 ../Xgamma/data/messages:57
+#: ../alsaMixer/data/messages:53 ../clock/data/messages:57
 #: ../dnd2share/data/messages:51 ../dustbin/data/messages:51
 #: ../keyboard-indicator/data/messages:51 ../logout/data/messages:55
 #: ../mail/data/messages:51 ../musicPlayer/data/messages:53
-#: ../netspeed/data/messages:51 ../powermanager/data/messages:55
+#: ../netspeed/data/messages:51 ../powermanager/data/messages:57
 #: ../quick-browser/data/messages:57 ../shortcuts/data/messages:55
-#: ../showDesktop/data/messages:59 ../slider/data/messages:53
+#: ../showDesktop/data/messages:59 ../slider/data/messages:55
 #: ../stack/data/messages:57 ../switcher/data/messages:47
 #: ../systray/data/messages:47 ../template/data/messages:55
 #: ../terminal/data/messages:55 ../tomboy/data/messages:65
 #: ../weather/data/messages:53 ../weblets/data/messages:55
-#: ../wifi/data/messages:53
+#: ../wifi/data/messages:55
 msgid "Reserve space"
 msgstr ""
 
 #: ../Clipper/data/messages:57 ../Composite-Manager/data/messages:53
-#: ../Disks/data/messages:45 ../Doncky/data/messages:55
+#: ../Disks/data/messages:39 ../Doncky/data/messages:55
 #: ../Folders/data/messages:69 ../GMenu/data/messages:57
-#: ../Impulse/data/messages:57 ../MeMenu/data/messages:51
-#: ../Messaging-Menu/data/messages:53 ../Network-Monitor/data/messages:57
+#: ../Impulse/data/messages:55 ../MeMenu/data/messages:51
+#: ../Messaging-Menu/data/messages:53 ../Network-Monitor/data/messages:59
 #: ../RSSreader/data/messages:59 ../Recent-Events/data/messages:57
-#: ../Status-Notifier/data/messages:57 ../System-Monitor/data/messages:55
-#: ../Toons/data/messages:55 ../Xgamma/data/messages:59
-#: ../alsaMixer/data/messages:55 ../clock/data/messages:57
+#: ../Status-Notifier/data/messages:57 ../System-Monitor/data/messages:57
+#: ../Toons/data/messages:57 ../Xgamma/data/messages:59
+#: ../alsaMixer/data/messages:55 ../clock/data/messages:59
 #: ../dnd2share/data/messages:53 ../dustbin/data/messages:53
 #: ../keyboard-indicator/data/messages:53 ../logout/data/messages:57
 #: ../mail/data/messages:53 ../musicPlayer/data/messages:55
-#: ../netspeed/data/messages:53 ../powermanager/data/messages:57
+#: ../netspeed/data/messages:53 ../powermanager/data/messages:59
 #: ../quick-browser/data/messages:59 ../shortcuts/data/messages:57
-#: ../showDesktop/data/messages:61 ../slider/data/messages:55
+#: ../showDesktop/data/messages:61 ../slider/data/messages:57
 #: ../stack/data/messages:59 ../switcher/data/messages:49
 #: ../systray/data/messages:49 ../template/data/messages:57
 #: ../terminal/data/messages:57 ../tomboy/data/messages:67
 #: ../weather/data/messages:55 ../weblets/data/messages:57
-#: ../wifi/data/messages:55
+#: ../wifi/data/messages:57
 msgid "Should be visible on all desktops?"
 msgstr ""
 
 #: ../Clipper/data/messages:59 ../Composite-Manager/data/messages:55
-#: ../Disks/data/messages:61 ../Doncky/data/messages:57
+#: ../Disks/data/messages:55 ../Doncky/data/messages:57
 #: ../Folders/data/messages:71 ../GMenu/data/messages:59
-#: ../Impulse/data/messages:59 ../MeMenu/data/messages:53
-#: ../Messaging-Menu/data/messages:55 ../Network-Monitor/data/messages:59
+#: ../Impulse/data/messages:57 ../MeMenu/data/messages:53
+#: ../Messaging-Menu/data/messages:55 ../Network-Monitor/data/messages:61
 #: ../RSSreader/data/messages:61 ../Recent-Events/data/messages:59
-#: ../Status-Notifier/data/messages:59 ../System-Monitor/data/messages:57
-#: ../Toons/data/messages:57 ../Xgamma/data/messages:61
-#: ../alsaMixer/data/messages:57 ../clock/data/messages:59
+#: ../Status-Notifier/data/messages:59 ../System-Monitor/data/messages:59
+#: ../Toons/data/messages:59 ../Xgamma/data/messages:61
+#: ../alsaMixer/data/messages:57 ../clock/data/messages:61
 #: ../dnd2share/data/messages:55 ../dustbin/data/messages:55
 #: ../keyboard-indicator/data/messages:55 ../logout/data/messages:59
 #: ../mail/data/messages:55 ../musicPlayer/data/messages:57
-#: ../netspeed/data/messages:55 ../powermanager/data/messages:59
+#: ../netspeed/data/messages:55 ../powermanager/data/messages:61
 #: ../quick-browser/data/messages:61 ../shortcuts/data/messages:59
-#: ../showDesktop/data/messages:63 ../slider/data/messages:57
+#: ../showDesktop/data/messages:63 ../slider/data/messages:59
 #: ../stack/data/messages:61 ../switcher/data/messages:51
 #: ../systray/data/messages:51 ../template/data/messages:59
 #: ../terminal/data/messages:59 ../tomboy/data/messages:69
 #: ../weather/data/messages:57 ../weblets/data/messages:59
-#: ../wifi/data/messages:57
+#: ../wifi/data/messages:59
 msgid "Decorations"
 msgstr ""
 
 #: ../Clipper/data/messages:61 ../Composite-Manager/data/messages:57
-#: ../Disks/data/messages:63 ../Doncky/data/messages:59
+#: ../Disks/data/messages:57 ../Doncky/data/messages:59
 #: ../Folders/data/messages:73 ../GMenu/data/messages:61
-#: ../Impulse/data/messages:61 ../MeMenu/data/messages:55
-#: ../Messaging-Menu/data/messages:57 ../Network-Monitor/data/messages:61
+#: ../Impulse/data/messages:59 ../MeMenu/data/messages:55
+#: ../Messaging-Menu/data/messages:57 ../Network-Monitor/data/messages:63
 #: ../RSSreader/data/messages:63 ../Recent-Events/data/messages:61
-#: ../Status-Notifier/data/messages:61 ../System-Monitor/data/messages:59
-#: ../Toons/data/messages:59 ../Xgamma/data/messages:63
-#: ../alsaMixer/data/messages:59 ../clock/data/messages:61
+#: ../Status-Notifier/data/messages:61 ../System-Monitor/data/messages:61
+#: ../Toons/data/messages:61 ../Xgamma/data/messages:63
+#: ../alsaMixer/data/messages:59 ../clock/data/messages:63
 #: ../dnd2share/data/messages:57 ../dustbin/data/messages:57
 #: ../keyboard-indicator/data/messages:57 ../logout/data/messages:61
 #: ../mail/data/messages:57 ../musicPlayer/data/messages:59
-#: ../netspeed/data/messages:57 ../powermanager/data/messages:61
+#: ../netspeed/data/messages:57 ../powermanager/data/messages:63
 #: ../quick-browser/data/messages:63 ../shortcuts/data/messages:61
-#: ../showDesktop/data/messages:65 ../slider/data/messages:59
+#: ../showDesktop/data/messages:65 ../slider/data/messages:61
 #: ../stack/data/messages:63 ../switcher/data/messages:53
 #: ../systray/data/messages:53 ../template/data/messages:61
 #: ../terminal/data/messages:61 ../tomboy/data/messages:71
 #: ../weather/data/messages:59 ../weblets/data/messages:61
-#: ../wifi/data/messages:59
+#: ../wifi/data/messages:61
 msgid "Choose 'Custom decorations' to define your own decorations below."
 msgstr ""
 
 #: ../Clipper/data/messages:63 ../Composite-Manager/data/messages:59
-#: ../Disks/data/messages:65 ../Doncky/data/messages:61
+#: ../Disks/data/messages:59 ../Doncky/data/messages:61
 #: ../Folders/data/messages:75 ../GMenu/data/messages:63
-#: ../Impulse/data/messages:63 ../MeMenu/data/messages:57
-#: ../Messaging-Menu/data/messages:59 ../Network-Monitor/data/messages:63
+#: ../Impulse/data/messages:61 ../MeMenu/data/messages:57
+#: ../Messaging-Menu/data/messages:59 ../Network-Monitor/data/messages:65
 #: ../RSSreader/data/messages:65 ../Recent-Events/data/messages:63
-#: ../Status-Notifier/data/messages:63 ../System-Monitor/data/messages:61
-#: ../Toons/data/messages:61 ../Xgamma/data/messages:65
-#: ../alsaMixer/data/messages:61 ../clock/data/messages:63
+#: ../Status-Notifier/data/messages:63 ../System-Monitor/data/messages:63
+#: ../Toons/data/messages:63 ../Xgamma/data/messages:65
+#: ../alsaMixer/data/messages:61 ../clock/data/messages:65
 #: ../dnd2share/data/messages:59 ../dustbin/data/messages:59
 #: ../keyboard-indicator/data/messages:59 ../logout/data/messages:63
 #: ../mail/data/messages:59 ../musicPlayer/data/messages:61
-#: ../netspeed/data/messages:59 ../powermanager/data/messages:63
+#: ../netspeed/data/messages:59 ../powermanager/data/messages:65
 #: ../quick-browser/data/messages:65 ../shortcuts/data/messages:63
-#: ../showDesktop/data/messages:67 ../slider/data/messages:61
+#: ../showDesktop/data/messages:67 ../slider/data/messages:63
 #: ../stack/data/messages:65 ../switcher/data/messages:55
 #: ../systray/data/messages:55 ../template/data/messages:63
 #: ../terminal/data/messages:63 ../tomboy/data/messages:73
 #: ../weather/data/messages:61 ../weblets/data/messages:63
-#: ../wifi/data/messages:61
+#: ../wifi/data/messages:63
 msgid "Choose a decoration theme for this desklet:"
 msgstr ""
 
 #: ../Clipper/data/messages:65 ../Composite-Manager/data/messages:61
-#: ../Disks/data/messages:69 ../Doncky/data/messages:63
+#: ../Disks/data/messages:61 ../Doncky/data/messages:63
 #: ../Folders/data/messages:77 ../GMenu/data/messages:65
-#: ../Impulse/data/messages:65 ../MeMenu/data/messages:59
-#: ../Messaging-Menu/data/messages:61 ../Network-Monitor/data/messages:65
+#: ../Impulse/data/messages:63 ../MeMenu/data/messages:59
+#: ../Messaging-Menu/data/messages:61 ../Network-Monitor/data/messages:67
 #: ../RSSreader/data/messages:67 ../Recent-Events/data/messages:65
-#: ../Status-Notifier/data/messages:65 ../System-Monitor/data/messages:63
-#: ../Toons/data/messages:63 ../Xgamma/data/messages:67
-#: ../alsaMixer/data/messages:63 ../clock/data/messages:65
+#: ../Status-Notifier/data/messages:65 ../System-Monitor/data/messages:65
+#: ../Toons/data/messages:65 ../Xgamma/data/messages:67
+#: ../alsaMixer/data/messages:63 ../clock/data/messages:67
 #: ../dnd2share/data/messages:61 ../dustbin/data/messages:61
 #: ../keyboard-indicator/data/messages:61 ../logout/data/messages:65
 #: ../mail/data/messages:61 ../musicPlayer/data/messages:63
-#: ../netspeed/data/messages:61 ../powermanager/data/messages:65
+#: ../netspeed/data/messages:61 ../powermanager/data/messages:67
 #: ../quick-browser/data/messages:67 ../shortcuts/data/messages:65
-#: ../showDesktop/data/messages:69 ../slider/data/messages:63
+#: ../showDesktop/data/messages:69 ../slider/data/messages:65
 #: ../stack/data/messages:67 ../switcher/data/messages:57
 #: ../systray/data/messages:57 ../template/data/messages:65
 #: ../terminal/data/messages:65 ../tomboy/data/messages:75
 #: ../weather/data/messages:63 ../weblets/data/messages:65
-#: ../wifi/data/messages:63
+#: ../wifi/data/messages:65
 msgid ""
 "Image to be displayed below drawings, e.g. a frame. Leave empty for no image."
 msgstr ""
 
 #: ../Clipper/data/messages:67 ../Composite-Manager/data/messages:63
-#: ../Disks/data/messages:71 ../Doncky/data/messages:65
+#: ../Disks/data/messages:63 ../Doncky/data/messages:65
 #: ../Folders/data/messages:79 ../GMenu/data/messages:67
-#: ../Impulse/data/messages:67 ../MeMenu/data/messages:61
-#: ../Messaging-Menu/data/messages:63 ../Network-Monitor/data/messages:67
+#: ../Impulse/data/messages:65 ../MeMenu/data/messages:61
+#: ../Messaging-Menu/data/messages:63 ../Network-Monitor/data/messages:69
 #: ../RSSreader/data/messages:69 ../Recent-Events/data/messages:67
-#: ../Status-Notifier/data/messages:67 ../System-Monitor/data/messages:65
-#: ../Toons/data/messages:65 ../Xgamma/data/messages:69
-#: ../alsaMixer/data/messages:65 ../clock/data/messages:67
-#: ../clock/data/messages:159 ../dnd2share/data/messages:63
+#: ../Status-Notifier/data/messages:67 ../System-Monitor/data/messages:67
+#: ../Toons/data/messages:67 ../Xgamma/data/messages:69
+#: ../alsaMixer/data/messages:65 ../clock/data/messages:69
+#: ../clock/data/messages:161 ../dnd2share/data/messages:63
 #: ../dustbin/data/messages:63 ../keyboard-indicator/data/messages:63
 #: ../keyboard-indicator/data/messages:115 ../logout/data/messages:67
 #: ../mail/data/messages:63 ../musicPlayer/data/messages:65
-#: ../netspeed/data/messages:63 ../powermanager/data/messages:67
+#: ../netspeed/data/messages:63 ../powermanager/data/messages:69
 #: ../quick-browser/data/messages:69 ../shortcuts/data/messages:67
-#: ../showDesktop/data/messages:71 ../slider/data/messages:65
+#: ../showDesktop/data/messages:71 ../slider/data/messages:67
 #: ../stack/data/messages:69 ../switcher/data/messages:59
 #: ../systray/data/messages:59 ../template/data/messages:67
 #: ../terminal/data/messages:67 ../tomboy/data/messages:77
 #: ../weather/data/messages:65 ../weblets/data/messages:67
-#: ../wifi/data/messages:65
+#: ../wifi/data/messages:67
 msgid "Background image:"
 msgstr ""
 
 #: ../Clipper/data/messages:69 ../Composite-Manager/data/messages:65
-#: ../Disks/data/messages:73 ../Doncky/data/messages:67
+#: ../Disks/data/messages:65 ../Doncky/data/messages:67
 #: ../Folders/data/messages:81 ../GMenu/data/messages:69
-#: ../Impulse/data/messages:69 ../MeMenu/data/messages:63
-#: ../Messaging-Menu/data/messages:65 ../Network-Monitor/data/messages:69
+#: ../Impulse/data/messages:67 ../MeMenu/data/messages:63
+#: ../Messaging-Menu/data/messages:65 ../Network-Monitor/data/messages:71
 #: ../RSSreader/data/messages:71 ../Recent-Events/data/messages:69
-#: ../Status-Notifier/data/messages:69 ../System-Monitor/data/messages:67
-#: ../Toons/data/messages:67 ../Xgamma/data/messages:71
-#: ../alsaMixer/data/messages:67 ../clock/data/messages:69
+#: ../Status-Notifier/data/messages:69 ../System-Monitor/data/messages:69
+#: ../Toons/data/messages:69 ../Xgamma/data/messages:71
+#: ../alsaMixer/data/messages:67 ../clock/data/messages:71
 #: ../dnd2share/data/messages:65 ../dustbin/data/messages:65
 #: ../keyboard-indicator/data/messages:65 ../logout/data/messages:69
 #: ../mail/data/messages:65 ../musicPlayer/data/messages:67
-#: ../netspeed/data/messages:65 ../powermanager/data/messages:69
+#: ../netspeed/data/messages:65 ../powermanager/data/messages:71
 #: ../quick-browser/data/messages:71 ../shortcuts/data/messages:69
-#: ../showDesktop/data/messages:73 ../slider/data/messages:67
+#: ../showDesktop/data/messages:73 ../slider/data/messages:69
 #: ../stack/data/messages:71 ../switcher/data/messages:61
 #: ../systray/data/messages:61 ../template/data/messages:69
 #: ../terminal/data/messages:69 ../tomboy/data/messages:79
 #: ../weather/data/messages:67 ../weblets/data/messages:69
-#: ../wifi/data/messages:67
+#: ../wifi/data/messages:69
 msgid "Background transparency:"
 msgstr ""
 
 #: ../Clipper/data/messages:71 ../Composite-Manager/data/messages:67
-#: ../Disks/data/messages:83 ../Doncky/data/messages:69
+#: ../Disks/data/messages:73 ../Doncky/data/messages:69
 #: ../Folders/data/messages:83 ../GMenu/data/messages:71
-#: ../Impulse/data/messages:71 ../MeMenu/data/messages:65
-#: ../Messaging-Menu/data/messages:67 ../Network-Monitor/data/messages:71
+#: ../Impulse/data/messages:69 ../MeMenu/data/messages:65
+#: ../Messaging-Menu/data/messages:67 ../Network-Monitor/data/messages:73
 #: ../RSSreader/data/messages:73 ../Recent-Events/data/messages:71
-#: ../Status-Notifier/data/messages:71 ../System-Monitor/data/messages:69
-#: ../Toons/data/messages:69 ../Xgamma/data/messages:73
-#: ../alsaMixer/data/messages:69 ../clock/data/messages:71
+#: ../Status-Notifier/data/messages:71 ../System-Monitor/data/messages:71
+#: ../Toons/data/messages:71 ../Xgamma/data/messages:73
+#: ../alsaMixer/data/messages:69 ../clock/data/messages:73
 #: ../dnd2share/data/messages:67 ../dustbin/data/messages:67
 #: ../keyboard-indicator/data/messages:67 ../logout/data/messages:71
 #: ../mail/data/messages:67 ../musicPlayer/data/messages:69
-#: ../netspeed/data/messages:67 ../powermanager/data/messages:71
+#: ../netspeed/data/messages:67 ../powermanager/data/messages:73
 #: ../quick-browser/data/messages:73 ../shortcuts/data/messages:71
-#: ../showDesktop/data/messages:75 ../slider/data/messages:69
+#: ../showDesktop/data/messages:75 ../slider/data/messages:71
 #: ../stack/data/messages:73 ../switcher/data/messages:63
 #: ../systray/data/messages:63 ../template/data/messages:71
 #: ../terminal/data/messages:71 ../tomboy/data/messages:81
 #: ../weather/data/messages:69 ../weblets/data/messages:71
-#: ../wifi/data/messages:69
+#: ../wifi/data/messages:71
 msgid "in pixels. Use this to adjust the left position of drawings."
 msgstr ""
 
 #: ../Clipper/data/messages:73 ../Composite-Manager/data/messages:69
-#: ../Disks/data/messages:85 ../Doncky/data/messages:71
+#: ../Disks/data/messages:75 ../Doncky/data/messages:71
 #: ../Folders/data/messages:85 ../GMenu/data/messages:73
-#: ../Impulse/data/messages:73 ../MeMenu/data/messages:67
-#: ../Messaging-Menu/data/messages:69 ../Network-Monitor/data/messages:73
+#: ../Impulse/data/messages:71 ../MeMenu/data/messages:67
+#: ../Messaging-Menu/data/messages:69 ../Network-Monitor/data/messages:75
 #: ../RSSreader/data/messages:75 ../Recent-Events/data/messages:73
-#: ../Status-Notifier/data/messages:73 ../System-Monitor/data/messages:71
-#: ../Toons/data/messages:71 ../Xgamma/data/messages:75
-#: ../alsaMixer/data/messages:71 ../clock/data/messages:73
+#: ../Status-Notifier/data/messages:73 ../System-Monitor/data/messages:73
+#: ../Toons/data/messages:73 ../Xgamma/data/messages:75
+#: ../alsaMixer/data/messages:71 ../clock/data/messages:75
 #: ../dnd2share/data/messages:69 ../dustbin/data/messages:69
 #: ../keyboard-indicator/data/messages:69 ../logout/data/messages:73
 #: ../mail/data/messages:69 ../musicPlayer/data/messages:71
-#: ../netspeed/data/messages:69 ../powermanager/data/messages:73
+#: ../netspeed/data/messages:69 ../powermanager/data/messages:75
 #: ../quick-browser/data/messages:75 ../shortcuts/data/messages:73
-#: ../showDesktop/data/messages:77 ../slider/data/messages:71
+#: ../showDesktop/data/messages:77 ../slider/data/messages:73
 #: ../stack/data/messages:75 ../switcher/data/messages:65
 #: ../systray/data/messages:65 ../template/data/messages:73
 #: ../terminal/data/messages:73 ../tomboy/data/messages:83
 #: ../weather/data/messages:71 ../weblets/data/messages:73
-#: ../wifi/data/messages:71
+#: ../wifi/data/messages:73
 msgid "Left offset:"
 msgstr ""
 
 #: ../Clipper/data/messages:75 ../Composite-Manager/data/messages:71
-#: ../Disks/data/messages:87 ../Doncky/data/messages:73
+#: ../Disks/data/messages:77 ../Doncky/data/messages:73
 #: ../Folders/data/messages:87 ../GMenu/data/messages:75
-#: ../Impulse/data/messages:75 ../MeMenu/data/messages:69
-#: ../Messaging-Menu/data/messages:71 ../Network-Monitor/data/messages:75
+#: ../Impulse/data/messages:73 ../MeMenu/data/messages:69
+#: ../Messaging-Menu/data/messages:71 ../Network-Monitor/data/messages:77
 #: ../RSSreader/data/messages:77 ../Recent-Events/data/messages:75
-#: ../Status-Notifier/data/messages:75 ../System-Monitor/data/messages:73
-#: ../Toons/data/messages:73 ../Xgamma/data/messages:77
-#: ../alsaMixer/data/messages:73 ../clock/data/messages:75
+#: ../Status-Notifier/data/messages:75 ../System-Monitor/data/messages:75
+#: ../Toons/data/messages:75 ../Xgamma/data/messages:77
+#: ../alsaMixer/data/messages:73 ../clock/data/messages:77
 #: ../dnd2share/data/messages:71 ../dustbin/data/messages:71
 #: ../keyboard-indicator/data/messages:71 ../logout/data/messages:75
 #: ../mail/data/messages:71 ../musicPlayer/data/messages:73
-#: ../netspeed/data/messages:71 ../powermanager/data/messages:75
+#: ../netspeed/data/messages:71 ../powermanager/data/messages:77
 #: ../quick-browser/data/messages:77 ../shortcuts/data/messages:75
-#: ../showDesktop/data/messages:79 ../slider/data/messages:73
+#: ../showDesktop/data/messages:79 ../slider/data/messages:75
 #: ../stack/data/messages:77 ../switcher/data/messages:67
 #: ../systray/data/messages:67 ../template/data/messages:75
 #: ../terminal/data/messages:75 ../tomboy/data/messages:85
 #: ../weather/data/messages:73 ../weblets/data/messages:75
-#: ../wifi/data/messages:73
+#: ../wifi/data/messages:75
 msgid "in pixels. Use this to adjust the top position of drawings."
 msgstr ""
 
 #: ../Clipper/data/messages:77 ../Composite-Manager/data/messages:73
-#: ../Disks/data/messages:89 ../Doncky/data/messages:75
+#: ../Disks/data/messages:79 ../Doncky/data/messages:75
 #: ../Folders/data/messages:89 ../GMenu/data/messages:77
-#: ../Impulse/data/messages:77 ../MeMenu/data/messages:71
-#: ../Messaging-Menu/data/messages:73 ../Network-Monitor/data/messages:77
+#: ../Impulse/data/messages:75 ../MeMenu/data/messages:71
+#: ../Messaging-Menu/data/messages:73 ../Network-Monitor/data/messages:79
 #: ../RSSreader/data/messages:79 ../Recent-Events/data/messages:77
-#: ../Status-Notifier/data/messages:77 ../System-Monitor/data/messages:75
-#: ../Toons/data/messages:75 ../Xgamma/data/messages:79
-#: ../alsaMixer/data/messages:75 ../clock/data/messages:77
+#: ../Status-Notifier/data/messages:77 ../System-Monitor/data/messages:77
+#: ../Toons/data/messages:77 ../Xgamma/data/messages:79
+#: ../alsaMixer/data/messages:75 ../clock/data/messages:79
 #: ../dnd2share/data/messages:73 ../dustbin/data/messages:73
 #: ../keyboard-indicator/data/messages:73 ../logout/data/messages:77
 #: ../mail/data/messages:73 ../musicPlayer/data/messages:75
-#: ../netspeed/data/messages:73 ../powermanager/data/messages:77
+#: ../netspeed/data/messages:73 ../powermanager/data/messages:79
 #: ../quick-browser/data/messages:79 ../shortcuts/data/messages:77
-#: ../showDesktop/data/messages:81 ../slider/data/messages:75
+#: ../showDesktop/data/messages:81 ../slider/data/messages:77
 #: ../stack/data/messages:79 ../switcher/data/messages:69
 #: ../systray/data/messages:69 ../template/data/messages:77
 #: ../terminal/data/messages:77 ../tomboy/data/messages:87
 #: ../weather/data/messages:75 ../weblets/data/messages:77
-#: ../wifi/data/messages:75
+#: ../wifi/data/messages:77
 msgid "Top offset:"
 msgstr ""
 
 #: ../Clipper/data/messages:79 ../Composite-Manager/data/messages:75
-#: ../Disks/data/messages:91 ../Doncky/data/messages:77
+#: ../Disks/data/messages:81 ../Doncky/data/messages:77
 #: ../Folders/data/messages:91 ../GMenu/data/messages:79
-#: ../Impulse/data/messages:79 ../MeMenu/data/messages:73
-#: ../Messaging-Menu/data/messages:75 ../Network-Monitor/data/messages:79
+#: ../Impulse/data/messages:77 ../MeMenu/data/messages:73
+#: ../Messaging-Menu/data/messages:75 ../Network-Monitor/data/messages:81
 #: ../RSSreader/data/messages:81 ../Recent-Events/data/messages:79
-#: ../Status-Notifier/data/messages:79 ../System-Monitor/data/messages:77
-#: ../Toons/data/messages:77 ../Xgamma/data/messages:81
-#: ../alsaMixer/data/messages:77 ../clock/data/messages:79
+#: ../Status-Notifier/data/messages:79 ../System-Monitor/data/messages:79
+#: ../Toons/data/messages:79 ../Xgamma/data/messages:81
+#: ../alsaMixer/data/messages:77 ../clock/data/messages:81
 #: ../dnd2share/data/messages:75 ../dustbin/data/messages:75
 #: ../keyboard-indicator/data/messages:75 ../logout/data/messages:79
 #: ../mail/data/messages:75 ../musicPlayer/data/messages:77
-#: ../netspeed/data/messages:75 ../powermanager/data/messages:79
+#: ../netspeed/data/messages:75 ../powermanager/data/messages:81
 #: ../quick-browser/data/messages:81 ../shortcuts/data/messages:79
-#: ../showDesktop/data/messages:83 ../slider/data/messages:77
+#: ../showDesktop/data/messages:83 ../slider/data/messages:79
 #: ../stack/data/messages:81 ../switcher/data/messages:71
 #: ../systray/data/messages:71 ../template/data/messages:79
 #: ../terminal/data/messages:79 ../tomboy/data/messages:89
 #: ../weather/data/messages:77 ../weblets/data/messages:79
-#: ../wifi/data/messages:77
+#: ../wifi/data/messages:79
 msgid "in pixels. Use this to adjust the right position of drawings."
 msgstr ""
 
 #: ../Clipper/data/messages:81 ../Composite-Manager/data/messages:77
-#: ../Disks/data/messages:93 ../Doncky/data/messages:79
+#: ../Disks/data/messages:83 ../Doncky/data/messages:79
 #: ../Folders/data/messages:93 ../GMenu/data/messages:81
-#: ../Impulse/data/messages:81 ../MeMenu/data/messages:75
-#: ../Messaging-Menu/data/messages:77 ../Network-Monitor/data/messages:81
+#: ../Impulse/data/messages:79 ../MeMenu/data/messages:75
+#: ../Messaging-Menu/data/messages:77 ../Network-Monitor/data/messages:83
 #: ../RSSreader/data/messages:83 ../Recent-Events/data/messages:81
-#: ../Status-Notifier/data/messages:81 ../System-Monitor/data/messages:79
-#: ../Toons/data/messages:79 ../Xgamma/data/messages:83
-#: ../alsaMixer/data/messages:79 ../clock/data/messages:81
+#: ../Status-Notifier/data/messages:81 ../System-Monitor/data/messages:81
+#: ../Toons/data/messages:81 ../Xgamma/data/messages:83
+#: ../alsaMixer/data/messages:79 ../clock/data/messages:83
 #: ../dnd2share/data/messages:77 ../dustbin/data/messages:77
 #: ../keyboard-indicator/data/messages:77 ../logout/data/messages:81
 #: ../mail/data/messages:77 ../musicPlayer/data/messages:79
-#: ../netspeed/data/messages:77 ../powermanager/data/messages:81
+#: ../netspeed/data/messages:77 ../powermanager/data/messages:83
 #: ../quick-browser/data/messages:83 ../shortcuts/data/messages:81
-#: ../showDesktop/data/messages:85 ../slider/data/messages:79
+#: ../showDesktop/data/messages:85 ../slider/data/messages:81
 #: ../stack/data/messages:83 ../switcher/data/messages:73
 #: ../systray/data/messages:73 ../template/data/messages:81
 #: ../terminal/data/messages:81 ../tomboy/data/messages:91
 #: ../weather/data/messages:79 ../weblets/data/messages:81
-#: ../wifi/data/messages:79
+#: ../wifi/data/messages:81
 msgid "Right offset:"
 msgstr ""
 
 #: ../Clipper/data/messages:83 ../Composite-Manager/data/messages:79
-#: ../Disks/data/messages:95 ../Doncky/data/messages:81
+#: ../Disks/data/messages:85 ../Doncky/data/messages:81
 #: ../Folders/data/messages:95 ../GMenu/data/messages:83
-#: ../Impulse/data/messages:83 ../MeMenu/data/messages:77
-#: ../Messaging-Menu/data/messages:79 ../Network-Monitor/data/messages:83
+#: ../Impulse/data/messages:81 ../MeMenu/data/messages:77
+#: ../Messaging-Menu/data/messages:79 ../Network-Monitor/data/messages:85
 #: ../RSSreader/data/messages:85 ../Recent-Events/data/messages:83
-#: ../Status-Notifier/data/messages:83 ../System-Monitor/data/messages:81
-#: ../Toons/data/messages:81 ../Xgamma/data/messages:85
-#: ../alsaMixer/data/messages:81 ../clock/data/messages:83
+#: ../Status-Notifier/data/messages:83 ../System-Monitor/data/messages:83
+#: ../Toons/data/messages:83 ../Xgamma/data/messages:85
+#: ../alsaMixer/data/messages:81 ../clock/data/messages:85
 #: ../dnd2share/data/messages:79 ../dustbin/data/messages:79
 #: ../keyboard-indicator/data/messages:79 ../logout/data/messages:83
 #: ../mail/data/messages:79 ../musicPlayer/data/messages:81
-#: ../netspeed/data/messages:79 ../powermanager/data/messages:83
+#: ../netspeed/data/messages:79 ../powermanager/data/messages:85
 #: ../quick-browser/data/messages:85 ../shortcuts/data/messages:83
-#: ../showDesktop/data/messages:87 ../slider/data/messages:81
+#: ../showDesktop/data/messages:87 ../slider/data/messages:83
 #: ../stack/data/messages:85 ../switcher/data/messages:75
 #: ../systray/data/messages:75 ../template/data/messages:83
 #: ../terminal/data/messages:83 ../tomboy/data/messages:93
 #: ../weather/data/messages:81 ../weblets/data/messages:83
-#: ../wifi/data/messages:81
+#: ../wifi/data/messages:83
 msgid "in pixels. Use this to adjust the bottom position of drawings."
 msgstr ""
 
 #: ../Clipper/data/messages:85 ../Composite-Manager/data/messages:81
-#: ../Disks/data/messages:97 ../Doncky/data/messages:83
+#: ../Disks/data/messages:87 ../Doncky/data/messages:83
 #: ../Folders/data/messages:97 ../GMenu/data/messages:85
-#: ../Impulse/data/messages:85 ../MeMenu/data/messages:79
-#: ../Messaging-Menu/data/messages:81 ../Network-Monitor/data/messages:85
+#: ../Impulse/data/messages:83 ../MeMenu/data/messages:79
+#: ../Messaging-Menu/data/messages:81 ../Network-Monitor/data/messages:87
 #: ../RSSreader/data/messages:87 ../Recent-Events/data/messages:85
-#: ../Status-Notifier/data/messages:85 ../System-Monitor/data/messages:83
-#: ../Toons/data/messages:83 ../Xgamma/data/messages:87
-#: ../alsaMixer/data/messages:83 ../clock/data/messages:85
+#: ../Status-Notifier/data/messages:85 ../System-Monitor/data/messages:85
+#: ../Toons/data/messages:85 ../Xgamma/data/messages:87
+#: ../alsaMixer/data/messages:83 ../clock/data/messages:87
 #: ../dnd2share/data/messages:81 ../dustbin/data/messages:81
 #: ../keyboard-indicator/data/messages:81 ../logout/data/messages:85
 #: ../mail/data/messages:81 ../musicPlayer/data/messages:83
-#: ../netspeed/data/messages:81 ../powermanager/data/messages:85
+#: ../netspeed/data/messages:81 ../powermanager/data/messages:87
 #: ../quick-browser/data/messages:87 ../shortcuts/data/messages:85
-#: ../showDesktop/data/messages:89 ../slider/data/messages:83
+#: ../showDesktop/data/messages:89 ../slider/data/messages:85
 #: ../stack/data/messages:87 ../switcher/data/messages:77
 #: ../systray/data/messages:77 ../template/data/messages:85
 #: ../terminal/data/messages:85 ../tomboy/data/messages:95
 #: ../weather/data/messages:83 ../weblets/data/messages:85
-#: ../wifi/data/messages:83
+#: ../wifi/data/messages:85
 msgid "Bottom offset:"
 msgstr ""
 
 #: ../Clipper/data/messages:87 ../Composite-Manager/data/messages:83
-#: ../Disks/data/messages:75 ../Doncky/data/messages:85
+#: ../Disks/data/messages:67 ../Doncky/data/messages:85
 #: ../Folders/data/messages:99 ../GMenu/data/messages:87
-#: ../Impulse/data/messages:87 ../MeMenu/data/messages:81
-#: ../Messaging-Menu/data/messages:83 ../Network-Monitor/data/messages:87
+#: ../Impulse/data/messages:85 ../MeMenu/data/messages:81
+#: ../Messaging-Menu/data/messages:83 ../Network-Monitor/data/messages:89
 #: ../RSSreader/data/messages:89 ../Recent-Events/data/messages:87
-#: ../Status-Notifier/data/messages:87 ../System-Monitor/data/messages:85
-#: ../Toons/data/messages:85 ../Xgamma/data/messages:89
-#: ../alsaMixer/data/messages:85 ../clock/data/messages:87
+#: ../Status-Notifier/data/messages:87 ../System-Monitor/data/messages:87
+#: ../Toons/data/messages:87 ../Xgamma/data/messages:89
+#: ../alsaMixer/data/messages:85 ../clock/data/messages:89
 #: ../dnd2share/data/messages:83 ../dustbin/data/messages:83
 #: ../keyboard-indicator/data/messages:83 ../logout/data/messages:87
 #: ../mail/data/messages:83 ../musicPlayer/data/messages:85
-#: ../netspeed/data/messages:83 ../powermanager/data/messages:87
+#: ../netspeed/data/messages:83 ../powermanager/data/messages:89
 #: ../quick-browser/data/messages:89 ../shortcuts/data/messages:87
-#: ../showDesktop/data/messages:91 ../slider/data/messages:85
+#: ../showDesktop/data/messages:91 ../slider/data/messages:87
 #: ../stack/data/messages:89 ../switcher/data/messages:79
 #: ../systray/data/messages:79 ../template/data/messages:87
 #: ../terminal/data/messages:87 ../tomboy/data/messages:97
 #: ../weather/data/messages:85 ../weblets/data/messages:87
-#: ../wifi/data/messages:85
+#: ../wifi/data/messages:87
 msgid ""
 "Image to be displayed above the drawings, e.g. a reflection. Leave empty for "
 "no image."
 msgstr ""
 
 #: ../Clipper/data/messages:89 ../Composite-Manager/data/messages:85
-#: ../Disks/data/messages:77 ../Doncky/data/messages:87
+#: ../Disks/data/messages:69 ../Doncky/data/messages:87
 #: ../Folders/data/messages:101 ../GMenu/data/messages:89
-#: ../Impulse/data/messages:89 ../MeMenu/data/messages:83
-#: ../Messaging-Menu/data/messages:85 ../Network-Monitor/data/messages:89
+#: ../Impulse/data/messages:87 ../MeMenu/data/messages:83
+#: ../Messaging-Menu/data/messages:85 ../Network-Monitor/data/messages:91
 #: ../RSSreader/data/messages:91 ../Recent-Events/data/messages:89
-#: ../Status-Notifier/data/messages:89 ../System-Monitor/data/messages:87
-#: ../Toons/data/messages:87 ../Xgamma/data/messages:91
-#: ../alsaMixer/data/messages:87 ../clock/data/messages:89
+#: ../Status-Notifier/data/messages:89 ../System-Monitor/data/messages:89
+#: ../Toons/data/messages:89 ../Xgamma/data/messages:91
+#: ../alsaMixer/data/messages:87 ../clock/data/messages:91
 #: ../dnd2share/data/messages:85 ../dustbin/data/messages:85
 #: ../keyboard-indicator/data/messages:85 ../logout/data/messages:89
 #: ../mail/data/messages:85 ../musicPlayer/data/messages:87
-#: ../netspeed/data/messages:85 ../powermanager/data/messages:89
+#: ../netspeed/data/messages:85 ../powermanager/data/messages:91
 #: ../quick-browser/data/messages:91 ../shortcuts/data/messages:89
-#: ../showDesktop/data/messages:93 ../slider/data/messages:87
+#: ../showDesktop/data/messages:93 ../slider/data/messages:89
 #: ../stack/data/messages:91 ../switcher/data/messages:81
 #: ../systray/data/messages:81 ../template/data/messages:89
 #: ../terminal/data/messages:89 ../tomboy/data/messages:99
 #: ../weather/data/messages:87 ../weblets/data/messages:89
-#: ../wifi/data/messages:87
+#: ../wifi/data/messages:89
 msgid "Foreground image:"
 msgstr ""
 
 #: ../Clipper/data/messages:91 ../Composite-Manager/data/messages:87
-#: ../Disks/data/messages:79 ../Doncky/data/messages:89
+#: ../Disks/data/messages:71 ../Doncky/data/messages:89
 #: ../Folders/data/messages:103 ../GMenu/data/messages:91
-#: ../Impulse/data/messages:91 ../MeMenu/data/messages:85
-#: ../Messaging-Menu/data/messages:87 ../Network-Monitor/data/messages:91
+#: ../Impulse/data/messages:89 ../MeMenu/data/messages:85
+#: ../Messaging-Menu/data/messages:87 ../Network-Monitor/data/messages:93
 #: ../RSSreader/data/messages:93 ../Recent-Events/data/messages:91
-#: ../Status-Notifier/data/messages:91 ../System-Monitor/data/messages:89
-#: ../Toons/data/messages:89 ../Xgamma/data/messages:93
-#: ../alsaMixer/data/messages:89 ../clock/data/messages:91
+#: ../Status-Notifier/data/messages:91 ../System-Monitor/data/messages:91
+#: ../Toons/data/messages:91 ../Xgamma/data/messages:93
+#: ../alsaMixer/data/messages:89 ../clock/data/messages:93
 #: ../dnd2share/data/messages:87 ../dustbin/data/messages:87
 #: ../keyboard-indicator/data/messages:87 ../logout/data/messages:91
 #: ../mail/data/messages:87 ../musicPlayer/data/messages:89
-#: ../netspeed/data/messages:87 ../powermanager/data/messages:91
+#: ../netspeed/data/messages:87 ../powermanager/data/messages:93
 #: ../quick-browser/data/messages:93 ../shortcuts/data/messages:91
-#: ../showDesktop/data/messages:95 ../slider/data/messages:89
+#: ../showDesktop/data/messages:95 ../slider/data/messages:91
 #: ../stack/data/messages:93 ../switcher/data/messages:83
 #: ../systray/data/messages:83 ../template/data/messages:91
 #: ../terminal/data/messages:91 ../tomboy/data/messages:101
 #: ../weather/data/messages:89 ../weblets/data/messages:91
-#: ../wifi/data/messages:89
+#: ../wifi/data/messages:91
 msgid "Foreground tansparency:"
 msgstr ""
 
@@ -4456,7 +4503,8 @@
 msgid "Selection"
 msgstr ""
 
-#: ../Clipper/data/messages:107 ../show-mouse/data/messages:15
+#: ../Clipper/data/messages:107 ../GMenu/data/messages:127
+#: ../show-mouse/data/messages:15
 msgid "Both"
 msgstr ""
 
@@ -4543,9 +4591,9 @@
 msgid "A list of persistent items which can be accessed with middle-click:"
 msgstr ""
 
-#: ../Composite-Manager/data/messages:27 ../Impulse/data/messages:31
+#: ../Composite-Manager/data/messages:27 ../Impulse/data/messages:29
 #: ../Recent-Events/data/messages:31 ../Status-Notifier/data/messages:31
-#: ../alsaMixer/data/messages:29 ../clock/data/messages:31
+#: ../alsaMixer/data/messages:29 ../clock/data/messages:33
 #: ../dustbin/data/messages:27 ../netspeed/data/messages:27
 #: ../systray/data/messages:27 ../template/data/messages:31
 #: ../tomboy/data/messages:41
@@ -4554,7 +4602,8 @@
 "left-click.. Negative values are counted from the right/bottom of the screen"
 msgstr ""
 
-#: ../Composite-Manager/data/messages:91 ../clock/data/messages:127
+#: ../Composite-Manager/data/messages:91 ../Impulse/data/messages:125
+#: ../clock/data/messages:129
 msgid "Style"
 msgstr ""
 
@@ -4567,8 +4616,8 @@
 msgstr ""
 
 #: ../Composite-Manager/data/messages:101 ../RSSreader/data/messages:107
-#: ../clock/data/messages:95 ../dnd2share/data/messages:99
-#: ../showDesktop/data/messages:99 ../slider/data/messages:109
+#: ../clock/data/messages:97 ../dnd2share/data/messages:99
+#: ../showDesktop/data/messages:99 ../slider/data/messages:111
 msgid "Behaviour"
 msgstr ""
 
@@ -4612,7 +4661,7 @@
 msgstr ""
 
 #: ../Composite-Manager/data/messages:129 ../logout/data/messages:105
-#: ../showDesktop/data/messages:117 ../slider/data/messages:117
+#: ../showDesktop/data/messages:117 ../slider/data/messages:119
 #: ../switcher/data/messages:103
 msgid "Action on middle-click:"
 msgstr ""
@@ -4669,197 +4718,187 @@
 msgid "Name of the container it belongs to:"
 msgstr ""
 
-#: ../Disks/data/messages:11
-msgid "Image's name or path :"
-msgstr ""
-
-#: ../Disks/data/messages:21
+#: ../Disks/data/messages:17
 msgid "Desklet mode"
 msgstr ""
 
-#: ../Disks/data/messages:67
-msgid "Custom decorations"
-msgstr ""
-
-#: ../Disks/data/messages:81
-msgid "Custom margins"
-msgstr ""
-
-#: ../Disks/data/messages:101 ../Network-Monitor/data/messages:133
-#: ../System-Monitor/data/messages:93 ../netspeed/data/messages:91
-#: ../powermanager/data/messages:95 ../wifi/data/messages:93
+#: ../Disks/data/messages:91 ../Network-Monitor/data/messages:135
+#: ../System-Monitor/data/messages:95 ../netspeed/data/messages:91
+#: ../powermanager/data/messages:97 ../wifi/data/messages:95
 msgid "Choose the style of the display: "
 msgstr ""
 
-#: ../Disks/data/messages:103 ../Disks/data/messages:107
-#: ../Network-Monitor/data/messages:135 ../Network-Monitor/data/messages:139
-#: ../Network-Monitor/data/messages:177 ../Network-Monitor/data/messages:183
-#: ../System-Monitor/data/messages:95 ../System-Monitor/data/messages:99
-#: ../netspeed/data/messages:93 ../netspeed/data/messages:97
-#: ../powermanager/data/messages:97 ../powermanager/data/messages:103
-#: ../wifi/data/messages:95 ../wifi/data/messages:101
+#: ../Disks/data/messages:93 ../Disks/data/messages:97
+#: ../Network-Monitor/data/messages:137 ../Network-Monitor/data/messages:141
+#: ../Network-Monitor/data/messages:179 ../Network-Monitor/data/messages:185
+#: ../System-Monitor/data/messages:97 ../System-Monitor/data/messages:101
+#: ../alsaMixer/data/messages:137 ../netspeed/data/messages:93
+#: ../netspeed/data/messages:97 ../powermanager/data/messages:99
+#: ../powermanager/data/messages:105 ../wifi/data/messages:97
+#: ../wifi/data/messages:103
 msgid "Gauge"
 msgstr ""
 
-#: ../Disks/data/messages:105 ../Disks/data/messages:111
-#: ../Network-Monitor/data/messages:137 ../Network-Monitor/data/messages:143
-#: ../Network-Monitor/data/messages:179 ../Network-Monitor/data/messages:187
-#: ../System-Monitor/data/messages:97 ../System-Monitor/data/messages:103
-#: ../netspeed/data/messages:95 ../netspeed/data/messages:101
-#: ../powermanager/data/messages:99 ../powermanager/data/messages:107
-#: ../wifi/data/messages:97 ../wifi/data/messages:105
+#: ../Disks/data/messages:95 ../Disks/data/messages:101
+#: ../Network-Monitor/data/messages:139 ../Network-Monitor/data/messages:145
+#: ../Network-Monitor/data/messages:181 ../Network-Monitor/data/messages:189
+#: ../System-Monitor/data/messages:99 ../System-Monitor/data/messages:113
+#: ../netspeed/data/messages:95 ../netspeed/data/messages:109
+#: ../powermanager/data/messages:101 ../powermanager/data/messages:109
+#: ../wifi/data/messages:99 ../wifi/data/messages:107
 msgid "Graph"
 msgstr ""
 
-#: ../Disks/data/messages:113 ../Network-Monitor/data/messages:145
-#: ../Network-Monitor/data/messages:189 ../System-Monitor/data/messages:105
-#: ../netspeed/data/messages:103 ../powermanager/data/messages:109
-#: ../wifi/data/messages:107
+#: ../Disks/data/messages:103 ../Network-Monitor/data/messages:147
+#: ../Network-Monitor/data/messages:191 ../System-Monitor/data/messages:115
+#: ../netspeed/data/messages:111 ../powermanager/data/messages:111
+#: ../wifi/data/messages:109
 msgid "Type of graphic :"
 msgstr ""
 
-#: ../Disks/data/messages:115 ../Network-Monitor/data/messages:147
-#: ../Network-Monitor/data/messages:191 ../System-Monitor/data/messages:107
-#: ../netspeed/data/messages:105 ../powermanager/data/messages:111
-#: ../wifi/data/messages:109
+#: ../Disks/data/messages:105 ../Network-Monitor/data/messages:149
+#: ../Network-Monitor/data/messages:193 ../System-Monitor/data/messages:117
+#: ../netspeed/data/messages:113 ../powermanager/data/messages:113
+#: ../wifi/data/messages:111
 msgid "Line"
 msgstr ""
 
-#: ../Disks/data/messages:117 ../Network-Monitor/data/messages:149
-#: ../Network-Monitor/data/messages:193 ../System-Monitor/data/messages:109
-#: ../netspeed/data/messages:107 ../powermanager/data/messages:113
-#: ../wifi/data/messages:111
+#: ../Disks/data/messages:107 ../Network-Monitor/data/messages:151
+#: ../Network-Monitor/data/messages:195 ../System-Monitor/data/messages:119
+#: ../netspeed/data/messages:115 ../powermanager/data/messages:115
+#: ../wifi/data/messages:113
 msgid "Plain"
 msgstr ""
 
-#: ../Disks/data/messages:119 ../Network-Monitor/data/messages:151
-#: ../Network-Monitor/data/messages:195 ../System-Monitor/data/messages:111
-#: ../netspeed/data/messages:109 ../powermanager/data/messages:115
-#: ../wifi/data/messages:113
+#: ../Disks/data/messages:109 ../Network-Monitor/data/messages:153
+#: ../Network-Monitor/data/messages:197 ../System-Monitor/data/messages:121
+#: ../netspeed/data/messages:117 ../powermanager/data/messages:117
+#: ../wifi/data/messages:115
 msgid "Bar"
 msgstr ""
 
-#: ../Disks/data/messages:121 ../Network-Monitor/data/messages:153
-#: ../Network-Monitor/data/messages:197 ../System-Monitor/data/messages:113
-#: ../netspeed/data/messages:111 ../powermanager/data/messages:117
-#: ../wifi/data/messages:115
+#: ../Disks/data/messages:111 ../Network-Monitor/data/messages:155
+#: ../Network-Monitor/data/messages:199 ../System-Monitor/data/messages:123
+#: ../netspeed/data/messages:119 ../powermanager/data/messages:119
+#: ../wifi/data/messages:117
 msgid "Circle"
 msgstr ""
 
-#: ../Disks/data/messages:123 ../Network-Monitor/data/messages:155
-#: ../Network-Monitor/data/messages:199 ../System-Monitor/data/messages:115
-#: ../netspeed/data/messages:113 ../powermanager/data/messages:119
-#: ../wifi/data/messages:117
+#: ../Disks/data/messages:113 ../Network-Monitor/data/messages:157
+#: ../Network-Monitor/data/messages:201 ../System-Monitor/data/messages:125
+#: ../netspeed/data/messages:121 ../powermanager/data/messages:121
+#: ../wifi/data/messages:119
 msgid "Plain Circle"
 msgstr ""
 
-#: ../Disks/data/messages:125 ../netspeed/data/messages:115
+#: ../Disks/data/messages:115 ../netspeed/data/messages:123
 msgid "It's the colour of the graphic for high rate values."
 msgstr ""
 
-#: ../Disks/data/messages:127 ../Network-Monitor/data/messages:159
-#: ../Network-Monitor/data/messages:203 ../System-Monitor/data/messages:119
-#: ../netspeed/data/messages:117 ../powermanager/data/messages:123
-#: ../wifi/data/messages:121
+#: ../Disks/data/messages:117 ../Network-Monitor/data/messages:161
+#: ../Network-Monitor/data/messages:205 ../System-Monitor/data/messages:129
+#: ../netspeed/data/messages:125 ../powermanager/data/messages:125
+#: ../wifi/data/messages:123
 msgid "High value's colour :"
 msgstr ""
 
-#: ../Disks/data/messages:129 ../netspeed/data/messages:119
+#: ../Disks/data/messages:119 ../netspeed/data/messages:127
 msgid "Graph colour for low rate vaues:"
 msgstr ""
 
-#: ../Disks/data/messages:131 ../Network-Monitor/data/messages:163
-#: ../Network-Monitor/data/messages:207 ../System-Monitor/data/messages:123
-#: ../netspeed/data/messages:121 ../powermanager/data/messages:127
-#: ../wifi/data/messages:125
+#: ../Disks/data/messages:121 ../Network-Monitor/data/messages:165
+#: ../Network-Monitor/data/messages:209 ../System-Monitor/data/messages:133
+#: ../netspeed/data/messages:129 ../powermanager/data/messages:129
+#: ../wifi/data/messages:127
 msgid "Low value's colour :"
 msgstr ""
 
-#: ../Disks/data/messages:133 ../Network-Monitor/data/messages:165
-#: ../Network-Monitor/data/messages:209 ../System-Monitor/data/messages:125
-#: ../netspeed/data/messages:123 ../powermanager/data/messages:129
-#: ../wifi/data/messages:127
+#: ../Disks/data/messages:123 ../Network-Monitor/data/messages:167
+#: ../Network-Monitor/data/messages:211 ../System-Monitor/data/messages:135
+#: ../netspeed/data/messages:131 ../powermanager/data/messages:131
+#: ../wifi/data/messages:129
 msgid "Background colour of the graphic :"
 msgstr ""
 
-#: ../Disks/data/messages:135 ../System-Monitor/data/messages:127
-#: ../netspeed/data/messages:125
+#: ../Disks/data/messages:125 ../System-Monitor/data/messages:137
+#: ../netspeed/data/messages:133
 msgid "Show all values on same graph?"
 msgstr ""
 
-#: ../Disks/data/messages:137 ../alsaMixer/data/messages:117
-#: ../keyboard-indicator/data/messages:99 ../mail/data/messages:95
-#: ../musicPlayer/data/messages:147 ../shortcuts/data/messages:95
-#: ../shortcuts/data/messages:105 ../slider/data/messages:157
-#: ../stack/data/messages:97 ../tomboy/data/messages:105
-#: ../weather/data/messages:121
+#: ../Disks/data/messages:127 ../Impulse/data/messages:93
+#: ../alsaMixer/data/messages:117 ../keyboard-indicator/data/messages:99
+#: ../mail/data/messages:95 ../musicPlayer/data/messages:145
+#: ../shortcuts/data/messages:95 ../shortcuts/data/messages:105
+#: ../slider/data/messages:159 ../stack/data/messages:97
+#: ../tomboy/data/messages:105 ../weather/data/messages:121
 msgid "Display"
 msgstr ""
 
-#: ../Disks/data/messages:139
+#: ../Disks/data/messages:129
 msgid "Display values"
 msgstr ""
 
-#: ../Disks/data/messages:141 ../Network-Monitor/data/messages:111
-#: ../RSSreader/data/messages:115 ../System-Monitor/data/messages:149
-#: ../alsaMixer/data/messages:121 ../clock/data/messages:99
-#: ../netspeed/data/messages:143 ../shortcuts/data/messages:121
-#: ../slider/data/messages:161
+#: ../Disks/data/messages:131 ../Network-Monitor/data/messages:113
+#: ../RSSreader/data/messages:115 ../System-Monitor/data/messages:107
+#: ../System-Monitor/data/messages:159 ../alsaMixer/data/messages:121
+#: ../clock/data/messages:101 ../netspeed/data/messages:103
+#: ../netspeed/data/messages:151 ../shortcuts/data/messages:121
+#: ../slider/data/messages:163
 msgid "No"
 msgstr ""
 
-#: ../Disks/data/messages:143 ../Network-Monitor/data/messages:113
-#: ../System-Monitor/data/messages:151 ../alsaMixer/data/messages:125
-#: ../clock/data/messages:101 ../netspeed/data/messages:145
+#: ../Disks/data/messages:133 ../Network-Monitor/data/messages:115
+#: ../System-Monitor/data/messages:161 ../alsaMixer/data/messages:125
+#: ../clock/data/messages:103 ../netspeed/data/messages:153
 msgid "On icon"
 msgstr ""
 
-#: ../Disks/data/messages:145 ../Network-Monitor/data/messages:115
-#: ../System-Monitor/data/messages:153 ../alsaMixer/data/messages:123
-#: ../clock/data/messages:103 ../netspeed/data/messages:147
+#: ../Disks/data/messages:135 ../Network-Monitor/data/messages:117
+#: ../System-Monitor/data/messages:163 ../alsaMixer/data/messages:123
+#: ../clock/data/messages:105 ../netspeed/data/messages:155
 msgid "On label"
 msgstr ""
 
-#: ../Disks/data/messages:149
+#: ../Disks/data/messages:139
 msgid "Refresh time"
 msgstr ""
 
-#: ../Disks/data/messages:151 ../netspeed/data/messages:137
+#: ../Disks/data/messages:141 ../netspeed/data/messages:145
 msgid ""
 "You need OpenGL for this option. Set it to 0 to disable it, 1 means the "
 "transition is continue."
 msgstr ""
 
-#: ../Disks/data/messages:153
+#: ../Disks/data/messages:143
 msgid "Fluidity of the transition between 2 values"
 msgstr ""
 
-#: ../Disks/data/messages:155
+#: ../Disks/data/messages:145
+msgid "Partitions monitored : Size"
+msgstr ""
+
+#: ../Disks/data/messages:147
+msgid "E.g. sda1, sdb5..."
+msgstr ""
+
+#: ../Disks/data/messages:149
 msgid "Disks monitored : Speed"
 msgstr ""
 
-#: ../Disks/data/messages:157
+#: ../Disks/data/messages:151
 msgid "E.g. sda, sdb... Up to 5 values allowed"
 msgstr ""
 
-#: ../Disks/data/messages:159
-msgid "Partitions monitored : Size"
-msgstr ""
-
-#: ../Disks/data/messages:161
-msgid "E.g. sda1, sdb5..."
-msgstr ""
-
-#: ../Disks/data/messages:163
+#: ../Disks/data/messages:153
 msgid "Preferences"
 msgstr ""
 
-#: ../Disks/data/messages:165 ../Network-Monitor/data/messages:127
-#: ../netspeed/data/messages:149
+#: ../Disks/data/messages:155 ../Network-Monitor/data/messages:129
+#: ../netspeed/data/messages:157
 msgid "Leave empty to use the default."
 msgstr ""
 
-#: ../Disks/data/messages:167
+#: ../Disks/data/messages:157
 msgid "System monitor command"
 msgstr ""
 
@@ -5059,35 +5098,92 @@
 msgid "Only show files whose last modification date is less than ;"
 msgstr ""
 
+#: ../GMenu/data/messages:117
+msgid "Session management buttons"
+msgstr ""
+
+#: ../GMenu/data/messages:119
+msgid "Show Logout and/or Shutdown : "
+msgstr ""
+
 #: ../Impulse/data/messages:95
-msgid "Animation of the icons :"
+msgid "Animation of the icons:"
 msgstr ""
 
 #: ../Impulse/data/messages:97
 msgid ""
+"Do we have to stop the animation on a icon which doesn't have to be animated "
+"each refresh?"
+msgstr ""
+
+#: ../Impulse/data/messages:99
+msgid "Stop animations sooner?"
+msgstr ""
+
+#: ../Impulse/data/messages:101 ../alsaMixer/data/messages:109
+msgid "Control"
+msgstr ""
+
+#: ../Impulse/data/messages:103
+msgid ""
 "It's the sensitivity in order to know if the animation is played or not."
 msgstr ""
 
-#: ../Impulse/data/messages:99
+#: ../Impulse/data/messages:105
 msgid "Sensitivity of the animation:"
 msgstr ""
 
-#: ../Impulse/data/messages:101
+#: ../Impulse/data/messages:107 ../Impulse/data/messages:117
+msgid "More"
+msgstr ""
+
+#: ../Impulse/data/messages:109 ../Impulse/data/messages:115
+msgid "Less"
+msgstr ""
+
+#: ../Impulse/data/messages:111
 msgid "in ms."
 msgstr ""
 
-#: ../Impulse/data/messages:103
+#: ../Impulse/data/messages:113
 msgid "Time between two animations:"
 msgstr ""
 
-#: ../Impulse/data/messages:105
-msgid ""
-"Do we have to stop the animation on a icon which doesn't have to be animated "
-"each refresh?"
-msgstr ""
-
-#: ../Impulse/data/messages:107
-msgid "Stop animations sooner?"
+#: ../Impulse/data/messages:119
+msgid "Action at Startup"
+msgstr ""
+
+#: ../Impulse/data/messages:121
+msgid "Launch automatically at startup?"
+msgstr ""
+
+#: ../Impulse/data/messages:123
+msgid "Hide the icon?"
+msgstr ""
+
+#: ../Impulse/data/messages:129
+msgid "Image when the applet is active:"
+msgstr ""
+
+#: ../Impulse/data/messages:133
+msgid "Image when the applet is inactive:"
+msgstr ""
+
+#: ../Impulse/data/messages:137 ../musicPlayer/data/messages:191
+#: ../tomboy/data/messages:21
+msgid "'Broken' icon image name:"
+msgstr ""
+
+#: ../Impulse/data/messages:139
+msgid "PulseAudio"
+msgstr ""
+
+#: ../Impulse/data/messages:141
+msgid "0 in most cases"
+msgstr ""
+
+#: ../Impulse/data/messages:143
+msgid "Index of the source:"
 msgstr ""
 
 #: ../Messaging-Menu/data/messages:91
@@ -5106,176 +5202,183 @@
 msgid "Always display the icon, even when the dock is hidden?"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:95 ../Network-Monitor/data/messages:167
-#: ../Network-Monitor/data/messages:255 ../System-Monitor/data/messages:129
-#: ../netspeed/data/messages:127 ../powermanager/data/messages:151
-#: ../tomboy/data/messages:125 ../wifi/data/messages:165
+#: ../Network-Monitor/data/messages:17 ../System-Monitor/data/messages:15
+#: ../Toons/data/messages:15 ../clock/data/messages:17
+#: ../powermanager/data/messages:17 ../slider/data/messages:15
+#: ../wifi/data/messages:15
+msgid "Background color to add in this case"
+msgstr ""
+
+#: ../Network-Monitor/data/messages:97 ../Network-Monitor/data/messages:169
+#: ../Network-Monitor/data/messages:257 ../System-Monitor/data/messages:139
+#: ../netspeed/data/messages:135 ../powermanager/data/messages:153
+#: ../tomboy/data/messages:125 ../wifi/data/messages:167
 msgid "Parameters"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:97
+#: ../Network-Monitor/data/messages:99
 msgid "You can quickly switch to the other mode by scrolling on the icon."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:99
+#: ../Network-Monitor/data/messages:101
 msgid "Info displayed by the icon:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:101
+#: ../Network-Monitor/data/messages:103
 msgid "Wifi signal"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:103
+#: ../Network-Monitor/data/messages:105
 msgid "Connexion speed"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:105
+#: ../Network-Monitor/data/messages:107
 msgid "By default the first active interface is used."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:107
+#: ../Network-Monitor/data/messages:109
 msgid "Connection interface to monitor:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:109
+#: ../Network-Monitor/data/messages:111
 msgid "Display numeric values:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:117 ../System-Monitor/data/messages:159
-#: ../wifi/data/messages:171
+#: ../Network-Monitor/data/messages:119 ../System-Monitor/data/messages:169
+#: ../wifi/data/messages:173
 msgid ""
 "You need OpenGL for this option. Set it to 0 means not used, 1 means the "
 "movement is continue."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:119
+#: ../Network-Monitor/data/messages:121
 msgid "Fluidity of the transition animation between 2 values:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:121
+#: ../Network-Monitor/data/messages:123
 msgid "Animation of the icon when connecting:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:123
+#: ../Network-Monitor/data/messages:125
 msgid ""
 "Allow you to overwrite applet's default command line and launch your "
 "preferred wireless configuration interface."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:125
+#: ../Network-Monitor/data/messages:127
 msgid "User command to show Wireless Configuration:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:129 ../System-Monitor/data/messages:175
-#: ../netspeed/data/messages:151
+#: ../Network-Monitor/data/messages:131 ../System-Monitor/data/messages:185
+#: ../netspeed/data/messages:159
 msgid "User command to display a system monitor:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:131
+#: ../Network-Monitor/data/messages:133
 msgid "Net Speed"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:157 ../Network-Monitor/data/messages:201
-#: ../wifi/data/messages:119
+#: ../Network-Monitor/data/messages:159 ../Network-Monitor/data/messages:203
+#: ../wifi/data/messages:121
 msgid "It's the colour of the graphic for high quality signal."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:161 ../Network-Monitor/data/messages:205
-#: ../wifi/data/messages:123
+#: ../Network-Monitor/data/messages:163 ../Network-Monitor/data/messages:207
+#: ../wifi/data/messages:125
 msgid "It's the colour of the graphic for low quality signal."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:171
+#: ../Network-Monitor/data/messages:173
 msgid "Delays between net speed checks:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:173
+#: ../Network-Monitor/data/messages:175
 msgid "Wifi"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:175
+#: ../Network-Monitor/data/messages:177
 msgid "Choose the style of the display:"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:181 ../Network-Monitor/data/messages:211
-#: ../powermanager/data/messages:101 ../powermanager/data/messages:131
-#: ../wifi/data/messages:99 ../wifi/data/messages:129
+#: ../Network-Monitor/data/messages:183 ../Network-Monitor/data/messages:213
+#: ../powermanager/data/messages:103 ../powermanager/data/messages:133
+#: ../wifi/data/messages:101 ../wifi/data/messages:131
 msgid "Icons"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:213 ../wifi/data/messages:131
+#: ../Network-Monitor/data/messages:215 ../wifi/data/messages:133
 msgid "Effect to apply on the icon according to strength :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:217 ../alsaMixer/data/messages:131
-#: ../powermanager/data/messages:145 ../wifi/data/messages:135
+#: ../Network-Monitor/data/messages:219 ../alsaMixer/data/messages:131
+#: ../powermanager/data/messages:147 ../wifi/data/messages:137
 msgid "Zoom"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:219 ../alsaMixer/data/messages:133
-#: ../powermanager/data/messages:147 ../wifi/data/messages:137
+#: ../Network-Monitor/data/messages:221 ../alsaMixer/data/messages:133
+#: ../powermanager/data/messages:149 ../wifi/data/messages:139
 msgid "Transparency"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:221 ../alsaMixer/data/messages:135
-#: ../wifi/data/messages:139
+#: ../Network-Monitor/data/messages:223 ../alsaMixer/data/messages:135
+#: ../wifi/data/messages:141
 msgid "Draw Bar"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:223 ../Network-Monitor/data/messages:227
-#: ../Network-Monitor/data/messages:231 ../Network-Monitor/data/messages:235
-#: ../Network-Monitor/data/messages:239 ../Network-Monitor/data/messages:243
-#: ../Network-Monitor/data/messages:247 ../Network-Monitor/data/messages:251
-#: ../logout/data/messages:125 ../musicPlayer/data/messages:175
-#: ../musicPlayer/data/messages:179 ../musicPlayer/data/messages:183
-#: ../musicPlayer/data/messages:187 ../musicPlayer/data/messages:191
-#: ../powermanager/data/messages:133 ../powermanager/data/messages:137
-#: ../powermanager/data/messages:165 ../tomboy/data/messages:11
+#: ../Network-Monitor/data/messages:225 ../Network-Monitor/data/messages:229
+#: ../Network-Monitor/data/messages:233 ../Network-Monitor/data/messages:237
+#: ../Network-Monitor/data/messages:241 ../Network-Monitor/data/messages:245
+#: ../Network-Monitor/data/messages:249 ../Network-Monitor/data/messages:253
+#: ../logout/data/messages:125 ../musicPlayer/data/messages:173
+#: ../musicPlayer/data/messages:177 ../musicPlayer/data/messages:181
+#: ../musicPlayer/data/messages:185 ../musicPlayer/data/messages:189
+#: ../powermanager/data/messages:135 ../powermanager/data/messages:139
+#: ../powermanager/data/messages:167 ../tomboy/data/messages:11
 #: ../tomboy/data/messages:15 ../tomboy/data/messages:19
-#: ../tomboy/data/messages:107 ../wifi/data/messages:141
-#: ../wifi/data/messages:145 ../wifi/data/messages:149
-#: ../wifi/data/messages:153 ../wifi/data/messages:157
-#: ../wifi/data/messages:161
+#: ../tomboy/data/messages:107 ../wifi/data/messages:143
+#: ../wifi/data/messages:147 ../wifi/data/messages:151
+#: ../wifi/data/messages:155 ../wifi/data/messages:159
+#: ../wifi/data/messages:163
 msgid "Leave empty to use the default icon."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:225
+#: ../Network-Monitor/data/messages:227
 msgid "Name of the image for the 'No signal' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:229
+#: ../Network-Monitor/data/messages:231
 msgid "Name of the image for the 'Very low' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:233
+#: ../Network-Monitor/data/messages:235
 msgid "Name of the image for the 'Low' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:237
+#: ../Network-Monitor/data/messages:239
 msgid "Name of the image for the 'Middle' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:241
+#: ../Network-Monitor/data/messages:243
 msgid "Name of an image for the 'Good' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:245
+#: ../Network-Monitor/data/messages:247
 msgid "Name of the image for the 'Excellent' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:249
+#: ../Network-Monitor/data/messages:251
 msgid "Name of the image for the 'Not connected' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:253
+#: ../Network-Monitor/data/messages:255
 msgid "Name of the image for the 'Wired connection' icon :"
 msgstr ""
 
-#: ../Network-Monitor/data/messages:257
+#: ../Network-Monitor/data/messages:259
 msgid "in seconds. if you don't have Network-Manager."
 msgstr ""
 
-#: ../Network-Monitor/data/messages:259
+#: ../Network-Monitor/data/messages:261
 msgid "Delays between wifi signal checks:"
 msgstr ""
 
@@ -5307,32 +5410,32 @@
 msgid "Notify about feed updates:"
 msgstr ""
 
-#: ../RSSreader/data/messages:117 ../powermanager/data/messages:197
+#: ../RSSreader/data/messages:117 ../powermanager/data/messages:201
 msgid "Icon animation"
 msgstr ""
 
-#: ../RSSreader/data/messages:119 ../powermanager/data/messages:199
+#: ../RSSreader/data/messages:119 ../powermanager/data/messages:203
 msgid "Dialog bubble"
 msgstr ""
 
-#: ../RSSreader/data/messages:121 ../powermanager/data/messages:201
+#: ../RSSreader/data/messages:121 ../powermanager/data/messages:205
 msgid "Icon animation + Dialog bubble"
 msgstr ""
 
-#: ../RSSreader/data/messages:123 ../powermanager/data/messages:203
+#: ../RSSreader/data/messages:123 ../powermanager/data/messages:207
 msgid "Let empty to use the default notification animation."
 msgstr ""
 
-#: ../RSSreader/data/messages:125 ../powermanager/data/messages:205
+#: ../RSSreader/data/messages:125 ../powermanager/data/messages:209
 msgid "Animation of the icon:"
 msgstr ""
 
-#: ../RSSreader/data/messages:127 ../powermanager/data/messages:207
+#: ../RSSreader/data/messages:127 ../powermanager/data/messages:211
 msgid ""
 "In seconds. Set to 0 for infinite time (need to click on dialog to close it)."
 msgstr ""
 
-#: ../RSSreader/data/messages:129 ../powermanager/data/messages:209
+#: ../RSSreader/data/messages:129 ../powermanager/data/messages:213
 msgid "Duration of the notification:"
 msgstr ""
 
@@ -5497,7 +5600,7 @@
 msgid "Outline text?"
 msgstr ""
 
-#: ../Scooby-Do/data/messages:39 ../clock/data/messages:147
+#: ../Scooby-Do/data/messages:39 ../clock/data/messages:149
 msgid "Text colour:"
 msgstr ""
 
@@ -5666,173 +5769,186 @@
 msgid "Number of lines to pack items in:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:117 ../powermanager/data/messages:121
+#: ../System-Monitor/data/messages:105 ../netspeed/data/messages:101
+msgid "Rotate applet theme :"
+msgstr ""
+
+#: ../System-Monitor/data/messages:109 ../netspeed/data/messages:105
+msgid "With dock orientation"
+msgstr ""
+
+#: ../System-Monitor/data/messages:111 ../netspeed/data/messages:107
+#: ../slider/data/messages:165
+msgid "Yes"
+msgstr ""
+
+#: ../System-Monitor/data/messages:127 ../powermanager/data/messages:123
 msgid "It's the colour of the graphic for high values."
 msgstr ""
 
-#: ../System-Monitor/data/messages:121 ../powermanager/data/messages:125
+#: ../System-Monitor/data/messages:131 ../powermanager/data/messages:127
 msgid "It's the colour of the graphic for low values."
 msgstr ""
 
-#: ../System-Monitor/data/messages:131
+#: ../System-Monitor/data/messages:141
 msgid "Show CPU usage?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:133
+#: ../System-Monitor/data/messages:143
 msgid "Show RAM usage ?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:135
+#: ../System-Monitor/data/messages:145
 msgid "Show SWAP too?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:137
+#: ../System-Monitor/data/messages:147
 msgid "You need an nVidia card and the 'nvidia-settings' tool."
 msgstr ""
 
-#: ../System-Monitor/data/messages:139
+#: ../System-Monitor/data/messages:149
 msgid "Show graphic card's temperature?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:141
+#: ../System-Monitor/data/messages:151
 msgid "Show CPU temperature?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:143
+#: ../System-Monitor/data/messages:153
 msgid "Show fan speed?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:145
+#: ../System-Monitor/data/messages:155
 msgid "Show free memory instead of used memory?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:147
+#: ../System-Monitor/data/messages:157
 msgid "Display values :"
 msgstr ""
 
-#: ../System-Monitor/data/messages:157
+#: ../System-Monitor/data/messages:167
 msgid "Delay between refreshes:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:161 ../wifi/data/messages:173
+#: ../System-Monitor/data/messages:171 ../wifi/data/messages:175
 msgid "How smooth is the movement?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:163
+#: ../System-Monitor/data/messages:173
 msgid "Alerts"
 msgstr ""
 
-#: ../System-Monitor/data/messages:165
+#: ../System-Monitor/data/messages:175
 msgid "Show alerts?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:167
+#: ../System-Monitor/data/messages:177
 msgid "Play a sound when displaying warning?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:169
+#: ../System-Monitor/data/messages:179
 msgid "Path to sound file:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:171
+#: ../System-Monitor/data/messages:181
 msgid "System-Monitor"
 msgstr ""
 
-#: ../System-Monitor/data/messages:177
+#: ../System-Monitor/data/messages:187
 msgid ""
 "It will prevent the system monitor's icon to show in the taskbar. The "
 "applet's icon will then behave as a launcher, an application, and an applet."
 msgstr ""
 
-#: ../System-Monitor/data/messages:179
+#: ../System-Monitor/data/messages:189
 msgid "Steal the system monitor's icon from the taskbar?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:183
+#: ../System-Monitor/data/messages:193
 msgid "Class of the system monitor program:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:185
+#: ../System-Monitor/data/messages:195
 msgid "Top List"
 msgstr ""
 
-#: ../System-Monitor/data/messages:187
+#: ../System-Monitor/data/messages:197
 msgid ""
 "When you left-click on the icon, you will get the list of the N most CPU/RAM-"
 "intensive programs."
 msgstr ""
 
-#: ../System-Monitor/data/messages:189
+#: ../System-Monitor/data/messages:199
 msgid "Number of programs to display in the top list:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:191
+#: ../System-Monitor/data/messages:201
 msgid "The first colour of the gradient used to display the top list."
 msgstr ""
 
-#: ../System-Monitor/data/messages:193
+#: ../System-Monitor/data/messages:203
 msgid "Top list start colour:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:195
+#: ../System-Monitor/data/messages:205
 msgid "The second colour of the gradient used to display the top list."
 msgstr ""
 
-#: ../System-Monitor/data/messages:197
+#: ../System-Monitor/data/messages:207
 msgid "Top list stop colour:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:199
+#: ../System-Monitor/data/messages:209
 msgid "Show top memory usage in %?"
 msgstr ""
 
-#: ../System-Monitor/data/messages:203
+#: ../System-Monitor/data/messages:213
 msgid "Delay between top list refreshes:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:205
+#: ../System-Monitor/data/messages:215
 msgid "Graphic Card temperature"
 msgstr ""
 
-#: ../System-Monitor/data/messages:207 ../System-Monitor/data/messages:211
+#: ../System-Monitor/data/messages:217 ../System-Monitor/data/messages:221
 msgid ""
 "in Celsius. The temperature will be displayed between this value and the "
 "upper limit."
 msgstr ""
 
-#: ../System-Monitor/data/messages:209
+#: ../System-Monitor/data/messages:219
 msgid "Lower limit of graphic card temperature:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:213
+#: ../System-Monitor/data/messages:223
 msgid "Upper limit of graphic card temperature:"
 msgstr ""
 
-#: ../System-Monitor/data/messages:215
+#: ../System-Monitor/data/messages:225
 msgid "in celcius."
 msgstr ""
 
-#: ../System-Monitor/data/messages:217
+#: ../System-Monitor/data/messages:227
 msgid "Notification limit of graphic card temperature:"
 msgstr ""
 
-#: ../Toons/data/messages:97
+#: ../Toons/data/messages:99
 msgid "Mean delay between winks:"
 msgstr ""
 
-#: ../Toons/data/messages:101
+#: ../Toons/data/messages:103
 msgid "Wink duration:"
 msgstr ""
 
-#: ../Toons/data/messages:103
+#: ../Toons/data/messages:105
 msgid "Keep ratio?"
 msgstr ""
 
-#: ../Toons/data/messages:105
+#: ../Toons/data/messages:107
 msgid "A high refresh frequency will use more CPU."
 msgstr ""
 
-#: ../Toons/data/messages:107
+#: ../Toons/data/messages:109
 msgid "High refresh frequency?"
 msgstr ""
 
@@ -5887,10 +6003,6 @@
 msgid "Specific command to run to show an advanced sound mixer:"
 msgstr ""
 
-#: ../alsaMixer/data/messages:109
-msgid "Control"
-msgstr ""
-
 #: ../alsaMixer/data/messages:111
 msgid "Shortkey to show/hide the sound control dialog:"
 msgstr ""
@@ -5907,149 +6019,149 @@
 msgid "Effect to apply to the icon when adjusting volume:"
 msgstr ""
 
-#: ../alsaMixer/data/messages:139
+#: ../alsaMixer/data/messages:141
 msgid "Default icon:"
 msgstr ""
 
-#: ../alsaMixer/data/messages:143
+#: ../alsaMixer/data/messages:145
+msgid "Mute icon:"
+msgstr ""
+
+#: ../alsaMixer/data/messages:151
 msgid "Broken icon:"
 msgstr ""
 
-#: ../alsaMixer/data/messages:147
-msgid "Mute icon:"
-msgstr ""
-
 #: ../clock/data/messages:7
 msgid "Leave empty to use the location name if available."
 msgstr ""
 
-#: ../clock/data/messages:97
+#: ../clock/data/messages:99
 msgid "Show the date:"
 msgstr ""
 
-#: ../clock/data/messages:105
+#: ../clock/data/messages:107
 msgid "for digital format only."
 msgstr ""
 
-#: ../clock/data/messages:107
+#: ../clock/data/messages:109
 msgid "Display the time in a 24h format?"
 msgstr ""
 
-#: ../clock/data/messages:109
+#: ../clock/data/messages:111
 msgid ""
 "if not, then the applet will update the time once a minute, saving CPU power."
 msgstr ""
 
-#: ../clock/data/messages:111
+#: ../clock/data/messages:113
 msgid "Show seconds?"
 msgstr ""
 
-#: ../clock/data/messages:113
+#: ../clock/data/messages:115
 msgid ""
 "In ms. Set 0 for non-smooth animation, set 1000 to have a continuous "
 "animation. Requires OpenGL."
 msgstr ""
 
-#: ../clock/data/messages:115
+#: ../clock/data/messages:117
 msgid "Display seconds with smooth animation for a duration of:"
 msgstr ""
 
-#: ../clock/data/messages:117
+#: ../clock/data/messages:119
 msgid "E.g. :Europe/Paris, :Japan, etc. Leave empty for local time."
 msgstr ""
 
-#: ../clock/data/messages:119
+#: ../clock/data/messages:121
 msgid "Timezone:"
 msgstr ""
 
-#: ../clock/data/messages:121
+#: ../clock/data/messages:123
 msgid "Use the tasks from the following task-manager:"
 msgstr ""
 
-#: ../clock/data/messages:123
+#: ../clock/data/messages:125
 msgid "Default"
 msgstr ""
 
-#: ../clock/data/messages:125
+#: ../clock/data/messages:127
 msgid "iCal"
 msgstr ""
 
-#: ../clock/data/messages:129
+#: ../clock/data/messages:131
 msgid ""
 "The analogue view is based on CairoClock; otherwise it will be displayed in "
 "digital format."
 msgstr ""
 
-#: ../clock/data/messages:131
+#: ../clock/data/messages:133
 msgid "Select the view :"
 msgstr ""
 
-#: ../clock/data/messages:133
+#: ../clock/data/messages:135
 msgid "Analogue"
 msgstr ""
 
-#: ../clock/data/messages:135
+#: ../clock/data/messages:137
 msgid "Digital"
 msgstr ""
 
-#: ../clock/data/messages:137
+#: ../clock/data/messages:139
 msgid "Analogue View"
 msgstr ""
 
-#: ../clock/data/messages:139
+#: ../clock/data/messages:141
 msgid "List of available themes for analogue display:"
 msgstr ""
 
-#: ../clock/data/messages:141
+#: ../clock/data/messages:143
 msgid "Date text colour:"
 msgstr ""
 
-#: ../clock/data/messages:143
+#: ../clock/data/messages:145
 msgid "Digital View"
 msgstr ""
 
-#: ../clock/data/messages:145 ../keyboard-indicator/data/messages:101
+#: ../clock/data/messages:147 ../keyboard-indicator/data/messages:101
 msgid "Font:"
 msgstr ""
 
-#: ../clock/data/messages:149
+#: ../clock/data/messages:151
 msgid "Layout of the text:"
 msgstr ""
 
-#: ../clock/data/messages:151
+#: ../clock/data/messages:153
 msgid "Automatic"
 msgstr ""
 
-#: ../clock/data/messages:153
+#: ../clock/data/messages:155
 msgid "On 1 line"
 msgstr ""
 
-#: ../clock/data/messages:155
+#: ../clock/data/messages:157
 msgid "On 2 lines"
 msgstr ""
 
-#: ../clock/data/messages:157
+#: ../clock/data/messages:159
 msgid "Ratio to apply on text :"
 msgstr ""
 
-#: ../clock/data/messages:161
+#: ../clock/data/messages:163
 msgid "Configure time and date"
 msgstr ""
 
-#: ../clock/data/messages:163 ../logout/data/messages:115
+#: ../clock/data/messages:165 ../logout/data/messages:115
 msgid "Leave empty to execute the default command."
 msgstr ""
 
-#: ../clock/data/messages:165
+#: ../clock/data/messages:167
 msgid "Specific command to run:"
 msgstr ""
 
-#: ../clock/data/messages:169
+#: ../clock/data/messages:171
 msgid ""
 "The new alarm will be added to the end / the last alarm will be removed."
 msgstr ""
 
-#: ../clock/data/messages:171
+#: ../clock/data/messages:173
 msgid "Add or remove an alarm:"
 msgstr ""
 
@@ -6349,7 +6461,7 @@
 msgid "Display text for all icons?"
 msgstr ""
 
-#: ../dock-rendering/data/messages:55 ../slider/data/messages:165
+#: ../dock-rendering/data/messages:55 ../slider/data/messages:167
 msgid "Frame"
 msgstr ""
 
@@ -6749,7 +6861,7 @@
 msgstr ""
 
 #: ../logout/data/messages:97 ../showDesktop/data/messages:103
-#: ../slider/data/messages:111
+#: ../slider/data/messages:113
 msgid "Action on left-click:"
 msgstr ""
 
@@ -6772,7 +6884,7 @@
 msgid "User-defined command to execute for shutdown:"
 msgstr ""
 
-#: ../logout/data/messages:123 ../musicPlayer/data/messages:173
+#: ../logout/data/messages:123 ../musicPlayer/data/messages:171
 #: ../tomboy/data/messages:9
 msgid "Customisation"
 msgstr ""
@@ -6955,126 +7067,118 @@
 msgstr ""
 
 #: ../musicPlayer/data/messages:125
-msgid "XMMS"
-msgstr ""
-
-#: ../musicPlayer/data/messages:127
 msgid ""
 "This will prevent the player icon appearing in the taskbar. The applet's "
 "icon will then behave as a launcher, an application and an applet."
 msgstr ""
 
+#: ../musicPlayer/data/messages:127
+msgid "Steal the player's icon from the taskbar?"
+msgstr ""
+
 #: ../musicPlayer/data/messages:129
-msgid "Steal the

Follow ups