[PATCH] Display notifications with libnotify, if available
Tomaz Solc
tomaz.solc at tablix.org
Sat Dec 13 18:12:06 UTC 2008
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
--------------030607020103050906000600--
More information about the Debian-eeepc-devel
mailing list