Index: third_party/xdg-utils/scripts/xdg-open |
=================================================================== |
--- third_party/xdg-utils/scripts/xdg-open (revision 79909) |
+++ third_party/xdg-utils/scripts/xdg-open (working copy) |
@@ -279,7 +279,7 @@ |
;; |
--version) |
- echo "xdg-open 1.0.2" |
+ echo "xdg-open 1.1.0 rc1" |
exit_success |
;; |
esac |
@@ -307,6 +307,8 @@ |
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; |
+ elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; |
+ else DE="" |
fi |
} |
@@ -317,10 +319,11 @@ |
kfmclient_fix_exit_code() |
{ |
- version=`kde${KDE_SESSION_VERSION}-config --version 2>/dev/null | grep KDE` |
- major=`echo $version | sed 's/KDE: \([0-9]\).*/\1/'` |
- minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'` |
- release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` |
+ [ x"$KDE_SESSION_VERSION" = x"4" ] && return 0; |
+ version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'` |
+ major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'` |
+ minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'` |
+ release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` |
test "$major" -gt 3 && return $1 |
test "$minor" -gt 5 && return $1 |
test "$release" -gt 4 && return $1 |
@@ -392,7 +395,7 @@ |
[ -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" |
+ local 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` |
@@ -413,11 +416,13 @@ |
if (echo "$1" | grep -q '^file://' || |
! echo "$1" | egrep -q '^[a-zA-Z+\.\-]+:'); then |
- local file=$(echo "$1" | sed 's%^file://%%') |
+ local file="$1" |
# Decode URLs |
- # TODO |
- |
+ if echo "$file" | grep -q '^file:///'; then |
+ file=${file#file://} |
+ file="$(printf "$(echo "$file" | sed -e 's@%\([a-f0-9A-F]\{2\}\)@\\x\1@g')")" |
+ fi |
check_input_file "$file" |
open_generic_xdg_mime "$file" |
@@ -461,6 +466,32 @@ |
exit_failure_operation_impossible "no method available for opening '$1'" |
} |
+open_lxde() |
+{ |
+ # pcmanfm only knows how to handle file:// urls and filepaths, it seems. |
+ if (echo "$1" | grep -q '^file://' || |
+ ! echo "$1" | egrep -q '^[a-zA-Z+\.\-]+:') |
+ then |
+ local file="$(echo "$1" | sed 's%^file://%%')" |
+ |
+ # handle relative paths |
+ if ! echo "$file" | grep -q '^/'; then |
+ file="$(pwd)/$file" |
+ fi |
+ |
+ pcmanfm "$file" |
+ |
+ else |
+ open_generic "$1" |
+ fi |
+ |
+ if [ $? -eq 0 ]; then |
+ exit_success |
+ else |
+ exit_failure_operation_failed |
+ fi |
+} |
+ |
[ x"$1" != x"" ] || exit_failure_syntax |
url= |
@@ -513,6 +544,10 @@ |
open_xfce "$url" |
;; |
+ lxde) |
+ open_lxde "$url" |
+ ;; |
+ |
generic) |
open_generic "$url" |
;; |