アプリケーションのカスタムドキュメントにカスタムアイコンを付けるにはどうすればよいですか?また、ユーザーがダブルクリックしたときにこれらのドキュメントをファイルマネージャーで開くにはどうすればよいですか?
ソリューションはインストールスクリプト内で使用されるため、コマンドラインでこれを行う必要があります。
正しい解決策は-> here <-ですが、質問に直接回答するためにfoo
バージョンが提供されています。
application-x-foo
、x-foo
、およびfoo
は使用中に変化するため、これらの使用には細心の注意を払ってください。
注:Ubuntuチュートリアルを更新する場合、foo
アプリケーションとfoo
拡張機能を区別するのは、おそらく例のほうがよいでしょう。およびfoo
mimetypeは、混乱を避けます。すなわちlmms
は*.mmpz
とx-lmms-project
を使用します。これはこれを理解するのに大いに役立ちました。
wget http://soqr.fr/testsvg/zebra.svg -O ~/Desktop/application-x-foo.svg
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/x-foo">
<comment>Foo File</comment>
<glob pattern="*.foo"/>
</mime-type>
</mime-info>
~/Desktop/x-foo.xml
に保存します[Desktop Entry]
Version=1.0.0
Encoding=UTF-8
Name=FooGazi
GenericName=Foo Application
Comment=This is my Foo Application
Exec=/usr/bin/foo
# Please change, system-shutdown.svg used only as example
Icon=/usr/share/icons/Humanity/actions/48/system-shutdown.svg
StartupNotify=true
Type=Application
MimeType=application/x-foo;
~/Desktop/foo.desktop
に保存しますSudo xdg-mime install --mode system ~/Desktop/x-foo.xml
Sudo cp ~/Desktop/foo.desktop /usr/share/applications
Sudo cp ~/Desktop/application-x-foo.svg /usr/share/icons/gnome/scalable/mimetypes/
Sudo xdg-mime default foo.desktop application/x-foo
Sudo update-mime-database /usr/share/mime
Sudo gtk-update-icon-cache /usr/share/icons/gnome/ -f
/etc/mime.types
にも適切な行を追加しますが、これがまだ必要かどうかを確認し、それを反映するようにこの投稿を編集してください。インストールスクリプトから/ etcにある既存のファイルを決して編集しないでください!それはひどく悪い考えです。また、/ etc/mime.typesを編集する必要はありません
あなたのxmlファイルはまだ間違っており、間違った場所に/usr/share/mime/text/x-foo.xmlがあるはずです
<?xml version="1.0" encoding="UTF-8"?>
<mime-type xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/x-foo">
<comment>Example file type </comment>
<glob pattern="*.foo"/>
</mime-type>
通常、サードパーティのアイコンは/ usr/share/icons/hicolor/scalable/mimetypesにインストールされます。
私は他の答えで物事を動かすことはできませんでしたが、次の方法で物事を動かすことができました。
これはテストされており、これらのライブディスクで動作します。
Ubuntu 14.04
Lubuntu 14.04
Ubuntu-Gnome 14.04
Moo Foo Wrapperアプリ
この例では、完全な動作例を目的として、fooというgeditのラッパーを作成しています。
(1)Sudoとして、次の内容のファイルを作成します。
gedit%f
(2)名前を付けて保存:
/ usr/bin/foo
(3)実行可能にする:
Sudo chmod + x/usr/bin/foo
Fooアプリケーションをメニューに表示してアイコンにする
(1)アプリケーションイメージを作成します。 GimpまたはInkscapeは、どちらも優れたプログラムです。画像を作成したら、pngまたはsvgとしてエクスポートします。
(2)画像に名前を付けます。イメージ名は、コマンドラインでアプリケーションを起動するために使用する名前と同じにする必要があります。この例のアプリはfooと呼ばれます。したがって、正しい名前はfoo.pngまたはfoo.svgになります。
(3)イメージのコピー先:
/usr/share/icons/foo.svg
(4)デスクトップエントリを作成します。 gedit、leafpad、またはIDEを開きます。このデータを使用して新しいドキュメントを作成します。
[Desktop Entry]
Exec=foo %f
Icon=foo
Terminal=false
Type=Application
Categories=Office;
StartupNotify=true
MimeType=text/foo
Name=Foo
GenericName=Foo
Comment=Compose, Edit, and View Foo Documents
Exec、Icon、およびMimeTypeキーに注意してください。
Exec:%fは実行可能ファイル名の後に追加されます。ユーザーがfooドキュメントをダブルクリックすると、システムはfooアプリケーションを実行し、%f引数を介してそのfooドキュメントパスをアプリケーションに送信します。
アイコン:名前のみが必要です。絶対パスを使用すると、良い結果が得られませんでした。
MimeType:text/foo。 textは、「コンテンツタイプ」と呼ばれます。 fooもちろんアプリケーション名です。このマッピング規則は、他の手順で順守する必要があります。たとえば、別のステップでapplication/fooを使用したくない場合。そうすることで、fooのコンテンツタイプの一貫性が保たれず、失敗します。
(5)このファイルを次の名前で保存します。
foo.desktop
ファイルの名前はアプリケーションの起動名であり、拡張デスクトップが必要です。次に、次の場所にコピーする必要があります。
/usr/share/applications
この時点で、メニューの[Office]カテゴリの下にアプリケーションが表示され、アイコンも表示可能になります。
アプリケーションドキュメントに独自のアイコンを与える
(1)次のコンテンツを含むMIME XMLファイルを作成します。
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info" type="text/foo">
<mime-type type="text/foo">
<magic>
<match type="string" offset="2" value="0foomagic"/>
</magic>
</mime-type>
</mime-info>
コンテンツタイプのマッピングに注意してください。両方ともtext/fooです。
カスタムドキュメントでアイコンを取得するには、2つの選択肢があります。 (1)、システムは拡張機能を探し、拡張機能に基づいてアイコンを付けます。 (2)システムは、ファイル内の特定のオフセットでマジックストリングを探します。ファイルマネージャーでファイル名の拡張子を表示することを好まないため、私は魔法を選択しています。
マジックを使用するために、すべてのドキュメントをjsonファイルとして保存します。これはユニバーサルストレージプロトコルなので、私にとってはうまく機能します。ファイルを保存するときに、キーをアルファベット順に並べ替えます。これにより、マジックキーがファイルの最初のキーとして表示されます。これは、「0foomagic」の最初の文字にゼロを設定し、これを台無しにする他のキーがドキュメントに作成されないようにするためです。
上記のxmlのこの行を参照すると、
<match type="string" offset="2" value="0foomagic"/>
jsonファイルには、0foomagicという名前の魔法のキーにヒットする前に2つの文字があります。そこで、オフセットを2に設定します。
代わりに拡張機能を使用する場合は、マジックエントリを削除して、次のものに置き換えます。
<glob pattern="*.foo"/>
.fooはアプリケーションドキュメントの拡張子です。
(2)次のコマンドでMIMEデータベースを更新します。
Sudo update-mime-database /usr/share/mime
(3)カスタムドキュメントに表示されるアイコンは、それらが機能するように特別な方法で名前を付ける必要があります。これらは、コンテンツタイプにマッピングする必要があります。ドキュメントアイコンを作成し、前述のコンテンツタイプの規則に従ってマップに名前を付けます(スラッシュの代わりにダッシュが使用されることを想定しています)。
text-foo.svg
textはコンテンツタイプで、fooは以前と同じアプリケーション名です。
このアイコンを使用するテーマにコピーする必要があります。コピーされないテーマは、text-foo.svgでfooドキュメントを表示しません。
テーマは2つの異なる方法で設定されます。たとえば、次のように、いくつかのテーマでより多くの作業が行われます。
Gnomeテーマの場合、text-foo.svgを1か所にコピーするだけです:/ usr/share/icons/gnome/scalable/mimetypes /
Gnomeテーマに切り替えて、このステップは完了です。
ただし、たとえば、hicolorテーマを使用する場合は、さらに作業が必要です。テーマが要求するこれらのディレクトリごとにアイコンサイズを作成する必要があります。次に例を示します。
/usr/share/icons/hicolor/16x16/mimetypes/
/usr/share/icons/hicolor/22x22/mimetypes/
...
などなど.
アイコンをコピーしたので、アイコンデータベースを更新する必要があります。このための2つのコマンド(gtk-update-icon-cacheとgtk-update-icon-cache3.0)に気付きましたが、両方を呼び出すだけで問題はありません。アイコンを追加したテーマディレクトリで呼び出す必要があります。
Gnomeテーマに追加した場合:
Sudo gtk-update-icon-cache /usr/share/icons/gnome/
Hicolorテーマに追加した場合:
Sudo gtk-update-icon-cache /usr/share/icons/hicolor
これで、もう1つやることがあります。ログインとログアウトをしなくても、機能することがわかります。デスクトップデータベースを更新します。
Sudo update-desktop-database
テストフー
作成するためにこの答えに負担がかかるので、jsonファイルを作成するように求めます。geditラッパーであるfooを使用して、0foomagicを含むfoo docを作成します。
(1)コマンドラインでfooと入力すると、geditが起動します。
(2)geditの空のテキストファイルで、2つの文字を追加してから、マジックストリングを追加します。
xx0foomagic
(3)geditを保存して閉じます。ファイルマネージャーの内部を見ると、新しいドキュメントにtext-foo.svgアイコンがあることがわかります。ダブルクリックすると、fooが開きます。プレスト!それがfreedesktoporgの魔法です!
このプロセスについて学ぶことができる他の多くのことがありますが、少なくともこれにより、Ubuntuで独自のアプリ起動ドキュメントアイコンを使用できるようになります。
ベストプラクティスの方法がある場合は、この回答に貢献するか、新しい回答を作成してください。