OLD | NEW |
1 #!/bin/sh | 1 #!/bin/sh |
2 #--------------------------------------------- | 2 #--------------------------------------------- |
3 # xdg-mime | 3 # xdg-mime |
4 # | 4 # |
5 # Utility script to manipulate MIME related information | 5 # Utility script to manipulate MIME related information |
6 # on XDG compliant systems. | 6 # on XDG compliant systems. |
7 # | 7 # |
8 # Refer to the usage() function below for usage. | 8 # Refer to the usage() function below for usage. |
9 # | 9 # |
10 # Copyright 2009-2010, Fathi Boudra <fabo@freedesktop.org> | 10 # Copyright 2009-2010, Fathi Boudra <fabo@freedesktop.org> |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 eval '$x/update-mime-database $1'$xdg_redirect_output | 49 eval '$x/update-mime-database $1'$xdg_redirect_output |
50 return | 50 return |
51 fi | 51 fi |
52 done | 52 done |
53 } | 53 } |
54 | 54 |
55 info_kde() | 55 info_kde() |
56 { | 56 { |
57 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then | 57 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then |
58 DEBUG 1 "Running kmimetypefinder \"$1\"" | 58 DEBUG 1 "Running kmimetypefinder \"$1\"" |
59 KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null` | 59 kmimetypefinder "$1" 2>/dev/null | head -n 1 |
60 $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1 | |
61 else | 60 else |
62 DEBUG 1 "Running kfile \"$1\"" | 61 DEBUG 1 "Running kfile \"$1\"" |
63 KFILE=`which kfile 2>/dev/null` | 62 kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1 |
64 $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1 | |
65 fi | 63 fi |
66 | 64 |
67 if [ $? -eq 0 ]; then | 65 if [ $? -eq 0 ]; then |
68 exit_success | 66 exit_success |
69 else | 67 else |
70 exit_failure_operation_failed | 68 exit_failure_operation_failed |
71 fi | 69 fi |
72 } | 70 } |
73 | 71 |
74 info_gnome() | 72 info_gnome() |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 print "ServiceType=" mimetype | 232 print "ServiceType=" mimetype |
235 } | 233 } |
236 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file | 234 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file |
237 fi | 235 fi |
238 } | 236 } |
239 | 237 |
240 make_default_generic() | 238 make_default_generic() |
241 { | 239 { |
242 # $1 is vendor-name.desktop | 240 # $1 is vendor-name.desktop |
243 # $2 is mime/type | 241 # $2 is mime/type |
244 # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list | 242 # Add $2=$1 to XDG_DATA_HOME/applications/mimeapps.list |
245 xdg_user_dir="$XDG_DATA_HOME" | 243 xdg_user_dir="$XDG_DATA_HOME" |
246 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" | 244 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" |
247 default_file="$xdg_user_dir/applications/defaults.list" | 245 default_file="$xdg_user_dir/applications/mimeapps.list" |
248 DEBUG 2 "make_default_generic $1 $2" | 246 DEBUG 2 "make_default_generic $1 $2" |
249 DEBUG 1 "Updating $default_file" | 247 DEBUG 1 "Updating $default_file" |
250 grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null | 248 awk -v mimetype="$2" -v application="$1" ' |
251 if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then | 249 BEGIN { |
252 echo "[Default Applications]" >> ${default_file}.new | 250 prefix=mimetype "=" |
253 fi | 251 indefault=0 |
254 echo $2=$1 >> ${default_file}.new | 252 added=0 |
255 mv ${default_file}.new $default_file | 253 blanks=0 |
| 254 found=0 |
| 255 } |
| 256 { |
| 257 suppress=0 |
| 258 if (index($0, "[Default Applications]") == 1) { |
| 259 indefault=1 |
| 260 found=1 |
| 261 } else if (index($0, "[") == 1) { |
| 262 if (!added && indefault) { |
| 263 print prefix application |
| 264 added=1 |
| 265 } |
| 266 indefault=0 |
| 267 } else if ($0 == "") { |
| 268 suppress=1 |
| 269 blanks++ |
| 270 } else if (indefault && !added && index($0, prefix) == 1) { |
| 271 $0=prefix application |
| 272 added=1 |
| 273 } |
| 274 if (!suppress) { |
| 275 while (blanks > 0) { |
| 276 print "" |
| 277 blanks-- |
| 278 } |
| 279 print $0 |
| 280 } |
| 281 } |
| 282 END { |
| 283 if (!added) { |
| 284 if (!found) { |
| 285 print "" |
| 286 print "[Default Applications]" |
| 287 } |
| 288 print prefix application |
| 289 } |
| 290 while (blanks > 0) { |
| 291 print "" |
| 292 blanks-- |
| 293 } |
| 294 } |
| 295 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file |
256 } | 296 } |
257 | 297 |
258 defapp_generic() | 298 defapp_generic() |
259 { | 299 { |
260 MIME="$1" | 300 MIME="$1" |
261 xdg_user_dir="$XDG_DATA_HOME" | 301 xdg_user_dir="$XDG_DATA_HOME" |
262 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" | 302 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" |
263 xdg_user_dir="$xdg_user_dir/$xdg_dir_name" | 303 xdg_user_dir="$xdg_user_dir/$xdg_dir_name" |
264 xdg_system_dirs="$XDG_DATA_DIRS" | 304 xdg_system_dirs="$XDG_DATA_DIRS" |
265 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ | 305 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ |
266 | 306 |
267 for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do | 307 for x in `echo "$xdg_user_dir" | sed 's/:/ /g'`; do |
| 308 mimeapps_list="$x/applications/mimeapps.list" |
| 309 if [ -f "$mimeapps_list" ] ; then |
| 310 DEBUG 2 "Checking $mimeapps_list" |
| 311 trader_result=`awk -v mimetype="$MIME" ' |
| 312 BEGIN { |
| 313 prefix=mimetype "=" |
| 314 indefault=0 |
| 315 found=0 |
| 316 } |
| 317 { |
| 318 if (index($0, "[Default Applications]") == 1) { |
| 319 indefault=1 |
| 320 } else if (index($0, "[") == 1) { |
| 321 indefault=0 |
| 322 } else if (!found && indefault && index($0, prefix) == 1) { |
| 323 print substr($0, length(prefix) +1, length) |
| 324 found=1 |
| 325 } |
| 326 } |
| 327 ' $mimeapps_list` |
| 328 if [ -n "$trader_result" ] ; then |
| 329 echo $trader_result |
| 330 exit_success |
| 331 fi |
| 332 fi |
| 333 done |
| 334 |
| 335 for x in `echo "$xdg_system_dirs" | sed 's/:/ /g'`; do |
268 DEBUG 2 "Checking $x/applications/defaults.list" | 336 DEBUG 2 "Checking $x/applications/defaults.list" |
269 trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null |
cut -d '=' -f 2 | cut -d ';' -f 1` | 337 trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null |
cut -d '=' -f 2 | cut -d ';' -f 1` |
270 if [ -n "$trader_result" ] ; then | 338 if [ -n "$trader_result" ] ; then |
271 echo $trader_result | 339 echo $trader_result |
272 exit_success | 340 exit_success |
273 fi | 341 fi |
274 done | 342 done |
275 exit_success | 343 exit_success |
276 } | 344 } |
277 | 345 |
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
793 rm -f $kde_dir/$x.desktop | 861 rm -f $kde_dir/$x.desktop |
794 fi | 862 fi |
795 done | 863 done |
796 ;; | 864 ;; |
797 esac | 865 esac |
798 | 866 |
799 update_mime_database $xdg_base_dir | 867 update_mime_database $xdg_base_dir |
800 | 868 |
801 exit_success | 869 exit_success |
802 | 870 |
OLD | NEW |