Хм, про /usr/share/mime/application и update-mime-database -- это я чуток напутал, речь не про них была, про вызов "xdg-mime default application mimetype(s)".
Жаль сути -- необходимости приложения рук -- это не меняет.
Mate-Slackware-дистрибутив
bormant, Спасибо!!!
Помогла правка скрипта xdg-open в части определения десктопа.
Было:
[console]
#--------------------------------------
# Checks for known desktop environments
# set variable DE to the desktop environments name, lowercase
detectDE()
{
if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde;
elif [ x"$DESKTOP_SESSION" == x"mate" ]; then DE=mate;
else DE=""
fi
}
[/console]
После правки скрипта:
[console]
#--------------------------------------
# Checks for known desktop environments
# set variable DE to the desktop environments name, lowercase
detectDE()
{
if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"MATE" ]; then DE=gnome;
elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde;
# elif [ x"$DESKTOP_SESSION" == x"mate" ]; then DE=mate;
else DE=""
fi
}
[/console]
Теперь mc вызывает для обработки файлов "правильные" программы. Как это работает, к сожалению я не понял... :(
Но главное, что работает и не раздражает... :)
Для себя решил вопрос с xdg-utils, просто используя готовое решение из дистрибутива ALTLinux.
У них, судя по всему, пакет из последнего git и даже версия даже отличается от официальной последней.
Так как это всего лишь скрипты и компиляции не требуется, просто преобразовал их пакет в слаковский формат и переустановил.
Пока всё работает на ура...
Прилагаю скриптик, автоматизирующий преобразование альтовского пакета в слаковский:
[console]
#!/bin/bash
CWD=$(pwd)
if [ ! -r xdg-utils-1.1.0-alt7.noarch.rpm ] ; then
wget f[span]tp://ftp.by.debian.org/pub/ALTLinux/p7/branch/noarch/RPMS.classic/xdg-utils-1.1.0-alt7.noarch.rpm[/span]
fi
rpm2txz -c xdg-utils-1.1.0-alt7.noarch.rpm
mkdir ~/bld
tar xpJf xdg-utils-1.1.0-alt7.noarch.txz -C ~/bld
rm xdg-utils-1.1.0-alt7.noarch.rpm
rm xdg-utils-1.1.0-alt7.noarch.txz
mv ~/bld/usr/share/doc ~/bld/usr
mkdir ~/bld/install
echo ' |-----handy-ruler------------------------------------------------------|' >~/bld/install/slack-desc
echo 'xdg-utils: xdg-utils (command line tools that assist applications)' >>~/bld/install/slack-desc
echo 'xdg-utils:' >>~/bld/install/slack-desc
echo 'xdg-utils: Xdg-utils is a set of command line tools that assist applications' >>~/bld/install/slack-desc
echo 'xdg-utils: with a variety of desktop integration tasks. About half of the' >>~/bld/install/slack-desc
echo 'xdg-utils: tools focus on tasks commonly required during the installation of' >>~/bld/install/slack-desc
echo 'xdg-utils: a desktop application and the other half focuses on integration' >>~/bld/install/slack-desc
echo 'xdg-utils: with the desktop environment while the application is running.' >>~/bld/install/slack-desc
echo 'xdg-utils:' >>~/bld/install/slack-desc
echo 'xdg-utils: Homepage: ht[span]tp://portland.freedesktop.org/wiki/[/span]' >>~/bld/install/slack-desc
echo 'xdg-utils:' >>~/bld/install/slack-desc
echo 'xdg-utils:' >>~/bld/install/slack-desc
cat $CWD/xdg-utils_repack.SlackBuild > ~/bld/usr/doc/xdg-utils-1.1.0/xdg-utils_repack.SlackBuild
cd ~/bld
/sbin/makepkg -l y -c n $CWD/xdg-utils-1.1.0-noarch-7_alt.txz
cd $CWD
rm -R ~/bld
[/console]
Сохраните его под названием "xdg-utils_repack.SlackBuild", сделайте исполняемым и запустите. Должен получиться слаковский пакет "xdg-utils-1.1.0-noarch-7_alt.txz".
Если этого не получилось, значит хреновый из меня начинающий программатор...
А если получился, то установите его:
[console]
upgradepkg --install-new xdg-utils-1.1.0-noarch-7_alt.txz
[/console]
Не знаю почему, но ребятам из ALTLinux я доверяю... Хотя rpm, это не моё... - еле башем ворочаю...
Вместо пачки echo ... >> file можно использовать или многострочную строковую константу:[console]echo "строка 1
...
строка N" > file
[/console]или встроенный документ:[console]
cat <<EOF >file
строка 1
...
строка N
EOF
[/console]что существенно повышает читабельность кода.
[console]mkdir ~/bld
...
rm -R ~/bld[/console]Для подобных целей лучше что-то более безопасное в /tmp, вроде /tmp/package-xdg-utils, ведь в домашнем каталоге вполне может быть bld, в котором может лежать много чего полезного. Вполне подошло бы что-то вроде традиционного:[console]CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-xdg-utils
rm -rf $PKG
mkdir $PKG
...
[/console]
или встроенный документ:[console]
cat <<EOF >file
строка 1
...
строка N
EOF
[/console]что существенно повышает читабельность кода.
Мне, как начинающему, ну очень интересно, как с помощью данной конструкции будет выглядеть такая строка:
[console]
-exec -a "$0" "$HERE/chrome" "$@"'
[/console]
На счёт "~/bld", так это взято у Вас, из материала по русификации...
Исправленный по рекомендациям скрипт:
[console]
#!/bin/bash
CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-xdg-utils
if [ ! -r xdg-utils-1.1.0-alt7.noarch.rpm ] ; then
wget [url]ftp://ftp.by.debian.org/pub/ALTLinux/p7/branch/noarch/RPMS.classic/xdg-utils-1.1.0-alt7.noarch.rpm[/url]
fi
rpm2txz -c xdg-utils-1.1.0-alt7.noarch.rpm
mkdir $PKG
tar xpJf xdg-utils-1.1.0-alt7.noarch.txz -C $PKG
rm xdg-utils-1.1.0-alt7.noarch.rpm
rm xdg-utils-1.1.0-alt7.noarch.txz
mv $PKG/usr/share/doc $PKG/usr
mkdir $PKG/install
cd $PKG/install
wget -c http://slackware.org.uk/slackware/slackware-14.1/source/x/xdg-utils/slack-desc
cat $CWD/xdg-utils_repack.SlackBuild > $PKG/usr/doc/xdg-utils-1.1.0/xdg-utils_repack.SlackBuild
cd $PKG
/sbin/makepkg -l y -c n $CWD/xdg-utils-1.1.0-noarch-7_alt.txz
cd $CWD
rm -R $PKG
[/console]
Ещё один вопрос по MATE. Своего штатного записывателя cdrom'ов он не имеет, поэтому был установлен Xfburn из комплекта XFCE.
Работает прекрасно, если вызывать его из меню.
Но если вставить в устройство считывания дисков чистую болванку, появляются следующие сообщения:

Затем, после нажатия "OK":

Волнует заблокированный пункт меню - "Приложения не найдены"...
Как заставить MATE попытаться найти нужное приложение?
Caja — правка — параметры — вкладка "носители". :)Вы забыли самое главное, как выйти на это окно?
Какая "правка"? Где можно увидеть этот пункт?
Ещё "понятнее"... И как это связать с моей проблемой? Ведь это форум, ответы должны быть без намеков и прямые. Вы для меня ответили или для всех?
По моему на этот вопрос ответил. Что тут непонятного?Как заставить MATE попытаться найти нужное приложение?


