| 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 408 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 419     # All output to stderr | 419     # All output to stderr | 
| 420     xdg_redirect_output=" >&2" | 420     xdg_redirect_output=" >&2" | 
| 421 fi | 421 fi | 
| 422 | 422 | 
| 423 #-------------------------------------- | 423 #-------------------------------------- | 
| 424 # Checks for known desktop environments | 424 # Checks for known desktop environments | 
| 425 # set variable DE to the desktop environments name, lowercase | 425 # set variable DE to the desktop environments name, lowercase | 
| 426 | 426 | 
| 427 detectDE() | 427 detectDE() | 
| 428 { | 428 { | 
|  | 429     # see https://bugs.freedesktop.org/show_bug.cgi?id=34164 | 
|  | 430     unset GREP_OPTIONS | 
|  | 431 | 
| 429     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; | 432     if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; | 
| 430     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; | 433     elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; | 
| 431     elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/D
      Bus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/nul
      l 2>&1` ; then DE=gnome; | 434     elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/D
      Bus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/nul
      l 2>&1` ; then DE=gnome; | 
| 432     elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/nul
      l 2>&1; then DE=xfce; | 435     elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/nul
      l 2>&1; then DE=xfce; | 
|  | 436     elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>
      &1; then DE=xfce | 
| 433     fi | 437     fi | 
| 434 | 438 | 
| 435     if [ x"$DE" = x"" ]; then | 439     if [ x"$DE" = x"" ]; then | 
| 436       # fallback to checking $DESKTOP_SESSION | 440       # fallback to checking $DESKTOP_SESSION | 
| 437       case "$DESKTOP_SESSION" in | 441       case "$DESKTOP_SESSION" in | 
|  | 442          gnome) | 
|  | 443            DE=gnome; | 
| 438          LXDE) | 444          LXDE) | 
| 439            DE=lxde; | 445            DE=lxde; | 
| 440            ;; | 446            ;; | 
| 441          xfce|xfce4) | 447          xfce|xfce4) | 
| 442            DE=xfce; | 448            DE=xfce; | 
| 443            ;; | 449            ;; | 
| 444       esac | 450       esac | 
| 445     fi | 451     fi | 
| 446 | 452 | 
| 447     if [ x"$DE" = x"" ]; then | 453     if [ x"$DE" = x"" ]; then | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 460     fi | 466     fi | 
| 461 } | 467 } | 
| 462 | 468 | 
| 463 #---------------------------------------------------------------------------- | 469 #---------------------------------------------------------------------------- | 
| 464 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 | 470 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 | 
| 465 # It also always returns 1 in KDE 3.4 and earlier | 471 # It also always returns 1 in KDE 3.4 and earlier | 
| 466 # Simply return 0 in such case | 472 # Simply return 0 in such case | 
| 467 | 473 | 
| 468 kfmclient_fix_exit_code() | 474 kfmclient_fix_exit_code() | 
| 469 { | 475 { | 
| 470     [ x"$KDE_SESSION_VERSION" = x"4" ] && return 0; |  | 
| 471     version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'` | 476     version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'` | 
| 472     major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'` | 477     major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'` | 
| 473     minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'` | 478     minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'` | 
| 474     release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` | 479     release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` | 
| 475     test "$major" -gt 3 && return $1 | 480     test "$major" -gt 3 && return $1 | 
| 476     test "$minor" -gt 5 && return $1 | 481     test "$minor" -gt 5 && return $1 | 
| 477     test "$release" -gt 4 && return $1 | 482     test "$release" -gt 4 && return $1 | 
| 478     return 0 | 483     return 0 | 
| 479 } | 484 } | 
| 480 | 485 | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
| 497          eval '$x/update-mime-database $1'$xdg_redirect_output | 502          eval '$x/update-mime-database $1'$xdg_redirect_output | 
| 498          return | 503          return | 
| 499       fi | 504       fi | 
| 500    done | 505    done | 
| 501 } | 506 } | 
| 502 | 507 | 
| 503 info_kde() | 508 info_kde() | 
| 504 { | 509 { | 
| 505     if [ x"$KDE_SESSION_VERSION" = x"4" ]; then | 510     if [ x"$KDE_SESSION_VERSION" = x"4" ]; then | 
| 506         DEBUG 1 "Running kmimetypefinder \"$1\"" | 511         DEBUG 1 "Running kmimetypefinder \"$1\"" | 
| 507         KMIMETYPEFINDER=`which kmimetypefinder 2>/dev/null` | 512         kmimetypefinder "$1" 2>/dev/null | head -n 1 | 
| 508         $KMIMETYPEFINDER "$1" 2>/dev/null | head -n 1 |  | 
| 509     else | 513     else | 
| 510         DEBUG 1 "Running kfile \"$1\"" | 514         DEBUG 1 "Running kfile \"$1\"" | 
| 511         KFILE=`which kfile 2>/dev/null` | 515         kfile "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1 | 
| 512         $KFILE "$1" 2> /dev/null | head -n 1 | cut -d "(" -f 2 | cut -d ")" -f 1 |  | 
| 513     fi | 516     fi | 
| 514 | 517 | 
| 515     if [ $? -eq 0 ]; then | 518     if [ $? -eq 0 ]; then | 
| 516         exit_success | 519         exit_success | 
| 517     else | 520     else | 
| 518         exit_failure_operation_failed | 521         exit_failure_operation_failed | 
| 519     fi | 522     fi | 
| 520 } | 523 } | 
| 521 | 524 | 
| 522 info_gnome() | 525 info_gnome() | 
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 682         print "ServiceType=" mimetype | 685         print "ServiceType=" mimetype | 
| 683     } | 686     } | 
| 684 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file | 687 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file | 
| 685     fi | 688     fi | 
| 686 } | 689 } | 
| 687 | 690 | 
| 688 make_default_generic() | 691 make_default_generic() | 
| 689 { | 692 { | 
| 690     # $1 is vendor-name.desktop | 693     # $1 is vendor-name.desktop | 
| 691     # $2 is mime/type | 694     # $2 is mime/type | 
| 692     # Add $2=$1 to XDG_DATA_HOME/applications/defaults.list | 695     # Add $2=$1 to XDG_DATA_HOME/applications/mimeapps.list | 
| 693     xdg_user_dir="$XDG_DATA_HOME" | 696     xdg_user_dir="$XDG_DATA_HOME" | 
| 694     [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" | 697     [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" | 
| 695     default_file="$xdg_user_dir/applications/defaults.list" | 698     default_file="$xdg_user_dir/applications/mimeapps.list" | 
| 696     DEBUG 2 "make_default_generic $1 $2" | 699     DEBUG 2 "make_default_generic $1 $2" | 
| 697     DEBUG 1 "Updating $default_file" | 700     DEBUG 1 "Updating $default_file" | 
| 698     grep -v "$2=" $default_file > ${default_file}.new 2> /dev/null | 701     awk -v mimetype="$2" -v application="$1" ' | 
| 699     if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then | 702     BEGIN { | 
| 700        echo "[Default Applications]" >> ${default_file}.new | 703         prefix=mimetype "=" | 
| 701     fi | 704         indefault=0 | 
| 702     echo $2=$1 >> ${default_file}.new | 705         added=0 | 
| 703     mv ${default_file}.new $default_file | 706         blanks=0 | 
|  | 707         found=0 | 
|  | 708     } | 
|  | 709     { | 
|  | 710         suppress=0 | 
|  | 711         if (index($0, "[Default Applications]") == 1) { | 
|  | 712             indefault=1 | 
|  | 713             found=1 | 
|  | 714         } else if (index($0, "[") == 1) { | 
|  | 715             if (!added && indefault) { | 
|  | 716                 print prefix application | 
|  | 717                 added=1 | 
|  | 718             } | 
|  | 719             indefault=0 | 
|  | 720         } else if ($0 == "") { | 
|  | 721             suppress=1 | 
|  | 722             blanks++ | 
|  | 723         } else if (indefault && !added && index($0, prefix) == 1) { | 
|  | 724                 $0=prefix application | 
|  | 725                 added=1 | 
|  | 726         } | 
|  | 727         if (!suppress) { | 
|  | 728             while (blanks > 0) { | 
|  | 729                 print "" | 
|  | 730                 blanks-- | 
|  | 731             } | 
|  | 732             print $0 | 
|  | 733         } | 
|  | 734     } | 
|  | 735     END { | 
|  | 736         if (!added) { | 
|  | 737             if (!found) { | 
|  | 738                 print "" | 
|  | 739                 print "[Default Applications]" | 
|  | 740             } | 
|  | 741             print prefix application | 
|  | 742         } | 
|  | 743         while (blanks > 0) { | 
|  | 744             print "" | 
|  | 745             blanks-- | 
|  | 746         } | 
|  | 747     } | 
|  | 748 ' $default_file > ${default_file}.new && mv ${default_file}.new $default_file | 
| 704 } | 749 } | 
| 705 | 750 | 
| 706 defapp_generic() | 751 defapp_generic() | 
| 707 { | 752 { | 
| 708     MIME="$1" | 753     MIME="$1" | 
| 709     xdg_user_dir="$XDG_DATA_HOME" | 754     xdg_user_dir="$XDG_DATA_HOME" | 
| 710     [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" | 755     [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" | 
| 711     xdg_user_dir="$xdg_user_dir/$xdg_dir_name" | 756     xdg_user_dir="$xdg_user_dir/$xdg_dir_name" | 
| 712     xdg_system_dirs="$XDG_DATA_DIRS" | 757     xdg_system_dirs="$XDG_DATA_DIRS" | 
| 713     [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ | 758     [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ | 
| 714 | 759 | 
| 715     for x in `echo "$xdg_user_dir:$xdg_system_dirs" | sed 's/:/ /g'`; do | 760     for x in `echo "$xdg_user_dir" | sed 's/:/ /g'`; do | 
|  | 761         mimeapps_list="$x/applications/mimeapps.list" | 
|  | 762         if [ -f "$mimeapps_list" ] ; then | 
|  | 763             DEBUG 2 "Checking $mimeapps_list" | 
|  | 764             trader_result=`awk -v mimetype="$MIME" ' | 
|  | 765     BEGIN { | 
|  | 766         prefix=mimetype "=" | 
|  | 767         indefault=0 | 
|  | 768         found=0 | 
|  | 769     } | 
|  | 770     { | 
|  | 771         if (index($0, "[Default Applications]") == 1) { | 
|  | 772             indefault=1 | 
|  | 773         } else if (index($0, "[") == 1) { | 
|  | 774             indefault=0 | 
|  | 775         } else if (!found && indefault && index($0, prefix) == 1) { | 
|  | 776             print substr($0, length(prefix) +1, length) | 
|  | 777             found=1 | 
|  | 778         } | 
|  | 779     } | 
|  | 780 ' $mimeapps_list` | 
|  | 781             if [ -n "$trader_result" ] ; then | 
|  | 782                 echo $trader_result | 
|  | 783                 exit_success | 
|  | 784             fi | 
|  | 785         fi | 
|  | 786     done | 
|  | 787 | 
|  | 788     for x in `echo "$xdg_system_dirs" | sed 's/:/ /g'`; do | 
| 716        DEBUG 2 "Checking $x/applications/defaults.list" | 789        DEBUG 2 "Checking $x/applications/defaults.list" | 
| 717        trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null |
       cut -d '=' -f 2 | cut -d ';' -f 1` | 790        trader_result=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null |
       cut -d '=' -f 2 | cut -d ';' -f 1` | 
| 718        if [ -n "$trader_result" ] ; then | 791        if [ -n "$trader_result" ] ; then | 
| 719           echo $trader_result | 792           echo $trader_result | 
| 720           exit_success | 793           exit_success | 
| 721        fi | 794        fi | 
| 722     done | 795     done | 
| 723     exit_success | 796     exit_success | 
| 724 } | 797 } | 
| 725 | 798 | 
| (...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1241                 rm -f $kde_dir/$x.desktop | 1314                 rm -f $kde_dir/$x.desktop | 
| 1242             fi | 1315             fi | 
| 1243         done | 1316         done | 
| 1244         ;; | 1317         ;; | 
| 1245 esac | 1318 esac | 
| 1246 | 1319 | 
| 1247 update_mime_database $xdg_base_dir | 1320 update_mime_database $xdg_base_dir | 
| 1248 | 1321 | 
| 1249 exit_success | 1322 exit_success | 
| 1250 | 1323 | 
| OLD | NEW | 
|---|