| OLD | NEW |
| 1 #!/bin/sh | 1 #!/bin/sh |
| 2 #--------------------------------------------- | 2 #--------------------------------------------- |
| 3 # xdg-desktop-menu | 3 # xdg-desktop-menu |
| 4 # | 4 # |
| 5 # Utility script to install menu items on a Linux desktop. | 5 # Utility script to install menu items on a Linux desktop. |
| 6 # Refer to the usage() function below for usage. | 6 # Refer to the usage() function below for usage. |
| 7 # | 7 # |
| 8 # Copyright 2006, Kevin Krammer <kevin.krammer@gmx.at> | 8 # Copyright 2006, Kevin Krammer <kevin.krammer@gmx.at> |
| 9 # Copyright 2006, Jeremy White <jwhite@codeweavers.com> | 9 # Copyright 2006, Jeremy White <jwhite@codeweavers.com> |
| 10 # | 10 # |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 exit_failure_file_permission_read() | 490 exit_failure_file_permission_read() |
| 491 { | 491 { |
| 492 if [ $# -gt 0 ]; then | 492 if [ $# -gt 0 ]; then |
| 493 echo "xdg-desktop-menu: $@" >&2 | 493 echo "xdg-desktop-menu: $@" >&2 |
| 494 fi | 494 fi |
| 495 | 495 |
| 496 exit 5 | 496 exit 5 |
| 497 } | 497 } |
| 498 | 498 |
| 499 #------------------------------------------------------------ | 499 #------------------------------------------------------------ |
| 500 # Exit script on insufficient permission to read a specified file | 500 # Exit script on insufficient permission to write a specified file |
| 501 | 501 |
| 502 exit_failure_file_permission_write() | 502 exit_failure_file_permission_write() |
| 503 { | 503 { |
| 504 if [ $# -gt 0 ]; then | 504 if [ $# -gt 0 ]; then |
| 505 echo "xdg-desktop-menu: $@" >&2 | 505 echo "xdg-desktop-menu: $@" >&2 |
| 506 fi | 506 fi |
| 507 | 507 |
| 508 exit 6 | 508 exit 6 |
| 509 } | 509 } |
| 510 | 510 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 echo "Use 'man xdg-desktop-menu' or 'xdg-desktop-menu --manual' for
additional info." | 567 echo "Use 'man xdg-desktop-menu' or 'xdg-desktop-menu --manual' for
additional info." |
| 568 exit_success | 568 exit_success |
| 569 ;; | 569 ;; |
| 570 | 570 |
| 571 --manual) | 571 --manual) |
| 572 manualpage | 572 manualpage |
| 573 exit_success | 573 exit_success |
| 574 ;; | 574 ;; |
| 575 | 575 |
| 576 --version) | 576 --version) |
| 577 echo "xdg-desktop-menu 1.0.1" | 577 echo "xdg-desktop-menu 1.0.2" |
| 578 exit_success | 578 exit_success |
| 579 ;; | 579 ;; |
| 580 esac | 580 esac |
| 581 done | 581 done |
| 582 } | 582 } |
| 583 | 583 |
| 584 check_common_commands "$@" | 584 check_common_commands "$@" |
| 585 | 585 |
| 586 [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; | 586 [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; |
| 587 if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then | 587 if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then |
| 588 # Be silent | 588 # Be silent |
| 589 xdg_redirect_output=" > /dev/null 2> /dev/null" | 589 xdg_redirect_output=" > /dev/null 2> /dev/null" |
| 590 else | 590 else |
| 591 # All output to stderr | 591 # All output to stderr |
| 592 xdg_redirect_output=" >&2" | 592 xdg_redirect_output=" >&2" |
| 593 fi | 593 fi |
| 594 | 594 |
| 595 #-------------------------------------- | 595 #-------------------------------------- |
| 596 # Checks for known desktop environments | 596 # Checks for known desktop environments |
| 597 # set variable DE to the desktop environments name, lowercase | 597 # set variable DE to the desktop environments name, lowercase |
| 598 | 598 |
| 599 detectDE() | 599 detectDE() |
| 600 { | 600 { |
| 601 if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; | 601 if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; |
| 602 elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; | 602 elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; |
| 603 elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then
DE=xfce; | 603 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; |
| 604 elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/nul
l 2>&1; then DE=xfce; |
| 604 fi | 605 fi |
| 605 } | 606 } |
| 606 | 607 |
| 607 #---------------------------------------------------------------------------- | 608 #---------------------------------------------------------------------------- |
| 608 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 | 609 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 |
| 609 # It also always returns 1 in KDE 3.4 and earlier | 610 # It also always returns 1 in KDE 3.4 and earlier |
| 610 # Simply return 0 in such case | 611 # Simply return 0 in such case |
| 611 | 612 |
| 612 kfmclient_fix_exit_code() | 613 kfmclient_fix_exit_code() |
| 613 { | 614 { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 628 for x in `echo $PATH | sed 's/:/ /g'` /opt/gnome/bin; do | 629 for x in `echo $PATH | sed 's/:/ /g'` /opt/gnome/bin; do |
| 629 if [ -x $x/update-desktop-database ] ; then | 630 if [ -x $x/update-desktop-database ] ; then |
| 630 DEBUG 1 "Running $x/update-desktop-database" | 631 DEBUG 1 "Running $x/update-desktop-database" |
| 631 eval '$x/update-desktop-database'$xdg_redirect_output | 632 eval '$x/update-desktop-database'$xdg_redirect_output |
| 632 return | 633 return |
| 633 fi | 634 fi |
| 634 done | 635 done |
| 635 fi | 636 fi |
| 636 } | 637 } |
| 637 | 638 |
| 638 fixup_mandriva_categories() | |
| 639 { | |
| 640 DEBUG 1 "fixup_mandriva_categories $1" | |
| 641 awk ' | |
| 642 BEGIN { | |
| 643 xlat["AudioVideo"]="X-Mandrakelinux-Multimedia;X-MandrivaLinux-Multimedia" | |
| 644 xlat["Development"]="X-Mandrakelinux-MoreApplications-Development;X-Mandriva
Linux-MoreApplications-Development" | |
| 645 xlat["Education"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreAppl
ications-Education" | |
| 646 xlat["Game"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreApplicati
ons-Games" | |
| 647 xlat["Graphics"]="X-Mandrakelinux-Multimedia-Graphics" | |
| 648 xlat["Network"]="X-Mandrakelinux-Internet;X-MandrivaLinux-Internet" | |
| 649 xlat["Office"]="X-Mandrakelinux-Office;X-MandrivaLinux-Office" | |
| 650 xlat["System"]="X-Mandrakelinux-System;X-MandrivaLinux-System" | |
| 651 xlat["Utility"]="X-Mandrakelinux-Office-Accessories;X-MandrivaLinux-Office-A
ccessories" | |
| 652 } | |
| 653 { | |
| 654 if (match($0,/Categories=/)) { | |
| 655 split(substr($0,RSTART+11),categories,";") | |
| 656 result="" | |
| 657 for (n in categories) | |
| 658 { | |
| 659 if (categories[n] in xlat) | |
| 660 categories[n]=categories[n] ";" xlat[categories[n]] | |
| 661 if (categories[n]) | |
| 662 result=result categories[n] ";" | |
| 663 } | |
| 664 print "Categories=" result | |
| 665 } | |
| 666 else | |
| 667 { | |
| 668 print $0 | |
| 669 } | |
| 670 }' $1 > $1.new | |
| 671 mv $1.new $1 | |
| 672 } | |
| 673 | |
| 674 # Make application $1/$2 the default for all the mimetypes it support, | 639 # Make application $1/$2 the default for all the mimetypes it support, |
| 675 # iff such mimetype didn't had a default application already. | 640 # iff such mimetype didn't had a default application already. |
| 676 # $1 Install dir for desktop file | 641 # $1 Install dir for desktop file |
| 677 # $2 base name of desktop file | 642 # $2 base name of desktop file |
| 678 make_lazy_default() | 643 make_lazy_default() |
| 679 { | 644 { |
| 680 local mimetypes | 645 local mimetypes |
| 681 local xdg_user_dir | 646 local xdg_user_dir |
| 682 local xdg_default_dirs | 647 local xdg_default_dirs |
| 683 | 648 |
| 684 DEBUG 1 "make_lazy_default $1/$2" | 649 DEBUG 1 "make_lazy_default $1/$2" |
| 685 mimetypes=`awk ' | 650 mimetypes=`awk ' |
| 686 { | 651 { |
| 687 if (match($0,/MimeType=/)) { | 652 if (match($0,/MimeType=/)) { |
| 688 split(substr($0,RSTART+9),mimetypes,";") | 653 split(substr($0,RSTART+9),mimetypes,";") |
| 689 for (n in mimetypes) | 654 for (n in mimetypes) |
| 690 { | 655 { |
| 691 if (mimetypes[n]) | 656 if (mimetypes[n]) |
| 692 print mimetypes[n] | 657 print mimetypes[n] |
| 693 } | 658 } |
| 694 } | 659 } |
| 695 }' "$1/$2" 2> /dev/null` | 660 }' "$1/$2" 2> /dev/null` |
| 696 | 661 |
| 697 for MIME in $mimetypes ; do | 662 for MIME in $mimetypes ; do |
| 698 xdg_default_dirs="$XDG_DATA_DIRS" | 663 xdg_default_dirs="$XDG_DATA_DIRS" |
| 699 [ -n "$xdg_default_dirs" ] || xdg_default_dirs=/usr/local/share/:/usr/sh
are/ | 664 [ -n "$xdg_default_dirs" ] || xdg_default_dirs=/usr/local/share/:/usr/sh
are/ |
| 700 if [ x"$mode" = x"user" ] ; then | 665 if [ x"$mode" = x"user" ] ; then |
| 701 xdg_user_dir="$XDG_DATA_HOME" | 666 xdg_user_dir="$XDG_DATA_HOME" |
| 702 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" | 667 [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" |
| 703 xdg_default_dirs="$xdg_user_dir:$xdg_default_dirs" | 668 xdg_default_dirs="$xdg_user_dir:$xdg_default_dirs" |
| 704 fi | 669 fi |
| 705 local default_app | 670 local default_app |
| 706 for x in `echo "$xdg_default_dirs" | sed 's/:/ /g'`; do | 671 for x in `echo "$xdg_default_dirs" | sed 's/:/ /g'`; do |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 743 xdg_global_dir= | 708 xdg_global_dir= |
| 744 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do | 709 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do |
| 745 if [ -w $x/$xdg_dir_name ] ; then | 710 if [ -w $x/$xdg_dir_name ] ; then |
| 746 xdg_global_dir="$x/$xdg_dir_name" | 711 xdg_global_dir="$x/$xdg_dir_name" |
| 747 break | 712 break |
| 748 fi | 713 fi |
| 749 done | 714 done |
| 750 xdg_user_dir="$xdg_user_dir/applications-merged" | 715 xdg_user_dir="$xdg_user_dir/applications-merged" |
| 751 xdg_global_dir="$xdg_global_dir/applications-merged" | 716 xdg_global_dir="$xdg_global_dir/applications-merged" |
| 752 | 717 |
| 753 DEBUG 3 "Install locations for *.menu file:" | 718 DEBUG 3 "Install locations for *.menu file:" |
| 754 DEBUG 3 "xdg_user_dir: $xdg_user_dir" | 719 DEBUG 3 "xdg_user_dir: $xdg_user_dir" |
| 755 DEBUG 3 "xdg_global_dir: $xdg_global_dir" | 720 DEBUG 3 "xdg_global_dir: $xdg_global_dir" |
| 756 DEBUG 3 "kde_user_dir: $kde_user_dir" | 721 DEBUG 3 "kde_user_dir: $kde_user_dir" |
| 757 DEBUG 3 "kde_global_dir: $kde_global_dir" | 722 DEBUG 3 "kde_global_dir: $kde_global_dir" |
| 758 DEBUG 3 "gnome_user_dir: $gnome_user_dir" | 723 DEBUG 3 "gnome_user_dir: $gnome_user_dir" |
| 759 DEBUG 3 "gnome_global_dir: $gnome_global_dir" | 724 DEBUG 3 "gnome_global_dir: $gnome_global_dir" |
| 760 | 725 |
| 761 if [ x"$mode" = x"user" ] ; then | 726 if [ x"$mode" = x"user" ] ; then |
| 762 xdg_dir="$xdg_user_dir" | 727 xdg_dir="$xdg_user_dir" |
| 763 kde_dir="$kde_user_dir" | 728 kde_dir="$kde_user_dir" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 fi | 771 fi |
| 807 fi | 772 fi |
| 808 if [ $action = "install" -a x"$mode" = x"user" -a -d "/etc/xdg/menus/kde-app
lications-merged" ] ; then | 773 if [ $action = "install" -a x"$mode" = x"user" -a -d "/etc/xdg/menus/kde-app
lications-merged" ] ; then |
| 809 # Work around for Fedora Core 5 + patched KDE | 774 # Work around for Fedora Core 5 + patched KDE |
| 810 kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-appli
cations-merged^'` | 775 kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-appli
cations-merged^'` |
| 811 if [ ! -e "$kde_xdg_dir" ] ; then | 776 if [ ! -e "$kde_xdg_dir" ] ; then |
| 812 DEBUG 1 "Fedora Workaround: Link '$xdg_dir' to '$kde_xdg_dir'" | 777 DEBUG 1 "Fedora Workaround: Link '$xdg_dir' to '$kde_xdg_dir'" |
| 813 mkdir -p `dirname "$kde_xdg_dir"` | 778 mkdir -p `dirname "$kde_xdg_dir"` |
| 814 eval 'ln -s "applications-merged" "$kde_xdg_dir"'$xdg_redirect_outpu
t | 779 eval 'ln -s "applications-merged" "$kde_xdg_dir"'$xdg_redirect_outpu
t |
| 815 fi | 780 fi |
| 816 fi | 781 fi |
| 817 if [ $action = "install" -a x"$mode" = x"system" -a -d "/etc/xdg/menus/kde-a
pplications-merged" -a ! -d "/etc/xdg/menus/applications-merged" ] ; then | 782 if [ $action = "install" -a x"$mode" = x"system" -a -d "/etc/xdg/menus/kde-a
pplications-merged" -a ! -d "/etc/xdg/menus/applications-merged" ] ; then |
| 818 # Work around for Kubuntu 6.06 | 783 # Work around for Kubuntu 6.06 |
| 819 kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-appli
cations-merged^'` | 784 kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-appli
cations-merged^'` |
| 820 DEBUG 1 "Kubuntu Workaround: Link '$xdg_dir' to 'kde-applications-merged
'" | 785 DEBUG 1 "Kubuntu Workaround: Link '$xdg_dir' to 'kde-applications-merged
'" |
| 821 eval 'ln -s "kde-applications-merged" "$xdg_dir"'$xdg_redirect_output | 786 eval 'ln -s "kde-applications-merged" "$xdg_dir"'$xdg_redirect_output |
| 822 fi | 787 fi |
| 823 | 788 |
| 824 orig_menu_file=$xdg_dir/$menu_file | 789 orig_menu_file=$xdg_dir/$menu_file |
| 825 | 790 |
| 826 DEBUG 1 "Updating $orig_menu_file ($action)" | 791 DEBUG 1 "Updating $orig_menu_file ($action)" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 861 # Files to uninstall are listed in $tmpfile | 826 # Files to uninstall are listed in $tmpfile |
| 862 # Existing files are in $orig_desktop_files | 827 # Existing files are in $orig_desktop_files |
| 863 for desktop_file in $orig_desktop_files; do | 828 for desktop_file in $orig_desktop_files; do |
| 864 if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; the
n | 829 if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; the
n |
| 865 # Keep this file, it's not in the uninstall list | 830 # Keep this file, it's not in the uninstall list |
| 866 new_desktop_files="$new_desktop_files $desktop_file" | 831 new_desktop_files="$new_desktop_files $desktop_file" |
| 867 fi | 832 fi |
| 868 done | 833 done |
| 869 fi | 834 fi |
| 870 rm -f "$tmpfile" | 835 rm -f "$tmpfile" |
| 871 | 836 |
| 872 DEBUG 3 "Files to list in $menu_file: $new_desktop_files" | 837 DEBUG 3 "Files to list in $menu_file: $new_desktop_files" |
| 873 | 838 |
| 874 if [ -n "$new_desktop_files" ] ; then | 839 if [ -n "$new_desktop_files" ] ; then |
| 875 # Install/update | 840 # Install/update |
| 876 test "${TMPDIR+set}" = set || TMPDIR=/tmp | 841 test "${TMPDIR+set}" = set || TMPDIR=/tmp |
| 877 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` | 842 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` |
| 878 ( | 843 ( |
| 879 echo '<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"' | 844 echo '<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"' |
| 880 echo ' "http://www.freedesktop.org/standards/menu-spec/menu-1.0.d
td">' | 845 echo ' "http://www.freedesktop.org/standards/menu-spec/menu-1.0.d
td">' |
| 881 echo '<!-- Do not edit manually - generated and managed by xdg-deskt
op-menu -->' | 846 echo '<!-- Do not edit manually - generated and managed by xdg-deskt
op-menu -->' |
| 882 echo '<Menu>' | 847 echo '<Menu>' |
| 883 echo ' <Name>Applications</Name>' | 848 echo ' <Name>Applications</Name>' |
| 884 | 849 |
| 885 for desktop_file in $directory_files; do | 850 for desktop_file in $directory_files; do |
| 886 basefile=`basename "$desktop_file"` | 851 basefile=`basename "$desktop_file"` |
| 887 basefilename=`echo "$basefile"|cut -d '.' -f 1` | 852 basefilename=`echo "$basefile"|cut -d '.' -f 1` |
| 888 echo "<Menu>" | 853 echo "<Menu>" |
| 889 echo " <Name>$basefilename</Name>" | 854 echo " <Name>$basefilename</Name>" |
| 890 echo " <Directory>$basefile</Directory>" | 855 echo " <Directory>$basefile</Directory>" |
| 891 done | 856 done |
| 892 | 857 |
| 893 echo " <Include>" | 858 echo " <Include>" |
| 894 for desktop_file in $new_desktop_files; do | 859 for desktop_file in $new_desktop_files; do |
| 895 echo " <Filename>$desktop_file</Filename>" | 860 echo " <Filename>$desktop_file</Filename>" |
| 896 done | 861 done |
| 897 echo " </Include>" | 862 echo " </Include>" |
| 898 | 863 |
| 899 for desktop_file in $directory_files; do | 864 for desktop_file in $directory_files; do |
| 900 echo "</Menu>" | 865 echo "</Menu>" |
| 901 done | 866 done |
| 902 | 867 |
| 903 echo '</Menu>' | 868 echo '</Menu>' |
| 904 ) > $tmpfile | 869 ) > $tmpfile |
| 905 chmod $my_chmod $tmpfile | 870 chmod $my_chmod $tmpfile |
| 906 | 871 |
| 907 save_umask=`umask` | 872 save_umask=`umask` |
| 908 umask $my_umask | 873 umask $my_umask |
| 909 | 874 |
| 910 mkdir -p $xdg_dir | 875 mkdir -p $xdg_dir |
| 911 eval 'cp $tmpfile $xdg_dir/$menu_file'$xdg_redirect_output | 876 eval 'cp $tmpfile $xdg_dir/$menu_file'$xdg_redirect_output |
| 912 | 877 |
| 913 umask $save_umask | 878 umask $save_umask |
| 914 rm -f "$tmpfile" | 879 rm -f "$tmpfile" |
| 915 else | 880 else |
| 916 # Uninstall | 881 # Uninstall |
| 917 rm -f $xdg_dir/$menu_file | 882 rm -f $xdg_dir/$menu_file |
| 918 fi | 883 fi |
| 919 | 884 |
| 920 # Uninstall .directory files only if no longer referenced | 885 # Uninstall .directory files only if no longer referenced |
| 921 if [ $action = "uninstall" ] ; then | 886 if [ $action = "uninstall" ] ; then |
| 922 test "${TMPDIR+set}" = set || TMPDIR=/tmp | 887 test "${TMPDIR+set}" = set || TMPDIR=/tmp |
| 923 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` | 888 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` |
| 924 for menu_file in $xdg_dir/*; do | 889 for menu_file in $xdg_dir/*; do |
| 925 if grep 'generated and managed by xdg-desktop-menu' $menu_file > /de
v/null 2> /dev/null; then | 890 if grep 'generated and managed by xdg-desktop-menu' $menu_file > /de
v/null 2> /dev/null; then |
| 926 awk ' | 891 awk ' |
| 927 # List all files within <Directory> tags | 892 # List all files within <Directory> tags |
| 928 BEGIN { | 893 BEGIN { |
| 929 RS="<" | 894 RS="<" |
| 930 } | 895 } |
| 931 /^Directory/ { | 896 /^Directory/ { |
| 932 if (match($0,/>/)) { | 897 if (match($0,/>/)) { |
| 933 print substr($0,RSTART+1) | 898 print substr($0,RSTART+1) |
| 934 } | 899 } |
| 935 }' $menu_file >> $tmpfile | 900 }' $menu_file >> $tmpfile |
| 936 fi | 901 fi |
| 937 done | 902 done |
| 938 orig_directory_files="$directory_files" | 903 orig_directory_files="$directory_files" |
| 939 directory_files= | 904 directory_files= |
| 940 for desktop_file in $orig_directory_files; do | 905 for desktop_file in $orig_directory_files; do |
| 941 if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; the
n | 906 if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; the
n |
| 942 # No longer in use, safe to delete | 907 # No longer in use, safe to delete |
| 943 directory_files="$directory_files $desktop_file" | 908 directory_files="$directory_files $desktop_file" |
| 944 fi | 909 fi |
| 945 done | 910 done |
| 946 rm -f "$tmpfile" | 911 rm -f "$tmpfile" |
| 947 fi | 912 fi |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 991 exit_failure_syntax "mode argument missing for --mode" | 956 exit_failure_syntax "mode argument missing for --mode" |
| 992 fi | 957 fi |
| 993 case "$1" in | 958 case "$1" in |
| 994 user) | 959 user) |
| 995 mode="user" | 960 mode="user" |
| 996 ;; | 961 ;; |
| 997 | 962 |
| 998 system) | 963 system) |
| 999 mode="system" | 964 mode="system" |
| 1000 ;; | 965 ;; |
| 1001 | 966 |
| 1002 *) | 967 *) |
| 1003 exit_failure_syntax "unknown mode '$1'" | 968 exit_failure_syntax "unknown mode '$1'" |
| 1004 ;; | 969 ;; |
| 1005 esac | 970 esac |
| 1006 shift | 971 shift |
| 1007 ;; | 972 ;; |
| 1008 | 973 |
| 1009 --novendor) | 974 --novendor) |
| 1010 vendor=false | 975 vendor=false |
| 1011 ;; | 976 ;; |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1104 xdg_system_dirs="$XDG_DATA_DIRS" | 1069 xdg_system_dirs="$XDG_DATA_DIRS" |
| 1105 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ | 1070 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ |
| 1106 xdg_global_dir= | 1071 xdg_global_dir= |
| 1107 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do | 1072 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do |
| 1108 if [ -w $x/$xdg_dir_name ] ; then | 1073 if [ -w $x/$xdg_dir_name ] ; then |
| 1109 xdg_global_dir="$x/$xdg_dir_name" | 1074 xdg_global_dir="$x/$xdg_dir_name" |
| 1110 break | 1075 break |
| 1111 fi | 1076 fi |
| 1112 done | 1077 done |
| 1113 | 1078 |
| 1114 DEBUG 3 "Install locations for *.directory files:" | 1079 DEBUG 3 "Install locations for *.directory files:" |
| 1115 DEBUG 3 "xdg_user_dir: $xdg_user_dir" | 1080 DEBUG 3 "xdg_user_dir: $xdg_user_dir" |
| 1116 DEBUG 3 "xdg_global_dir: $xdg_global_dir" | 1081 DEBUG 3 "xdg_global_dir: $xdg_global_dir" |
| 1117 DEBUG 3 "kde_user_dir: $kde_user_dir" | 1082 DEBUG 3 "kde_user_dir: $kde_user_dir" |
| 1118 DEBUG 3 "kde_global_dir: $kde_global_dir" | 1083 DEBUG 3 "kde_global_dir: $kde_global_dir" |
| 1119 DEBUG 3 "gnome_user_dir: $gnome_user_dir" | 1084 DEBUG 3 "gnome_user_dir: $gnome_user_dir" |
| 1120 DEBUG 3 "gnome_global_dir: $gnome_global_dir" | 1085 DEBUG 3 "gnome_global_dir: $gnome_global_dir" |
| 1121 | 1086 |
| 1122 if [ x"$mode" = x"user" ] ; then | 1087 if [ x"$mode" = x"user" ] ; then |
| 1123 xdg_dir="$xdg_user_dir" | 1088 xdg_dir="$xdg_user_dir" |
| 1124 kde_dir="$kde_user_dir" | 1089 kde_dir="$kde_user_dir" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1171 xdg_system_dirs="$XDG_DATA_DIRS" | 1136 xdg_system_dirs="$XDG_DATA_DIRS" |
| 1172 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ | 1137 [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ |
| 1173 xdg_global_dir= | 1138 xdg_global_dir= |
| 1174 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do | 1139 for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do |
| 1175 if [ -w $x/$xdg_dir_name ] ; then | 1140 if [ -w $x/$xdg_dir_name ] ; then |
| 1176 xdg_global_dir="$x/$xdg_dir_name" | 1141 xdg_global_dir="$x/$xdg_dir_name" |
| 1177 break | 1142 break |
| 1178 fi | 1143 fi |
| 1179 done | 1144 done |
| 1180 | 1145 |
| 1181 kde_user_dir="$HOME/.kde/share/applnk" | 1146 kde_user_dir=`kde${KDE_SESSION_VERSION}-config --path apps 2> /dev/null | cut -d
':' -f 1` |
| 1182 kde_global_dir="/usr/share/applnk" | 1147 kde_global_dir=`kde${KDE_SESSION_VERSION}-config --path apps 2> /dev/null | cut
-d ':' -f 2` |
| 1183 [ -w $kde_global_dir ] || kde_global_dir= | 1148 [ -w $kde_global_dir ] || kde_global_dir= |
| 1184 | 1149 |
| 1185 gnome_user_dir="$HOME/.gnome/apps" | 1150 gnome_user_dir="$HOME/.gnome/apps" |
| 1186 gnome_global_dir="/usr/share/gnome/apps" | 1151 gnome_global_dir="/usr/share/gnome/apps" |
| 1187 [ -w $gnome_global_dir ] || gnome_global_dir= | 1152 [ -w $gnome_global_dir ] || gnome_global_dir= |
| 1188 | 1153 |
| 1189 [ -f /etc/mandriva-release ] && need_mandriva_fix=true | 1154 DEBUG 3 "Install locations for *.desktop files:" |
| 1190 [ -n "$need_mandriva_fix" ] && DEBUG 1 "Fixing up .desktop categories (Mandriva
work around)" | |
| 1191 | |
| 1192 DEBUG 3 "Install locations for *.desktop files:" | |
| 1193 DEBUG 3 "xdg_user_dir: $xdg_user_dir" | 1155 DEBUG 3 "xdg_user_dir: $xdg_user_dir" |
| 1194 DEBUG 3 "xdg_global_dir: $xdg_global_dir" | 1156 DEBUG 3 "xdg_global_dir: $xdg_global_dir" |
| 1195 DEBUG 3 "kde_user_dir: $kde_user_dir" | 1157 DEBUG 3 "kde_user_dir: $kde_user_dir" |
| 1196 DEBUG 3 "kde_global_dir: $kde_global_dir" | 1158 DEBUG 3 "kde_global_dir: $kde_global_dir" |
| 1197 DEBUG 3 "gnome_user_dir: $gnome_user_dir" | 1159 DEBUG 3 "gnome_user_dir: $gnome_user_dir" |
| 1198 DEBUG 3 "gnome_global_dir: $gnome_global_dir" | 1160 DEBUG 3 "gnome_global_dir: $gnome_global_dir" |
| 1199 | 1161 |
| 1200 if [ x"$mode" = x"user" ] ; then | 1162 if [ x"$mode" = x"user" ] ; then |
| 1201 xdg_dir="$xdg_user_dir" | 1163 xdg_dir="$xdg_user_dir" |
| 1202 kde_dir="$kde_user_dir" | 1164 kde_dir="$kde_user_dir" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1224 case $action in | 1186 case $action in |
| 1225 install) | 1187 install) |
| 1226 save_umask=`umask` | 1188 save_umask=`umask` |
| 1227 umask $my_umask | 1189 umask $my_umask |
| 1228 | 1190 |
| 1229 for x in $xdg_dir $kde_dir $gnome_dir ; do | 1191 for x in $xdg_dir $kde_dir $gnome_dir ; do |
| 1230 mkdir -p $x | 1192 mkdir -p $x |
| 1231 eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output | 1193 eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output |
| 1232 done | 1194 done |
| 1233 | 1195 |
| 1234 if [ -n "$need_mandriva_fix" ] ; then | |
| 1235 fixup_mandriva_categories $xdg_dir/$basefile | |
| 1236 fi | |
| 1237 | |
| 1238 if [ -f $kde_dir/$basefile ] ; then | 1196 if [ -f $kde_dir/$basefile ] ; then |
| 1239 echo "OnlyShowIn=Old;" >> $kde_dir/$basefile | 1197 echo "OnlyShowIn=Old;" >> $kde_dir/$basefile |
| 1240 fi | 1198 fi |
| 1241 | 1199 |
| 1242 if [ -f $gnome_dir/$basefile ] ; then | 1200 if [ -f $gnome_dir/$basefile ] ; then |
| 1243 echo "OnlyShowIn=Old;" >> $gnome_dir/$basefile | 1201 echo "OnlyShowIn=Old;" >> $gnome_dir/$basefile |
| 1244 fi | 1202 fi |
| 1245 | 1203 |
| 1246 make_lazy_default "$xdg_dir" "$basefile" | 1204 make_lazy_default "$xdg_dir" "$basefile" |
| 1247 | 1205 |
| 1248 umask $save_umask | 1206 umask $save_umask |
| 1249 ;; | 1207 ;; |
| 1250 | 1208 |
| 1251 uninstall) | 1209 uninstall) |
| 1252 for x in $xdg_dir $kde_dir $gnome_dir ; do | 1210 for x in $xdg_dir $kde_dir $gnome_dir ; do |
| 1253 rm -f $x/$basefile | 1211 rm -f $x/$basefile |
| 1254 done | 1212 done |
| 1255 | 1213 |
| 1256 ;; | 1214 ;; |
| 1257 esac | 1215 esac |
| 1258 done | 1216 done |
| 1259 | 1217 |
| 1260 if [ x"$update" = x"yes" ] ; then | 1218 if [ x"$update" = x"yes" ] ; then |
| 1261 update_desktop_database | 1219 update_desktop_database |
| 1262 fi | 1220 fi |
| 1263 | 1221 |
| 1264 exit_success | 1222 exit_success |
| OLD | NEW |