-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi

This patch makes it possible to use libnotify instead of Gnome OSD to
display notifications about hardware changes to the user.

libnotify is a standardised way to do desktop notifications:
http://www.galago-project.org/specs/notification/0.9/index.html

If /usr/bin/notify-send is not found, Gnome OSD is used for
notifications as before. The user can also specify which service to use
in /etc/default/eeepc-acpi-scripts.

Currently, icons for notifications are taken from
/usr/share/icons/gnome, so they will not display if Gnome if not
installed. I'm not avare of any portable way to find appropriate icons
if other desktop environments supporting libnotify are installed.

Best regards
Tomaž

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAklEB4MACgkQsAlAlRhL9q9dqQCfdYjtUC1nbMAEVA/qqPYDeUD9
igEAoLBM+oBny7gcqxZO5mpHiySS3wIt
=pR0s
-----END PGP SIGNATURE-----
>From be66f8e738488cfdda58278a459b96b841c90be0 Mon Sep 17 00:00:00 2001
From: Tomaz Solc <[email protected]>
Date: Sat, 13 Dec 2008 19:12:06 +0100
Subject: [PATCH] Display notifications with libnotify, if available

If notify-send utility is found, notifications are displayed
through that, instead of using GNOME OSD.
---
 debian/README.Debian       |   10 ++++++--
 debian/control             |    2 +-
 etc/acpi/actions/hotkey.sh |   19 +++++++++--------
 etc/acpi/actions/volume.sh |    6 +++-
 etc/acpi/lib/notify.sh     |   49 +++++++++++++++++++++++++++++++++++---------
 5 files changed, 61 insertions(+), 25 deletions(-)

diff --git a/debian/README.Debian b/debian/README.Debian
index 9e766aa..b1068c1 100644
--- a/debian/README.Debian
+++ b/debian/README.Debian
@@ -15,9 +15,13 @@ values are 'Front' and 'Headphone'.
 If you want to leave volume management to any desktop environment you might
 be running, set HANDLE_VOLUME to 0.
 
-To get nifty osd overlays on changing the volume, switching on wireless
-etc. change ENABLE_OSD to yes in /etc/default/eeepc-acpi-scripts. Make sure you
-have aosd-cat installed then.
+You will get notifications of changes in the hardware through libnotify, 
+if available. If you do not want that, set ENABLE_LIBNOTIFY to no.
+
+Alternatively, you can get the same notifications through GNOME OSD. 
+To disable that, set ENABLE_OSD to no in /etc/default/eeepc-acpi-scripts.
+
+You need to have aosd-cat installed in order for GNOME OSD to work.
 
 [0] http://wiki.debian.org/DebianEeePC
 
diff --git a/debian/control b/debian/control
index a017a99..ce511fa 100644
--- a/debian/control
+++ b/debian/control
@@ -13,7 +13,7 @@ Package: eeepc-acpi-scripts
 Architecture: all
 Conflicts: acpi-support
 Depends: acpid (>= 1.0.4), acpi-support-base, pm-utils
-Recommends: alsa-utils
+Recommends: alsa-utils, libnotify-bin
 Suggests: aosd-cat, ttf-dejavu | ttf-bitstream-vera | ttf-freefont
  | gsfonts-x11 | ttf-mscorefonts-installer | ttf-liberation,
  gnome-osd
diff --git a/etc/acpi/actions/hotkey.sh b/etc/acpi/actions/hotkey.sh
index a574911..d0a4960 100755
--- a/etc/acpi/actions/hotkey.sh
+++ b/etc/acpi/actions/hotkey.sh
@@ -27,11 +27,12 @@ handle_volume_down() {
 show_wireless() {
     detect_wlan
     if grep -q $WLAN_IF /proc/net/wireless; then
-	status=On
+        status=On
+        notify wireless "Wireless On" "Wireless LAN module has been turned on"
     else
-	status=Off
+        status=Off
+        notify wireless "Wireless Off" "Wireless LAN module has been turned off"
     fi
-    notify wireless "Wireless $status"
 }
 
 handle_blank_screen() {
@@ -46,9 +47,9 @@ handle_blank_screen() {
 
 show_bluetooth() {
     if bluetooth_is_on; then
-	notify bluetooth 'Bluetooth On'
+	notify bluetooth 'Bluetooth On' 'Bluetooth module has been turned on'
     else
-	notify bluetooth 'Bluetooth Off'
+	notify bluetooth 'Bluetooth Off' 'Bluetooth module has been turned off'
     fi
 }
 
@@ -58,15 +59,15 @@ handle_bluetooth_toggle() {
 	toggle_bluetooth
 	show_bluetooth
     else
-	notify error 'Bluetooth unavailable'
+	notify error 'Bluetooth unavailable' 'Bluetooth module is not available'
     fi
 }
 
 show_camera() {
     if camera_is_on; then
-	notify camera 'Camera Enabled'
+	notify camera 'Camera On' 'Integrated web camera has been turned on'
     else
-	notify camera 'Camera Disabled'
+	notify camera 'Camera Off' 'Integrated web camera has been turned off'
     fi
 }
 
@@ -76,7 +77,7 @@ handle_camera_toggle() {
 	toggle_camera
 	show_camera
     else
-	notify error 'Camera unavailable'
+	notify error 'Camera Unavailable' 'Integrated web camera is not available'
     fi
 }
 
diff --git a/etc/acpi/actions/volume.sh b/etc/acpi/actions/volume.sh
index 5a4d620..2022d62 100755
--- a/etc/acpi/actions/volume.sh
+++ b/etc/acpi/actions/volume.sh
@@ -41,12 +41,14 @@ fi
 
 show_muteness() {
     status=$($AMIXER get $VOLUME_LABEL | sed -n '/%/{s/.*\[\(on\|off\)\].*/\u\1/p;q}')
-    notify audio "Audio $status"
+    ENABLE_LIBNOTIFY="no"
+    notify audio "Audio $status" "Audio $status"
 }
 
 show_volume() {
     percent=$($AMIXER get $VOLUME_LABEL | sed -n '/%/{s/.*\[\(.*\)%\].*/\1/p;q}')
-    notify audio "Volume $percent"
+    ENABLE_LIBNOTIFY="no"
+    notify audio "Volume $percent" "Volume $percent"
 }
 
 case "$action" in
diff --git a/etc/acpi/lib/notify.sh b/etc/acpi/lib/notify.sh
index 0156129..6312076 100755
--- a/etc/acpi/lib/notify.sh
+++ b/etc/acpi/lib/notify.sh
@@ -2,21 +2,13 @@
 #
 # this file is to be sourced
 
-notify() {
+notify_gnome_osd() {
     CATEGORY=$1
     MSG=$2
-    if [ -n "$3" ]; then
-	echo "usage: notify 'catgory' 'message text'" > /dev/stderr
-	return 1
-    fi
-    echo "$MSG"  # for /var/log/acpid
+
     if [ -S /tmp/.X11-unix/X0 ]; then
         detect_x_display
 
-    if [ "x$ENABLE_OSD" = "xno" ]; then
-        return
-    fi
-
     OSD_SHOWN=
 
     # try to show a nice OSD notification via GNOME OSD service
@@ -47,3 +39,40 @@ notify() {
     fi
 }
 
+notify_libnotify() {
+    CATEGORY=$1
+    SUMMARY=$2
+    MSG=$3
+
+    case "$CATEGORY" in    
+	"bluetooth")
+		ICON="/usr/share/icons/hicolor/scalable/apps/bluetooth.svg"
+                ;;
+	"wireless")
+		ICON="/usr/share/icons/gnome/scalable/devices/network-wireless.svg"
+                ;;
+        "camera")
+                ICON="/usr/share/icons/gnome/scalable/devices/camera-web.svg"
+                ;;
+    esac
+
+    if [ -f "$ICON" ]; then
+    	notify-send --icon "$ICON" "$SUMMARY" "$MSG"
+    else
+    	notify-send "$SUMMARY" "$MSG"
+    fi
+}
+
+notify() {
+    if [ "$#" -ne 3 ]; then
+	echo "usage: notify 'category' 'summary' 'text" > /dev/stderr
+	return 1
+    fi
+    echo "$MSG"  # for /var/log/acpid
+
+    if [ "x$ENABLE_LIBNOTIFY" != "xno" -a -x "/usr/bin/notify-send" ]; then
+        notify_libnotify "$@"
+    elif [ "x$ENABLE_OSD" != "xno" ]; then
+            notify_gnome_osd "$@"
+    fi
+}
-- 
1.5.6.5


_______________________________________________
Debian-eeepc-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/debian-eeepc-devel

Reply via email to