回答:
次のコマンドを使用して、存在しないプログラムにリンクするアプリケーションアイコンを一覧表示できます。
for i in {/usr,~/.local}/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || echo $i; done
パッケージマネージャーによって自動的にクリーンアップされないため、ほとんどのアイコンはホームフォルダー内のカスタマイズされたアイコンであることがわかります。これが事実であり、一度にそれらをすべて破棄 したい場合は、前のコマンドの変更を使用できます。
for i in ~/.local/share/applications/*.desktop; do which $(grep -Poh '(?<=Exec=).*?( |$)' $i) > /dev/null || trash $i; done
または、もちろん、~/.local/share/applications/
Nautilusを参照し、グラフィカルインターフェイスを使用してそれらをゴミ箱に移動します。
アプリケーションをアンインストールすると、インストールしたメニュー項目が削除されます。そして、私のマシンではこのように動作します。
動作が異なる場合は、特定のパッケージのバグか、システムの問題です。40を超えるエントリがみなしご化されているとは信じられません。それは問題の症状でしょう。
まあ、これは難しいですが、少なくとも問題を教えてください。
Gnomeはインストールされたアプリケーションを/ usr / share / applicationsに保存します。ファイルは.desktopで終了します(vlcプログラムはvlc.desktopによって起動されます)
それぞれの中に、「カテゴリ」セクションがあります。このセクションでは、アプリケーションメニューのどの部分にプログラムを設定することができます。問題は、あなたが求めていることを行うことができると思う唯一の方法は、その.desktopに関連するパッケージがインストールされているかどうかを尋ねるbashスクリプトを使用することです。そうでない場合は、その.desktopファイルを削除します。ファイルを削除すると、メニューから削除され、アプリがカテゴリに含まれている場合、そのファイルは表示されません。
すべてのコマンド(dpkg、apt-getなど)は、パッケージがインストールされていないと言ったときに常に適切な終了を返すため、その1つは私の範囲外です。文字列(「インストールされていない」)をチェックし、文字列が存在する場合、アプリケーションがインストールされていないことを意味し、.desktopを削除できます。
そのため、必要に応じて、フォルダー(/ usr / share / applications)を入力し、プログラムに対応するファイルをクリックするだけです。[アプリケーション]メニューから消えます。自動的にそれを行うには、私が言ったトラックに良いbashスクリプトが必要だと思います。
これが何らかの形で役立つことを願っています。
代替案:
@ændrükの答えに続いて、パスとサブフォルダーのスペースをサポートする同様のソリューションがあります。これは特定のフォルダーまたはディスク全体で使用して、破損した.desktop
ファイルを探すことができます(ショートカット)
find {/usr,~/.local,/usr/local,}/share/applications/ -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line; done
ディスク全体について
find / -name '*.desktop' | while read -r line; do which $(grep -Poh '(?<=Exec=).*?( |$)' $line) > /dev/null || echo $line; done
注:どの方法でも、ファイルを削除する前に2回見つかったファイルの誤検知チェックを表示できます。
これは古い投稿の質問かもしれませんが、私は同じ問題を抱えていたのでチャイムを鳴らすべきだと思いましたが、これらの提案はどれもうまくいきませんでしたが、インターネット上でAlacarte(簡単なGNOMEメニュー編集)と呼ばれるプログラムを知っている非常に賢い人を見つけましたプログラムはソフトウェアマネージャーを使用してインストールし、デフォルトでインストールされていたが現在ではなく、よく知られたプログラムではないため、まだ利用可能であることに興奮しているが、ソフトウェアマネージャーを介してまだ利用可能であり、使いやすく、削除するアンインストールされたプログラムエントリをクリックして強調表示し、右側の[削除]をクリックするだけで完了です。これらの他の提案がうまくいかない場合、これが役立つかもしれません