〜のようにこの問題、Mendeleyを使用してPDFを開くいくつかのアプリケーション(Caliber、texdoc)があります。 Thunar、Thunderbird、FirefoxなどでPDFを開くと、期待されるデフォルトのevinceが開きます。
次のアプリは以下を使用しているようですxdg-open
。
$ xdg-mime query default application/pdf
mendeleydesktop.desktop
私検索しようとしていますこれはどこから来たが成功しなかった。
xdg-mime default evince.desktop application/pdf
質問は残ります。xdg-open
Mendeleyが基本的なPDFビューアでなければならないというアイデアはどこから来ましたか?
私はUbuntu 16.04とi3 4.11を使用しています。xdg-open
バージョンは1.1.0 rc3です。
答え1
質問は残ります。
xdg-open
Mendeleyが基本的なPDFビューアでなければならないというアイデアはどこから来ましたか?
これは非常に妥当な質問です。これは3つの部分に分かれた少し長い答えです。
オプション1:マニュアルを読む
例えば、無料デスクトップ標準 MIMEタイプの関連付けについては、次のような言葉があります。
MIMEタイプとアプリケーション間の関連付け
ユーザー、システム管理者、アプリケーションベンダー、およびディストリビューションをmimeapps.listというファイルに書き込むことで、アプリケーションとMIMEタイプの間の接続を変更できます。
ファイルは次の順序で検索されます。
$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users) $XDG_CONFIG_HOME/mimeapps.list user overrides (recommended location for user configuration GUIs) $XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific $XDG_CONFIG_DIRS/mimeapps.list sysadmin and ISV overrides $XDG_DATA_HOME/applications/$desktop-mimeapps.list for completeness, deprecated, desktop-specific $XDG_DATA_HOME/applications/mimeapps.list for compatibility, deprecated $XDG_DATA_DIRS/applications/$desktop-mimeapps.list distribution-provided defaults, desktop-specific $XDG_DATA_DIRS/applications/mimeapps.list distribution-provided defaults
この表では、
$desktop
現在のデスクトップの名前の1つで、小文字です(例:kde、gnome、xfceなど)。
環境変数がと のXDG_CONFIG_HOME
場合XDG_DATA_HOME
デフォルトに戻す。
$XDG_DATA_HOME
ユーザー固有のデータファイルを保存する必要がある相対デフォルトディレクトリを定義します。設定されていないか空の場合は、$XDG_DATA_HOME
$HOME/.local/shareと同じデフォルト値を使用する必要があります。
$XDG_CONFIG_HOME
ユーザー固有の構成ファイルを保存する必要がある相対デフォルトディレクトリを定義します。設定されていないか空の場合、デフォルト値$XDG_CONFIG_HOME
は同じを使用する必要があります。$HOME/.config
これは、MIMEタイプの関連付けの最も要求の厳しい側面の1つを示しています。これはさまざまな場所で設定でき、これらの設定は他の場所で上書きできます。しかし、~/.config/mimeapps.list
私たちはそれを私たち自身の協会を設立するために使用する必要があります。
これも次のように一致します。GNOMEデスクトップドキュメント。
~/.config/mimeapps.list
個々のユーザーのシステム設定を上書きするには、デフォルトの登録アプリケーションを上書きするMIMEタイプのリストを含むファイルを作成する必要があります。
そして、この有用な情報は次のとおりです。
gio mime コマンドを使用すると、デフォルトの登録アプリケーションが正しく設定されていることを確認できます。
$ gio mime text/html Default application for “text/html”: myapplication1.desktop Registered applications: myapplication1.desktop epiphany.desktop Recommended applications: myapplication1.desktop epiphany.desktop
MIMEタイプの接続を確認するクロスプラットフォームコマンドは次のとおりです。
xdg-mime query default application/pdf
GNOMEの場合、コマンドは次のようになります。
gio mime application/pdf
KDEプラズマの場合、コマンドは次のとおりです。
ktraderclient5 --mimetype application/pdf
私のファイルを見ると、~/.config/mimeapps.list
次のようになります。
[Added Associations]
application/epub+zip=calibre-ebook-viewer.desktop;org.gnome.FileRoller.desktop;
<snip>
application/pdf=evince.desktop;qpdfview.desktop;okularApplication_pdf.desktop;<snip>
<snip>
[Default Applications]
application/epub+zip=calibre-ebook-viewer.desktop
<snip>
application/pdf=evince.desktop;
application/pdf
以下には項目が1つしかないことがわかります。 PDFファイルの基本ハンドラも[Default Applications]
同様です。evince.desktop
Mendeleyはインストールされていませんが、それをデフォルトのPDFハンドラにする1つの方法はevince.desktop
。
ここにある文書は正しいと思いますが、~/.config/mimeapps.list
実際にはわかりません。これについては、3部で再度取り上げます。
オプション2:ソースコードをお読みください。
xdg-open
の値によって動作が異なるシェルスクリプトです$XDG_CURRENT_DESKTOP
。あなたは見ることができますどのように動作しますか?:
if [ -n "${XDG_CURRENT_DESKTOP}" ]; then
case "${XDG_CURRENT_DESKTOP}" in
# only recently added to menu-spec, pre-spec X- still in use
Cinnamon|X-Cinnamon)
DE=cinnamon;
;;
ENLIGHTENMENT)
DE=enlightenment;
;;
# GNOME, GNOME-Classic:GNOME, or GNOME-Flashback:GNOME
GNOME*)
DE=gnome;
;;
KDE)
DE=kde;
;;
を使用しているため、変数はi3
にDE
設定され、generic
スクリプトはその変数を呼び出します。open_generic()
機能、これはインストールされている項目に従って順番に呼び出されますrun-mailcap
。mimeopen
設定により、いくつかの追加情報を取得できますXDG_UTILS_DEBUG_LEVEL
。
XDG_UTILS_DEBUG_LEVEL=4 xdg-open ~/path/to/example.pdf
しかし、デバッグ情報は私たちの目的に比べて豊富ではありません。
オプション3:開いたファイルを追跡します。
dconf
以前の調査では、MIMEタイプの接続が環境変数や設定などではなく、ハードドライブ上のファイルに保存されることを知っています。つまり、ドキュメントに依存する必要はなく、ドキュメントを使用してコマンドが実際に開いているファイルを確認できますstrace
。 mimetypexdg-open
の場合、application/pdf
次のものを使用できます。
strace -f -e trace=open,openat,creat -o strace_log.txt xdg-open /path/to/example.pdf
これは、子プロセスがそれ自体ですべての操作を実行するわけではないため、-f
子プロセスを追跡するためのものです。xdg-open
目的は-e trace=open,openat,creat
システムコールのみを追跡することですopen
。これはマニュアルページまたはマニュアルページからのものです。openat
creat
man 2 open
オンライン。
これは-o strace_log.txt
後で確認できるようにログファイルに保存されます。
出力は少し大きいがENOENT (No such file or directory)
ファイルは存在しないので、この行を無視することができます。
xdg-mime
別のコマンドを使用することもできますgio mime
。gio mime
私のホームディレクトリから次のファイルを読むことがわかりました。
~/.local/share//mime/mime.cache
~/.config/mimeapps.list
~/.local/share/applications
~/.local/share/applications/mimeapps.list
~/.local/share/applications/defaults.list
~/.local/share/applications/mimeinfo.cache
また、次のシステムレベルのファイルを読みます。
/usr/share/mime/mime.cache
/usr/share/applications/defaults.list
/usr/share/applications/mimeinfo.cache
/var/lib/snapd/desktop/applications
/var/lib/snapd/desktop/applications/mimeinfo.cache
相関関係を見つけるには、application/pdf
次のようにする必要があります。
grep 'application/pdf' ~/.local/share//mime/mime.cache ~/.config/mimeapps.list ~/.local/share/applications ~/.local/share/applications/mimeapps.list ~/.local/share/applications/defaults.list ~/.local/share/applications/mimeinfo.cache /usr/share/mime/mime.cache /usr/share/applications/defaults.list /usr/share/applications/mimeinfo.cache /var/lib/snapd/desktop/applications /var/lib/snapd/desktop/applications/mimeinfo.cache | less
ここからMendeleyのデスクトップファイルが追加された場所を確認できます。
Mendeleyを使用してPDFを開くいくつかのアプリケーション(Caliber、texdoc)があります。 Thunar、Thunderbird、FirefoxなどでPDFを開くと、期待されるデフォルトのevinceが開きます。
FirefoxとThunderbird独自の基本アプリケーション設定。私はtexdoc
それが依存していると信じていますxdg-open
。 Thunarについてはよくわかりませんがxdg-open
。
したがって、最終的にこれは次の原因である可能性があります。
xdg-open
i3
他のアプリと比較して代替機能が異なります。Mendeleyのインストーラは、一部のファイルにMIMEタイプの接続を追加しますが、他のファイルには追加しません。
付録:上記のファイルはxdg-open
使用しないでください。再生する必要がある場合は、次のコマンドを使用してください。mimeinfo.cache
i3
update-desktop-database ~/.local/share/applications
文書は次のとおりです。
MIMEタイプキャッシュ
すべてのデスクトップファイルを解析するコストを削減するには デスクトップデータベースの更新提供されたプログラムはキャッシュファイルを生成します。この概念は、アプリケーションが(潜在的に)何百ものファイルを読み取ることを防ぐことができるという点で、「update-mime-database」プログラムと同じです。各デスクトップファイルをインストールした後に実行する必要があります。 $XDG_DATA_DIRS/applications/にディレクトリごとにキャッシュファイルが作成され、$XDG_DATA_DIRS/applications/mimeinfo.cacheというファイルが生成されます。
https://specations.freedesktop.org/desktop-entry-spec/0.9.5/ar01s07.html
関連: