第13章 パッケージ固有の作法等について

13.1. GNOME,KDE,Xfce のメニューに追加するために

GNOME,KDE,Xfce のメニューに追加するためには、ディレクトリ/usr/share/applicationsアプリケーションの名前.desktop というファイル(以降 desktopファイルと呼びます)をインストールする必要があります。

desktopファイルを取り扱う desktop-file-installコマンド、desktop-file-validateコマンド、update-desktop-databaseコマンドは、desktop-file-utilsというパッケージに含まれています。

desktopファイルの扱いは次のような手順になります。

  • %installタグの部分で次のようにして desktopファイルを%{buildroot}/%{_datadir}/applicationsにインストールしておきます。

    %install
    %{__mkdir_p} %{buildroot}/%{_datadir}/applications
    %{_bindir}/desktop-file-install --dir=%{buildroot}/%{_datadir}/applications hoge.desktop
    

  • %checkタグの部分で次のようにして desktopファイルが書式にしたがって正しく書かれているかをチェックします。

    %check
    %{_bindir}/desktop-file-validate %{buildroot}/%{_datadir}/applications/hoge.desktop
    

    ソースから make する、make install するなどの部分ではこのチェックが行われないことも多いので、%checkタグの部分でチェックを行うようにしておきます。

    desktop-file-validateコマンドは複数のファイルをまとめて処理できないので、*.desktop のようにはできません。desktopファイルの数だけ、コマンドを書いてください。もちろん、for文などを使ってもかまいません。

  • %postタグや%postunタグの部分で

    %post
    if [ -x %{_bindir}/update-desktop-database ] ; then
    %{_bindir}/update-desktop-database %{_datadir}/applications
    fi
    
    %postun
    if [ -x %{_bindir}/update-desktop-database ] ; then
    %{_bindir}/update-desktop-database %{_datadir}/applications
    fi
    

    のように処理します。 update-desktop-database コマンドがインストールされていなければ実行しない、という形にすることで、twm や icewm や WindowMaker など、GNOME等のメニューとは直接関係ないウィンドウマネージャを使用しているときに、deskto-file-utils に依存せずにすむようになります。

  • 他のファイルと同じように %filesの部分に入れておきます。

    %files
    %{_datadir}/applications/hoge.desktop

  • BuildRequires で desktop-file-utils を指定します。

    BuildRequires(install,check): desktop-file-utils