Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: third_party/xdg-utils/scripts/xdg-settings.in

Issue 6737007: Update xdg-utils to the latest version available in git. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/xdg-utils/scripts/xdg-settings ('k') | third_party/xdg-utils/scripts/xdg-su.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 #--------------------------------------------- 2 #---------------------------------------------
3 # xdg-settings 3 # xdg-settings
4 # 4 #
5 # Utility script to get various settings from the desktop environment. 5 # Utility script to get various settings from the desktop environment.
6 # 6 #
7 # Refer to the usage() function below for usage. 7 # Refer to the usage() function below for usage.
8 # 8 #
9 # Copyright 2009, Google Inc. 9 # Copyright 2009, Google Inc.
10 # 10 #
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 # In order to remove an application from the automatically-generated list of 100 # In order to remove an application from the automatically-generated list of
101 # applications for handling a given MIME type, the desktop environment may copy 101 # applications for handling a given MIME type, the desktop environment may copy
102 # the global .desktop file into the user's .local directory, and remove that 102 # the global .desktop file into the user's .local directory, and remove that
103 # MIME type from its list. In that case, we must restore the MIME type to the 103 # MIME type from its list. In that case, we must restore the MIME type to the
104 # application's list of MIME types before we can set it as the default for that 104 # application's list of MIME types before we can set it as the default for that
105 # MIME type. (We can't just delete the local version, since the user may have 105 # MIME type. (We can't just delete the local version, since the user may have
106 # made other changes to it as well. So, tweak the existing file.) 106 # made other changes to it as well. So, tweak the existing file.)
107 # This function is hard-coded for text/html but it could be adapted if needed. 107 # This function is hard-coded for text/html but it could be adapted if needed.
108 fix_local_desktop_file() 108 fix_local_desktop_file()
109 { 109 {
110 if test -z "$2" ; then
111 MIME="text/html"
112 else
113 MIME="$2"
114 fi
110 apps="${XDG_DATA_HOME:-$HOME/.local/share}/applications" 115 apps="${XDG_DATA_HOME:-$HOME/.local/share}/applications"
111 # No local desktop file? 116 # No local desktop file?
112 [ ! -f "$apps/$1" ] && return 117 [ ! -f "$apps/$1" ] && return
113 MIME="`grep "^MimeType=" "$apps/$1" | cut -d= -f 2-`" 118 MIMETYPES="`grep "^MimeType=" "$apps/$1" | cut -d= -f 2-`"
114 case "$MIME" in 119 case "$MIMETYPES" in
115 text/html\;*|*\;text/html\;*|*\;text/html\;|*\;text/html) 120 $MIME\;*|*\;$MIME\;*|*\;$MIME\;|*\;$MIME)
116 # Already has text/html? Great! 121 # Already has the mime-type? Great!
117 return 0 122 return 0
118 ;; 123 ;;
119 esac 124 esac
120 125
121 # Add text/html to the list 126 # Add the mime-type to the list
122 temp="`mktemp "$apps/$1.XXXXXX"`" || return 127 temp="`mktemp "$apps/$1.XXXXXX"`" || return
123 grep -v "^MimeType=" "$apps/$1" >> "$temp" 128 grep -v "^MimeType=" "$apps/$1" >> "$temp"
124 echo "MimeType=text/html;$MIME" >> "$temp" 129 echo "MimeType=$MIME;$MIMETYPES" >> "$temp"
125 130
126 oldlines="`wc -l < "$apps/$1"`" 131 oldlines="`wc -l < "$apps/$1"`"
127 newlines="`wc -l < "$temp"`" 132 newlines="`wc -l < "$temp"`"
128 # The new file should have at least as many lines as the old. 133 # The new file should have at least as many lines as the old.
129 if [ $oldlines -le $newlines ]; then 134 if [ $oldlines -le $newlines ]; then
130 mv "$temp" "$apps/$1" 135 mv "$temp" "$apps/$1"
131 # This can take a little bit to get noticed. 136 # This can take a little bit to get noticed.
132 sleep 4 137 sleep 4
133 else 138 else
134 rm -f "$temp" 139 rm -f "$temp"
(...skipping 13 matching lines...) Expand all
148 # copy here, that copy will be used in xdg-mime and we will avoid waiting. 153 # copy here, that copy will be used in xdg-mime and we will avoid waiting.
149 if [ "$DE" = kde -a -z "$XDG_MIME_FIXED" ]; then 154 if [ "$DE" = kde -a -z "$XDG_MIME_FIXED" ]; then
150 ktradertest text/html Application > /dev/null 2>&1 155 ktradertest text/html Application > /dev/null 2>&1
151 # Only do this once, as we only need it once. 156 # Only do this once, as we only need it once.
152 XDG_MIME_FIXED=yes 157 XDG_MIME_FIXED=yes
153 fi 158 fi
154 } 159 }
155 160
156 get_browser_mime() 161 get_browser_mime()
157 { 162 {
163 if test -z "$1" ; then
164 MIME="text/html"
165 else
166 MIME="$1"
167 fi
158 xdg_mime_fixup 168 xdg_mime_fixup
159 xdg-mime query default text/html 169 xdg-mime query default "$MIME"
160 } 170 }
161 171
162 set_browser_mime() 172 set_browser_mime()
163 { 173 {
164 xdg_mime_fixup 174 xdg_mime_fixup
165 orig="`get_browser_mime`" 175 if test -z "$2" ; then
176 MIME="text/html"
177 else
178 MIME="$2"
179 fi
180 orig="`get_browser_mime $MIME`"
166 # Fixing the local desktop file can actually change the default browser all 181 # Fixing the local desktop file can actually change the default browser all
167 # by itself, so we fix it only after querying to find the current default. 182 # by itself, so we fix it only after querying to find the current default.
168 fix_local_desktop_file "$1" || return 183 fix_local_desktop_file "$1" "$MIME" || return
169 mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/applications" 184 mkdir -p "${XDG_DATA_HOME:-$HOME/.local/share}/applications"
170 xdg-mime default "$1" text/html || return 185 xdg-mime default "$1" "$MIME" || return
171 if [ x"`get_browser_mime`" != x"$1" ]; then 186 if [ x"`get_browser_mime`" != x"$1" ]; then
172 # Put back the original value 187 # Put back the original value
173 xdg-mime default "$orig" text/html 188 xdg-mime default "$orig" "$MIME"
174 exit_failure_operation_failed 189 exit_failure_operation_failed
175 fi 190 fi
176 } 191 }
177 192
178 # }}} MIME utilities 193 # }}} MIME utilities
179 # {{{ KDE 194 # {{{ KDE
180 195
181 # Resolves the KDE browser setting to a binary: if prefixed with !, simply remov es it; 196 # Resolves the KDE browser setting to a binary: if prefixed with !, simply remov es it;
182 # otherwise, uses desktop_file_to_binary to get the binary out of the desktop fi le. 197 # otherwise, uses desktop_file_to_binary to get the binary out of the desktop fi le.
183 resolve_kde_browser() 198 resolve_kde_browser()
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 gconftool-2 --type bool --set /desktop/gnome/url-handlers/$protocol/need s_terminal false 348 gconftool-2 --type bool --set /desktop/gnome/url-handlers/$protocol/need s_terminal false
334 gconftool-2 --type bool --set /desktop/gnome/url-handlers/$protocol/enab led true 349 gconftool-2 --type bool --set /desktop/gnome/url-handlers/$protocol/enab led true
335 done 350 done
336 # Set the handler for about: and unknown URL types. 351 # Set the handler for about: and unknown URL types.
337 for protocol in about unknown; do 352 for protocol in about unknown; do
338 gconftool-2 --type string --set /desktop/gnome/url-handlers/$protocol/co mmand "$binary %s" 353 gconftool-2 --type string --set /desktop/gnome/url-handlers/$protocol/co mmand "$binary %s"
339 done 354 done
340 } 355 }
341 356
342 # }}} GNOME 357 # }}} GNOME
358 # {{{ GNOME 3.x
359
360 get_browser_gnome3()
361 {
362 get_browser_mime "x-scheme-handler/http"
363 }
364
365 check_browser_gnome3()
366 {
367 desktop="$1"
368 check="`desktop_file_to_binary "$1"`"
369 if [ -z "$check" ]; then
370 echo no
371 exit_success
372 fi
373 # Check HTTP and HTTPS, but not about: and unknown:.
374 for protocol in http https; do
375 browser="`get_browser_mime "x-scheme-handler/$protocol"`"
376 if [ x"$browser" != x"$desktop" ]; then
377 echo no
378 exit_success
379 fi
380 done
381 echo yes
382 exit_success
383 }
384
385 set_browser_gnome3()
386 {
387 binary="`desktop_file_to_binary "$1"`"
388 [ "$binary" ] || exit_failure_file_missing
389 set_browser_mime "$1" || return
390
391 # Set the default browser.
392 for protocol in http https about unknown; do
393 set_browser_mime "$1" "x-scheme-handler/$protocol" || return
394 done
395 }
396 # }}} GNOME 3.x
343 # {{{ xfce 397 # {{{ xfce
344 398
345 get_browser_xfce() 399 get_browser_xfce()
346 { 400 {
347 search="${XDG_CONFIG_HOME:-$HOME/.config}:${XDG_CONFIG_DIRS:-/etc/xdg}" 401 search="${XDG_CONFIG_HOME:-$HOME/.config}:${XDG_CONFIG_DIRS:-/etc/xdg}"
348 IFS=: 402 IFS=:
349 for dir in $search; do 403 for dir in $search; do
350 unset IFS 404 unset IFS
351 [ "$dir" -a -d "$dir/xfce4" ] || continue 405 [ "$dir" -a -d "$dir/xfce4" ] || continue
352 file="$dir/xfce4/helpers.rc" 406 file="$dir/xfce4/helpers.rc"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 parm="$2" 596 parm="$2"
543 shift 2 597 shift 2
544 598
545 if [ x"$op" != x"get" -a x"$op" != x"check" -a x"$op" != x"set" ]; then 599 if [ x"$op" != x"get" -a x"$op" != x"check" -a x"$op" != x"set" ]; then
546 exit_failure_syntax "invalid operation" 600 exit_failure_syntax "invalid operation"
547 fi 601 fi
548 602
549 detectDE 603 detectDE
550 604
551 case "$DE" in 605 case "$DE" in
552 kde|gnome|xfce) 606 kde|gnome*|xfce)
553 dispatch_specific "$@" 607 dispatch_specific "$@"
554 ;; 608 ;;
555 609
556 generic) 610 generic)
557 dispatch_generic "$@" 611 dispatch_generic "$@"
558 ;; 612 ;;
559 613
560 *) 614 *)
561 exit_failure_operation_impossible "unknown desktop environment" 615 exit_failure_operation_impossible "unknown desktop environment"
562 ;; 616 ;;
563 esac 617 esac
OLDNEW
« no previous file with comments | « third_party/xdg-utils/scripts/xdg-settings ('k') | third_party/xdg-utils/scripts/xdg-su.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698