| 1 | [wiki:docs Vine Linux ドキュメント] / [wiki:../../ RPM パッケージの作成方法] / [wiki:../ パッケージ固有の作法等について] / |
| 2 | GNOME,KDE,Xfce のメニューに追加するために |
| 3 | |
| 4 | = GNOME,KDE,Xfce のメニューに追加するために = |
| 5 | |
| 6 | GNOME,KDE,Xfce のメニューに追加するためには、ディレクトリ/usr/share/applicationsに アプリケーションの名前.desktop というファイル(以降 desktopファイルと呼びます)をインストールする必要があります。 |
| 7 | |
| 8 | desktopファイルを取り扱う desktop-file-installコマンド、desktop-file-validateコマンド、update-desktop-databaseコマンドは、desktop-file-utilsというパッケージに含まれています。 |
| 9 | |
| 10 | desktopファイルの扱いは次のような手順になります。 |
| 11 | |
| 12 | 1. %installタグの部分で次のようにして desktopファイルを%{buildroot}/%{_datadir}/applicationsにインストールしておきます。 |
| 13 | {{{ |
| 14 | #!sh |
| 15 | %install |
| 16 | %{__mkdir_p} %{buildroot}/%{_datadir}/applications |
| 17 | %{_bindir}/desktop-file-install --dir=%{buildroot}/%{_datadir}/applications hoge.desktop |
| 18 | }}} |
| 19 | 2. %checkタグの部分で次のようにして desktopファイルが書式にしたがって正しく書かれているかをチェックします。 |
| 20 | {{{ |
| 21 | #!sh |
| 22 | %check |
| 23 | %{_bindir}/desktop-file-validate %{buildroot}/%{_datadir}/applications/hoge.desktop |
| 24 | }}} |
| 25 | ソースから make する、make install するなどの部分ではこのチェックが行われないことも多いので、%checkタグの部分でチェックを行うようにしておきます。 |
| 26 | desktop-file-validateコマンドは複数のファイルをまとめて処理できないので、*.desktop のようにはできません。desktopファイルの数だけ、コマンドを書いてください。もちろん、for文などを使ってもかまいません。 |
| 27 | 1. %postタグや%postunタグの部分で |
| 28 | {{{ |
| 29 | #!sh |
| 30 | %post |
| 31 | if [ -x %{_bindir}/update-desktop-database ] ; then |
| 32 | %{_bindir}/update-desktop-database %{_datadir}/applications |
| 33 | fi |
| 34 | |
| 35 | %postun |
| 36 | if [ -x %{_bindir}/update-desktop-database ] ; then |
| 37 | %{_bindir}/update-desktop-database %{_datadir}/applications |
| 38 | fi |
| 39 | }}} |
| 40 | のように処理します。 update-desktop-database コマンドがインストールされていなければ実行しない、という形にすることで、twm や icewm や !WindowMaker など、GNOME等のメニューとは直接関係ないウィンドウマネージャを使用しているときに、deskto-file-utils に依存せずにすむようになります。 |
| 41 | 1. 他のファイルと同じように %filesの部分に入れておきます。 |
| 42 | {{{ |
| 43 | #!sh |
| 44 | %files |
| 45 | %{_datadir}/applications/hoge.desktop |
| 46 | }}} |
| 47 | 1. !BuildRequires で desktop-file-utils を指定します。 |
| 48 | {{{ |
| 49 | #!sh |
| 50 | BuildRequires(install,check): desktop-file-utils |
| 51 | }}} |