2008-04-02 19:05:41 +02:00
|
|
|
#! /bin/sh
|
|
|
|
#
|
2008-04-09 21:41:41 +02:00
|
|
|
# Copyright (c) 2006, 2008 SuSE
|
2008-04-02 19:05:41 +02:00
|
|
|
# Author: Stanislav Brabec <sbrabec@suse.cz>
|
|
|
|
#
|
|
|
|
# Creates defaults.list from gnome_defaults.conf using only available
|
|
|
|
# applications and preferring GNOME and GTK applications.
|
|
|
|
#
|
|
|
|
# See /etc/gnome_defaults.conf for algorithm description.
|
|
|
|
|
|
|
|
shopt -s nullglob
|
|
|
|
|
|
|
|
unset DUMMY ${!MIME_*} ${!APP_*} ${!DEFAULT_*} ${!PREFDEFAULT_*} ${!DEFDESKTOP_*}
|
|
|
|
|
|
|
|
# Ensure, that $XDG_DATA_DIRS is set properly. (#71978, #240603)
|
|
|
|
if test "$PROFILEREAD" != true ; then
|
|
|
|
. $r/etc/profile
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Read defaults.list and set applications as best candidates.
|
|
|
|
exec <$r/etc/gnome_defaults.conf
|
|
|
|
while read ; do
|
2008-04-09 21:41:41 +02:00
|
|
|
case "$REPLY" in
|
|
|
|
"#"* | "" )
|
2008-04-02 19:05:41 +02:00
|
|
|
;;
|
|
|
|
# Is is default application for particular MIME type?
|
|
|
|
*=* )
|
|
|
|
# Strip optional priority record (and ignore it - no GNOME app uses it).
|
|
|
|
MIME=${REPLY%%=*}
|
|
|
|
# Replace special characters.
|
|
|
|
MIMES=${MIME//_/__}
|
|
|
|
MIMES=${MIMES//\//_S}
|
|
|
|
MIMES=${MIMES//-/_M}
|
|
|
|
MIMES=${MIMES//+/_P}
|
|
|
|
MIMES=${MIMES//./_D}
|
|
|
|
eval DEFAULT_${MIMES}\=${REPLY#*=}
|
|
|
|
;;
|
|
|
|
# Is it preferred default application?
|
|
|
|
!* )
|
|
|
|
DESKTOP=${REPLY#!}
|
|
|
|
DESKTOPS=${DESKTOP//_/__}
|
|
|
|
DESKTOPS=${DESKTOPS//-/_M}
|
|
|
|
DESKTOPS=${DESKTOPS//+/_P}
|
|
|
|
DESKTOPS=${DESKTOPS//./_D}
|
|
|
|
DESKTOPS=${DESKTOPS// /_S}
|
|
|
|
DESKTOPS=${DESKTOPS//:/_C}
|
|
|
|
eval DEFDESKTOP_$DESKTOPS\=PREFDEFAULT
|
|
|
|
;;
|
|
|
|
# Is it default application?
|
|
|
|
* )
|
|
|
|
DESKTOP=${REPLY}
|
|
|
|
DESKTOPS=${DESKTOP//_/__}
|
|
|
|
DESKTOPS=${DESKTOPS//-/_M}
|
|
|
|
DESKTOPS=${DESKTOPS//+/_P}
|
|
|
|
DESKTOPS=${DESKTOPS//./_D}
|
|
|
|
DESKTOPS=${DESKTOPS// /_S}
|
|
|
|
DESKTOPS=${DESKTOPS//:/_C}
|
|
|
|
eval DEFDESKTOP_$DESKTOPS\=DEFAULT
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
exec <&-
|
|
|
|
|
|
|
|
IFS="$IFS:;"
|
|
|
|
# Browse all desktop files
|
|
|
|
for DIR in ${XDG_DATA_DIRS:-/usr/local/share:/usr/share} ; do
|
|
|
|
for DESKTOP in $r$DIR/applications/*.desktop ; do
|
|
|
|
DESKTOPN=${DESKTOP##*/}
|
|
|
|
DESKTOPS=${DESKTOPN//_/__}
|
|
|
|
DESKTOPS=${DESKTOPS//-/_M}
|
|
|
|
DESKTOPS=${DESKTOPS//+/_P}
|
|
|
|
DESKTOPS=${DESKTOPS//./_D}
|
|
|
|
DESKTOPS=${DESKTOPS// /_S}
|
|
|
|
DESKTOPS=${DESKTOPS//:/_C}
|
|
|
|
IS_DEFAULT_DESKTOP=false
|
|
|
|
eval "if test \"\$DEFDESKTOP_$DESKTOPS\" ; then
|
|
|
|
IS_DEFAULT_DESKTOP=true
|
|
|
|
DEFTYPE=\$DEFDESKTOP_$DESKTOPS
|
|
|
|
fi"
|
|
|
|
exec <"$DESKTOP"
|
|
|
|
CATEGORIES=
|
|
|
|
MIMETYPE=
|
|
|
|
while read ; do
|
|
|
|
case "$REPLY" in
|
|
|
|
Categories=* )
|
|
|
|
CATEGORIES="${REPLY#Categories=}"
|
|
|
|
;;
|
|
|
|
MimeType=* )
|
|
|
|
MIMETYPE="${REPLY#MimeType=}"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
exec <&-
|
|
|
|
# Is it a GNOME application?
|
|
|
|
APPTYPE=GENERIC
|
|
|
|
if test "$CATEGORIES" != "${CATEGORIES/GTK}" ; then
|
|
|
|
APPTYPE=GTK
|
|
|
|
fi
|
|
|
|
if test "$CATEGORIES" != "${CATEGORIES/GNOME}" ; then
|
|
|
|
APPTYPE=GNOME
|
|
|
|
fi
|
|
|
|
if $IS_DEFAULT_DESKTOP ; then
|
|
|
|
APPTYPE=$DEFTYPE
|
|
|
|
fi
|
|
|
|
for MIME in $MIMETYPE ; do
|
|
|
|
# Strip optional priority record (and ignore it - no GNOME app uses it).
|
|
|
|
MIME=${MIME%:*}
|
|
|
|
# Replace special characters.
|
|
|
|
MIMES=${MIME//_/__}
|
|
|
|
MIMES=${MIMES//\//_S}
|
|
|
|
MIMES=${MIMES//-/_M}
|
|
|
|
MIMES=${MIMES//+/_P}
|
|
|
|
MIMES=${MIMES//./_D}
|
|
|
|
eval MIME_$MIMES\=$MIME
|
|
|
|
IS_DEFAULT=false
|
|
|
|
eval "if test \"\$DEFAULT_$MIMES\" = \"\$DESKTOPN\" ; then
|
|
|
|
IS_DEFAULT=true
|
|
|
|
fi"
|
|
|
|
if $IS_DEFAULT ; then
|
2008-04-09 21:41:41 +02:00
|
|
|
eval APP_MIMEDEFAULT_$MIMES\=\"\$DESKTOPN\"
|
2008-04-02 19:05:41 +02:00
|
|
|
else
|
|
|
|
eval APP_${APPTYPE}_$MIMES\=\"\$DESKTOPN\"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
exec >$r/var/cache/gio-2.0/defaults.list
|
|
|
|
echo "# generated by SuSEconfig --module glib2 from /etc/gnome_defaults.conf"
|
|
|
|
echo "[Default Applications]"
|
|
|
|
|
|
|
|
# Browse all offered MIME types and write defaults.list.
|
|
|
|
for MIMES in ${!MIME_*} ; do
|
|
|
|
eval MIME\=\$$MIMES
|
|
|
|
MIMES=${MIMES#MIME_}
|
|
|
|
# Try GNOME applications first, then GTK, then generic.
|
2008-04-09 21:41:41 +02:00
|
|
|
for APPTYPE in MIMEDEFAULT PREFDEFAULT DEFAULT GNOME GTK GENERIC ; do
|
2008-04-02 19:05:41 +02:00
|
|
|
eval "if test \"\$APP_${APPTYPE}_$MIMES\" ; then
|
|
|
|
echo \"$MIME=\$APP_${APPTYPE}_$MIMES\" ;
|
|
|
|
break ;
|
|
|
|
fi"
|
|
|
|
done
|
|
|
|
done
|
|
|
|
exec >&-
|