diff options
-rwxr-xr-x | scripts/xdg-desktop-icon | 1 | ||||
-rwxr-xr-x | scripts/xdg-desktop-menu | 1 | ||||
-rwxr-xr-x | scripts/xdg-email | 12 | ||||
-rwxr-xr-x | scripts/xdg-icon-resource | 1 | ||||
-rwxr-xr-x | scripts/xdg-open | 47 | ||||
-rwxr-xr-x | scripts/xdg-screensaver | 11 |
6 files changed, 61 insertions, 12 deletions
diff --git a/scripts/xdg-desktop-icon b/scripts/xdg-desktop-icon index 27b7494..915dd00 100755 --- a/scripts/xdg-desktop-icon +++ b/scripts/xdg-desktop-icon @@ -404,6 +404,7 @@ detectDE() { if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; fi } diff --git a/scripts/xdg-desktop-menu b/scripts/xdg-desktop-menu index 44ad7f6..7a5e4c0 100755 --- a/scripts/xdg-desktop-menu +++ b/scripts/xdg-desktop-menu @@ -600,6 +600,7 @@ detectDE() { if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; fi } diff --git a/scripts/xdg-email b/scripts/xdg-email index d095118..28802ab 100755 --- a/scripts/xdg-email +++ b/scripts/xdg-email @@ -356,6 +356,7 @@ detectDE() { if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; fi } @@ -469,14 +470,19 @@ open_kde() open_gnome() { local client - client=`gconftool --get /desktop/gnome/url-handlers/mailto/command | cut -d ' ' -f 1` + client=`gconftool-2 --get /desktop/gnome/url-handlers/mailto/command | cut -d ' ' -f 1` || "" echo $client | grep thunderbird > /dev/null 2>&1 if [ $? -eq 0 ] ; then run_thunderbird "$client" "$1" fi - DEBUG 1 "Running gnome-open \"$1\"" - gnome-open "$1" + if gvfs-open --help 2>/dev/null 1>&2; then + DEBUG 1 "Running gvfs-open \"$1\"" + gvfs-open "$1" + else + DEBUG 1 "Running gnome-open \"$1\"" + gnome-open "$1" + fi if [ $? -eq 0 ]; then exit_success diff --git a/scripts/xdg-icon-resource b/scripts/xdg-icon-resource index 5b64f8a..d87785e 100755 --- a/scripts/xdg-icon-resource +++ b/scripts/xdg-icon-resource @@ -396,6 +396,7 @@ detectDE() { if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; fi } diff --git a/scripts/xdg-open b/scripts/xdg-open index 3416926..3c82006 100755 --- a/scripts/xdg-open +++ b/scripts/xdg-open @@ -303,6 +303,7 @@ detectDE() { if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; fi } @@ -324,6 +325,13 @@ kfmclient_fix_exit_code() return 0 } +# This handles backslashes but not quote marks. +first_word() +{ + read first rest + echo "$first" +} + open_kde() { if kde-open -v 2>/dev/null 1>&2; then @@ -346,7 +354,11 @@ open_kde() open_gnome() { - gnome-open "$1" + if gvfs-open --help 2>/dev/null 1>&2; then + gvfs-open "$1" + else + gnome-open "$1" + fi if [ $? -eq 0 ]; then exit_success @@ -368,6 +380,30 @@ open_xfce() open_generic() { + filetype=`xdg-mime query filetype "$1" | sed "s/;.*//"` + default=`xdg-mime query default "$filetype"` + if [ -n "$default" ] ; then + xdg_user_dir="$XDG_DATA_HOME" + [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" + + xdg_system_dirs="$XDG_DATA_DIRS" + [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ + + for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do + file="$x/applications/$default" + if [ -r "$file" ] ; then + command="`grep -E "^Exec(\[[^]=]*])?=" "$file" | cut -d= -f 2- | first_word`" + command_exec=`which $command 2>/dev/null` + if [ -x "$command_exec" ] ; then + $command_exec $1 + if [ $? -eq 0 ]; then + exit_success + fi + fi + fi + done + fi + if mimeopen -v 2>/dev/null 1>&2; then mimeopen -n "$1" if [ $? -eq 0 ]; then @@ -391,14 +427,17 @@ open_generic() if [ x"$browser" != x"" ]; then browser_with_arg=`printf "$browser" "$1" 2>/dev/null` - if [ $? -ne 0 ]; then browser_with_arg=$browser; + if [ $? -ne 0 ]; then + browser_with_arg=$browser; fi - if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1"; + if [ x"$browser_with_arg" = x"$browser" ]; then + "$browser" "$1"; else $browser_with_arg; fi - if [ $? -eq 0 ]; then exit_success; + if [ $? -eq 0 ]; then + exit_success; fi fi done diff --git a/scripts/xdg-screensaver b/scripts/xdg-screensaver index 3c34801..7bd9181 100755 --- a/scripts/xdg-screensaver +++ b/scripts/xdg-screensaver @@ -333,6 +333,7 @@ detectDE() { if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; fi } @@ -543,13 +544,13 @@ screensaver_freedesktop() { case "$1" in suspend) - #FIXME (get/store cookie) - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Inhibit $window_id xdg-screensaver > /dev/null + qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Inhibit $window_id xdg-screensaver >| "$screensaver_file.cookie" 2> /dev/null result=$? ;; resume) - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.SetActive true > /dev/null + qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.UnInhibit `cat "$screensaver_file.cookie"` > /dev/null + rm -f "$screensaver_file.cookie" result=$? ;; @@ -563,8 +564,8 @@ screensaver_freedesktop() ;; reset) - #FIXME (cookies?) - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.UnInhibit $window_id > /dev/null + qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.UnInhibit `cat "$screensaver_file.cookie"` > /dev/null + rm -f "$screensaver_file.cookie" result=$? ;; |