web-dev-qa-db-ja.com

新しいドキュメントのMIMEタイプを作成するには(コマンドライン)

アプリケーションのカスタムドキュメントにカスタムアイコンを付けるにはどうすればよいですか?また、ユーザーがダブルクリックしたときにこれらのドキュメントをファイルマネージャーで開くにはどうすればよいですか?

ソリューションはインストールスクリプト内で使用されるため、コマンドラインでこれを行う必要があります。

5
user293406

正しい解決策は-> here <-ですが、質問に直接回答するためにfooバージョンが提供されています。

application-x-foox-foo、およびfooは使用中に変化するため、これらの使用には細心の注意を払ってください。

注:Ubuntuチュートリアルを更新する場合、fooアプリケーションとfoo拡張機能を区別するのは、おそらく例のほうがよいでしょう。およびfoo mimetypeは、混乱を避けます。すなわちlmms*.mmpzx-lmms-projectを使用します。これはこれを理解するのに大いに役立ちました。

  • スケーラブルなSVGアイコンを取得します(例を示します)
  • wget http://soqr.fr/testsvg/zebra.svg -O ~/Desktop/application-x-foo.svg
    
  • MIME形式のファイルをXML形式で作成します。
  • <?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に保存します
    • MIMEの説明を展開する
    • Sudo xdg-mime install --mode system ~/Desktop/x-foo.xml
      
    • アプリケーションランチャーを展開する
    • Sudo cp ~/Desktop/foo.desktop /usr/share/applications
      
    • SVGアイコンをデプロイする
    • Sudo cp ~/Desktop/application-x-foo.svg /usr/share/icons/gnome/scalable/mimetypes/
      
    • 登録済みのMIMEタイプでアプリケーションランチャーを登録する
    • Sudo xdg-mime default foo.desktop application/x-foo
      
    • MIMEキャッシュを更新する
    • Sudo update-mime-database /usr/share/mime
      
    • アイコンキャッシュを更新する
    • Sudo gtk-update-icon-cache /usr/share/icons/gnome/ -f
      
    • 習慣として、/etc/mime.typesにも適切な行を追加しますが、これがまだ必要かどうかを確認し、それを反映するようにこの投稿を編集してください。
    • ログオフしてから再度ログインします。アイコンと関連付けの両方が機能するはずです。
  • 3
    user1466873

    インストールスクリプトから/ 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にインストールされます。

    1
    user60846

    私は他の答えで物事を動かすことはできませんでしたが、次の方法で物事を動かすことができました。

    これはテストされており、これらのライブディスクで動作します。

    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で独自のアプリ起動ドキュメントアイコンを使用できるようになります。

    ベストプラクティスの方法がある場合は、この回答に貢献するか、新しい回答を作成してください。

    0
    user293406