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ではない)を開きます。
それは何が間違っているのか、それを修正するための手がかりですか?
私はまったく同じ問題を抱えていました。gvfs-bin
(これ以上)をインストールするだけで問題を解決できました...
Sudo apt install gvfs-bin
これは、ユーザーからのログファイルでAmiasが読み取られるためです。gvfs-open /home/amias
しかし、gvfs-openはシステムにインストールされていません。
gvfs-bin
をインストールした後、動作します!
新しいファイルの関連付けを設定するには(フォルダーにNemoを使用するなど)、次のようにします。
gvfs-mime --set inode/directory nemo.desktop
-乾杯
さて、この記事で判断した同様の問題を抱えている他の人のためにパッチがリリースされたようです: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810587
この記事では、人が遭遇していました:
「正規表現のエスケープされていない左中括弧は廃止され、正規表現にパススルーされます。</-HERE in m /%{<-HERE(。*?)}/at/usr/bin/run-mailcap line 528.」
異なるプログラムを除いて、エラーメッセージに似ているnmhを実行中。だから私は実行することをお勧めします:
Sudo apt-get upgrade;Sudo apt-get dist-upgrade
影響を受けるパッケージには、パッチとともにアップグレードされたバージョンが含まれている可能性があるためです。
これがお役に立てば幸いです。
注:これにより、アップグレード可能なすべてのパッケージがアップグレードされます(これは関係なく良いことです)。したがって、複数のパッケージをアップグレードする必要がある場合は驚かないでください。
この問題は、gvfs-info
が廃止されたためです。
xdg-mimeの635行目はgnomeに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() in xdg-mimeのブロックを変更して、代わりに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 }
xdg-openはシェルスクリプトなので、-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
これは、64ビット16.04で動作するxdg-openのインストールからのものです。
私はあなたのものを見せてくれました。
編集:
出力を見ると、open_generic_xdg_mimeがMIMEタイプを返すことができず、これによりスクリプトが適切なサービスを選択できないことがわかります。簡単な回避策は、open_generic_xdg_mimeというスクリプトを作成し、その入力に対して 'file -i'を実行させることです。これにより、mimeタイプが得られますが、cutなどの出力を少し整理する必要があります。それが必要な場合はお知らせください。