デスクトップ項目の個々のフィールドをオーバーライドします。

デスクトップ項目の個々のフィールドをオーバーライドします。

私はデスクトップ環境としてLXDEを使用してDebianシステムを設定しています(実際にはラズベリーパイオペレーティングシステムビデオ)。

付属のアプリケーションがあります。.desktop文書。クール!

残念ながら、MyApplication.desktopファイルにはメニューにアイコンが表示されないようにする次の行が含まれています。

NoDisplay=true

それでは、別のフィールドに触れることなく、システムファイル全体でこの単一のフィールドをオーバーライドする一般的な方法を見つけたいと思います。MyApplication.desktopこれをオーバーライドだと思います。

特に、頑張って避けるこのような回避策は...

sed -e 's/^NoDisplay=true/NoDisplay=false/' /usr/share/applications/MyApplication.desktop \
    > /usr/local/share/applications/MyApplication.desktop

...これは、ファイルの最新のアップストリームバージョンで導入された変更が失われるためです(システムから削除したMyApplication.desktop後もメニュー項目をそのまま残すことができます)。MyApplication

明らかに、標準は部分的な.desktopファイルだけを許可しません。たとえば、次は機能しません。

$ cat /usr/share/applications/MyApplication.desktop
[Desktop Entry]
Name=My Cool Application
GenericName=My Application
Exec=myapp %f
Icon=myapp
Type=Application
Terminal=false
Categories=Application
NoDisplay=true

$ cat /usr/local/share/applications/MyApplication.desktop
[Desktop Entry]
NoDisplay=false

include同様に、次のメカニズムもありません。

$ cat /usr/local/share/applications/MyApplication.desktop
include=/usr/share/applications/MyApplication.desktop
[Desktop Entry]
NoDisplay=false

これを達成するための私のオプションは何ですか?

ベストアンサー1

.desktopファイルの新しいバージョンについてはあまり心配しません。ほとんど変更されません(変更した場合、通常、変更は非常にマイナーであり、必要に応じて手動で簡単に編集できます...または変更と一緒に使用してマージできdiffます)。patch

これが心配な場合は、.desktopファイルの編集されたコピーを/usr/local/share/applications/返品元のファイルをバックアップします(例:から/usr/share/applications/file.desktop/usr/share/applications/file.desktop.orig

その後、夜または毎週cronジョブを実行して比較し、結果をメールで受け取ることができます(または覚えているときに確認できるようにファイルに書き込むことができます:-)。

cron-jobスクリプトは、次の基本から始まります。

for f in /usr/share/applications/*.desktop.orig; do
  bn="$(basename "$f" ".orig")
  diff -u "$f" "$bn"
done

/usr/share/applications.backup/または、セクションに ".orig"を追加して同じ名前に変更したいコピーを作成するdiff代わりに、パイピングを介して欠落しているファイルに関する警告をミュートすることもできます。-rgrep -v

diff -u -r /usr/share/applications.backup/ /usr/share/applications/ |
  grep -v '^Only in /usr/share/applications/`

別のオプションは、git init/usr/share/applicationsで実行し(ディレクトリがルート所有であるため、ルートとして実行する必要があります)、そこにあるすべての.desktopファイルをコミットし、新しいファイルが追加されたときにコミットすることを覚えておくことです。git statusその後、git diffなどのgitサブコマンドを使用して、git show違いやコミットされていない変更、新しいファイル、または削除されたファイルを表示できます。

gitはこれらの設定ファイルを管理するための優れたツールであり、単にソースコードプログラミングのためのものではありません。これマネージャーをお待ちくださいたとえば、プログラムはgitを使用してすべての改訂履歴を/ etcに保存します(アップグレードの前後に変更を自動的にコミットするためのapt、yum、dnfなどのフックを含む)。まだインストールしていない場合はインストールする価値があります。 。

おすすめ記事