xdg-open перестал работать после обновления 16.04

xdg-mime query default inode/directory

правильно дает мне:

nemo.desktop

так, как я ожидаю, и хочу этого.

Но

xdg-open $HOME

выдает ошибку:

xdg-mime: mimetype argument missing
Try 'xdg-mime --help' for more information.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/run-mailcap line 528.
Warning: program returned non-zero exit code #66

... и открывает Audacious.

Я попытался отредактировать строку run-mailcap, чтобы убрать скобки, и это избавило от этого сообщения об ошибке. Но это не решает проблему. Я все еще получаю «аргумент mimetype отсутствует» и открывается неправильная программа.

Я попытался удалить Audacious, и вместо этого он открыл другую неправильную программу (git-cola и chrome).

Я попытался sudo apt-get install --reinstall xdg-utils, и это ничего не изменило.

Редактировать: больше информации, описанное выше поведение происходит как в Cinnamon, так и в Gnome, но не в Lubuntu LXDE. В LXDE запрос дает nemo.desktop, а xdg-open не выдает никаких сообщений об ошибках в терминале, но открывает PCManFM (не nemo).

Это ключ к тому, что не так или как это исправить?

8
задан 27 July 2016 в 15:10

4 ответа

xdg-открытый сценарий оболочки, таким образом, можно отладить его с-x

bash -x /usr/bin/xdg-open $HOME

, это дает мне вывод как это

+ check_common_commands /home/amias
+ '[' 1 -gt 0 ']'
+ parm=/home/amias
+ shift
+ case "$parm" in
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ unset XDG_UTILS_DEBUG_LEVEL
+ '[' 0 -lt 1 ']'
+ xdg_redirect_output=' > /dev/null 2> /dev/null'
+ '[' x/home/amias '!=' x ']'
+ url=
+ '[' 1 -gt 0 ']'
+ parm=/home/amias
+ shift
+ case "$parm" in
+ '[' -n '' ']'
+ url=/home/amias
+ '[' 0 -gt 0 ']'
+ '[' -z /home/amias ']'
+ detectDE
+ unset GREP_OPTIONS
+ '[' -n Unity ']'
+ case "${XDG_CURRENT_DESKTOP}" in
+ '[' x = x ']'
+ '[' x '!=' x ']'
+ '[' xthis-is-deprecated '!=' x ']'
+ DE=gnome
+ '[' xgnome = x ']'
+ '[' xgnome = x ']'
+ '[' xgnome = xgnome ']'
+ which gnome-default-applications-properties
+ DE=gnome3
+ '[' xgnome3 = x ']'
+ DEBUG 2 'Selected DE gnome3'
+ '[' -z '' ']'
+ return 0
+ case "${BROWSER}" in
+ case "$DE" in
+ open_gnome3 /home/amias
+ gvfs-open --help
+ gvfs-open /home/amias
+ '[' 0 -eq 0 ']'
+ exit_success
+ '[' 0 -gt 0 ']'
+ exit 0

, Это от рабочей установки xdg-открытых на 64 битах 16.04.

я показал Вам мой теперь, Вы показываете мне Ваш.

редактирование:

рассмотрение Вашего вывода i видит, что open_generic_xdg_mime не удается возвратить тип пантомимы, и это препятствует тому, чтобы сценарий выбрал правильный сервис. Простое обходное решение должно было бы создать сценарий, названный open_generic_xdg_mime, и заставить его 'петлять-i' против его входа, это даст Вам тип пантомимы, но необходимо будет привести в порядок вывод немного с чем-то, любят сокращение. сообщите мне, нужна ли Вам рука с этим.

0
ответ дан 27 July 2016 в 15:10

У меня была точно та же проблема.
я мог решить проблему просто установкой gvfs-bin (ничто больше)...

sudo apt install gvfs-bin

я узнал это, потому что в файлах журнала от пользователя Amias должен читать:
gvfs-open /home/amias

, Но gvfs-открытый не был установлен в моей системе.

После установки gvfs-bin, это работает!

, Чтобы установить новую ассоциацию файлов (например, использовать Немо для папок), можно сделать:

gvfs-mime --set inode/directory nemo.desktop

- Аплодисменты

2
ответ дан 27 July 2016 в 15:10

Хорошо, кажется, как будто патч был выпущен для других, имеющих подобные проблемы, судящие этой статьей: https://bugs.debian.org/cgi-bin/bugreport.cgi? bug=810587

В этой статье человек встречался:

"Незавершенная левая фигурная скобка в regex удержана от использования, проходится в regex; отмеченный < - ЗДЕСЬ в m / % {< - ЗДЕСЬ (.*?)} / в/usr/bin/run-mailcap строке 528".

при выполнении nmh, который кажется подобным сообщению об ошибке за исключением другой программы. Таким образом, я рекомендовал бы работать:

sudo apt-get upgrade;sudo apt-get dist-upgrade

, Поскольку затронутый пакет мог бы иметь обновленную версию в наличии с патчем.

я надеюсь, что это помогает.

ПРИМЕЧАНИЕ: Это обновит все пакеты, которые могут быть обновлены (который является хорошей вещью независимо), так не удивляйтесь, хотят ли несколько пакетов обновить.

0
ответ дан 27 July 2016 в 15:10

Проблема происходит из-за gvfs-info быть удержавшим от использования.

Строка 635 в xdg-пантомиме использует gvfs-info для гнома. bash gvfs-info "$1" 2> /dev/null | grep standard::content-type | cut -d' ' -f4

Я пытался переоценить ту строку вручную, вот результат:

gvfs-info ~/test.pdf|grep standard::content-type| cut -d' ' -f4
This tool has been deprecated, use 'gio info' instead.
See 'gio help info' for more info.

/usr/bin/gvfs-info: 10: [: ~/test.pdf: unexpected operator
/usr/bin/gvfs-info: 10: [: ~/test.pdf: unexpected operator
application/pdf

Затем я пытался использовать gio info:

gio info ~/test.pdf|grep standard::content-type| cut -d' ' -f4
application/pdf

Таким образом, я временно изменил блок для info_gnome () в xdg-пантомиме для использования gio info вместо этого и обман, это работало!

631 info_gnome()                                                                     
632 {                                                                                
633     if gvfs-info --help 2>/dev/null 1>&2; then                                   
634         DEBUG 1 "Running gvfs-info \"$1\""                                       
635         gnomevfs-info "$1" 2> /dev/null | grep standard::content-type | cut -d' ' -f4 
636     elif gnomevfs-info --help 2>/dev/null 1>&2; then                             
637         DEBUG 1 "Running gnomevfs-info \"$1\""                                   
638         gnomevfs-info --slow-mime "$1" 2> /dev/null | grep "^MIME" | cut -d ":" -f 2 | sed s/"^ "//
639     else                                                                         
640         DEBUG 1 "Running gio info \"$1\""                                        
641         gio info "$1" 2> /dev/null | grep standard::content-type | cut -d' ' -f4 
642     fi                                                                           
643     if [ $? -eq 0 ]; then                                                        
644         exit_success                                                             
645     else                                                                         
646         exit_failure_operation_failed                                            
647     fi                                                                           
648 }
1
ответ дан 27 July 2016 в 15:10

Другие вопросы по тегам:

Похожие вопросы: