xdg-open parou de funcionar desde a atualização 16.04

7
xdg-mime query default inode/directory

corretamente me dá:

nemo.desktop

como eu espero e quero.

Mas

xdg-open $HOME

Dá um erro:

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

... e abre o Audacious.

Eu tentei editar a linha run-mailcap para escapar das chaves, e isso me livrou dessa mensagem de erro. Mas isso não resolve o problema. Ainda recebo "argumento mimetype missing" e o programa errado é aberto.

Eu tentei desinstalar o Audacious, e ele abre um programa errado diferente (git-cola e chrome).

Eu tentei sudo apt-get install --reinstall xdg-utils e isso não mudou nada.

edit: mais informações, o comportamento descrito acima acontece tanto no Cinnamon quanto no Gnome, mas não no Lubuntu LXDE. No LXDE, a consulta fornece o nemo.desktop e o xdg-open não produz nenhuma mensagem de erro no terminal, mas abre o PCManFM (não nemo).

Isso é uma pista do que está errado ou de como corrigi-lo?

    
por beauxq 31.05.2016 / 06:53

4 respostas

2

Eu tive exatamente o mesmo problema.
Eu poderia resolver o problema apenas instalando gvfs-bin (nada mais) ...

sudo apt install gvfs-bin

Eu descobri isso, porque nos arquivos de log do usuário Amias está escrito: gvfs-open /home/amias

Mas o gvfs-open não foi instalado no meu sistema.

Depois de instalar o gvfs-bin , ele funciona!

Para definir uma nova associação de arquivos (por exemplo, usar o Nemo para pastas), você pode fazer:

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

-residentes

    
por Ben 25.08.2016 / 12:16
0

Ok, parece que um patch foi lançado para outras pessoas com problemas parecidos por este artigo: link

Neste artigo, a pessoa estava encontrando:

"A chave esquerda sem escape no regex está obsoleta, passada por regex; marcada por & lt; - AQUI em m /% {& lt; - AQUI (. *?)} / at / usr / bin / run-mailcap linha 528. "

durante a execução do nmh, que parece semelhante à sua mensagem de erro, exceto por um programa diferente. Então, eu recomendo rodar:

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

Como o pacote afetado pode ter uma versão atualizada disponível com o patch.

Espero que isso ajude.

NOTA: Isto irá atualizar todos os pacotes que podem ser atualizados (o que é uma coisa boa, independentemente), por isso não fique surpreso se vários pacotes quiserem atualizar.

    
por Michael Knoll 31.05.2016 / 07:22
0

O xdg-open é um script de shell para que você possa depurá-lo com -x

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

isso me dá uma saída como essa

+ 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

Isto é de uma instalação funcional do xdg-open em 64bit 16.04.

Eu mostrei o meu agora você me mostra o seu.

editar:

olhando para sua saída, posso ver que open_generic_xdg_mime está falhando ao retornar um tipo MIME e isso está impedindo que o script escolha o serviço correto. Uma solução simples seria criar um script chamado open_generic_xdg_mime e fazer com que ele execute 'file -i' contra sua entrada, isso lhe dará o tipo mime, mas você precisará arrumar a saída um pouco com algo como cortar. deixe-me saber se você precisa de uma mão com isso.

    
por Amias 07.06.2016 / 20:58
0

O problema é que gvfs-info está sendo reprovado.

A linha 635 no xdg-mime está usando gvfs-info para o gnome. bash gvfs-info "" 2> /dev/null | grep standard::content-type | cut -d' ' -f4

Eu tentei reavaliar essa linha manualmente aqui é o resultado:

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

Então tentei usar gio info :

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

Então, eu mudei temporariamente o bloco para info_gnome () no xdg-mime para usar gio info e bam, funcionou!

631 info_gnome()                                                                     
632 {                                                                                
633     if gvfs-info --help 2>/dev/null 1>&2; then                                   
634         DEBUG 1 "Running gvfs-info \"\""                                       
635         gnomevfs-info "" 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 \"\""                                   
638         gnomevfs-info --slow-mime "" 2> /dev/null | grep "^MIME" | cut -d ":" -f 2 | sed s/"^ "//
639     else                                                                         
640         DEBUG 1 "Running gio info \"\""                                        
641         gio info "" 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 }
    
por ExistMe 02.07.2017 / 19:09