Ubuntuのメニューからアプリケーションのアイコンを削除する方法と、アプリケーションのインストール方法

はじめに

Ubuntuのアプリケーションメニューに表示されるアイコンがあるとします。あなたがしたいのは:

  1. アプリケーションと同時に削除する場合 — それについては別途説明します。
  2. アイコンだけを削除する場合 — ここではこれについて説明します。

この例では、TelegramまたはTelegram Desktopのアイコンだけを削除し、アプリケーション自体は削除しないようにしたいです。

インストール方法

あなたがインストール方法を覚えていない場合、以下のような方法が考えられます:

インストール方法 認識方法 削除方法(ターミナル) 特徴 / リスク
1 内蔵リポジトリ apt policy アプリ名archive.ubuntu.com sudo apt remove --purge アプリ名 && sudo apt autoremove 安全ですが、autoremoveは他のパッケージにも影響する可能性があります — 確認してください。
2 接続されたリポジトリ(PPAなど) apt policy アプリ名 → 外部URL
ファイルが /etc/apt/sources.list.d/ に存在する
1. sudo apt remove アプリ名
2. .listファイルとキーを削除
3. sudo apt update
リポジトリを削除する前にパッケージを削除してください — それ以外では apt でエラーが出ます。
3 .debパッケージ `dpkg -l grep アプリ名` sudo apt remove --purge アプリ名dpkg -Pより推奨)
4 Snap `snap list grep アプリ名<br>which アプリ名/snap/bin/アプリ名` sudo snap remove アプリ名
5 Flatpak `flatpak list grep アプリ名` flatpak uninstall アプリ名 && flatpak remove --unused
6 既製バイナリ(AppImage、.tar.gz apt/dpkg/snap に存在しない
バイナリが ~/Apps//opt/~/.local/bin/ にある
rm -rf /パス/アプリ ~/.local/share/applications/アプリ.desktop ~/.config/アプリ/ 中央管理されていないため、何かを「忘れてしまう」可能性があります。
7 .runインストーラー sudo ./アプリ名.run で実行された
/opt/アプリ名/uninstall.sh が存在する
1. sudo /opt/アプリ名/uninstall.sh
2. それ以外は手動で — /opt//usr/bin/.desktopsystemd~/.config/
最も「汚い」方法です。多くの場合、uninstallスクリプトが残っていません。
8 コンパイル (make install) which アプリ名/usr/local/bin/ 1. make uninstall(存在する場合)
2. それ以外は手動で —
削除または checkinstall は将来推奨されません。
システム汚染のリスクが高いcheckinstallstow を使用してください。
9 マネージャー (pipx, cargo, npm -g) which 名前~/.local/bin/, ~/.cargo/bin/ pipx uninstall 名前, cargo uninstall 名前, npm uninstall -g 名前 システムを壊すことはありませんが、apt のバージョン(例: node)と競合する可能性があります。

このリストは不完全であり、他の方法を使用しないことを願っています :slight_smile:

  • go install, gem install
  • Docker / Podman による GUI アプリケーションイメージ
  • linuxbrew / nix / guix を通じたインストール

以下は「別途のインストール方法」とはみなされません

  • apt install ./file.deb → これは apt ではなく dpkg.deb パッケージをインストールするだけです。
  • GUI インストーラー (Software Center, Discover)apt / snap / flatpak のフロントエンドです。
  • 「自動起動に追加」 / systemd --user → これはインストール後の設定であり、インストール方法とはみなされません。

不明なアプリケーションのインストール方法を迅速に特定する方法

# 1. エグゼキュタブルファイルの場所は?
which 名前

# 2. パッケージの出所(apt/dpkg からの場合)
dpkg -S $(which 名前) 2>/dev/null || echo "Not in dpkg"

# 3. snap/flatpak の確認
snap list | grep -i 名前
flatpak list | grep -i 名前

# 4. ~/.local/bin または /opt に存在するか確認
ls -l $(which 名前)

# 5. 最近のインストール履歴(最近のもののみ)
grep "install.*名前" /var/log/apt/history.log 2>/dev/null
journalctl --since "2 weeks ago" | grep -i "install.*名前"

清潔なシステムを維持するためのヒント

  • .run ファイルによるアプリケーションのインストールについては、AppImage または bubblewrap / toolbox による隔離 を検討してください。
  • make install の代わりに checkinstall を使用 → .deb ファイルを生成し、apt で簡単に削除できます。
  • ユーザー用の .desktop ファイルは ~/.local/share/applications/ に管理してください — これらは常にシステムのものより優先されます。

アプリケーションのアイコンファイルはどこにありますか?

これはアイコンではなく、起動スクリプトです。サービス起動に使用されるものと似ています(覚えていますか?

一つの場所:

/usr/share/applications/

Telegram アプリケーションの分析

ls -l /usr/share/applications/ | grep -i tele
-rw-r--r-- 1 root root   371 Mar  6  2020 telegram.desktop
cat /usr/share/applications/telegram.desktop

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Name=Telegram Desktop
Exec=/opt/telegram/Telegram -- %u
Comment=Official desktop version of Telegram messaging app
Icon=/opt/telegram/telegram.svg
StartupWMClass=Telegram
Categories=GNOME;GTK;Network;
MimeType=application/x-xdg-protocol-tg;x-scheme-handler/tg;
X-Desktop-File-Install-Version=0.22

これにより、実行ファイルは

ls -l /opt/telegram/
total 190652
-rwxr-xr-x 1 root root        55 Mar  6  2020 Telegram
-rwxrwxr-x 1 root root   2184648 Nov  8 14:17 Updater
-rwxrwxr-x 1 root root 193023296 Nov  8 14:17 telegram
-rw-r--r-- 1 root root      4762 Mar  6  2020 telegram.svg

Telegram Desktop という名前のアイコンが関連付けられていることがわかります。

アイコンの参照先は /opt/telegram/Telegram です。このファイルは非常に小さく、55バイトです。内容を確認します:

cat /opt/telegram/Telegram

#!/usr/bin/env bash
/opt/telegram/telegram -noupdate $@

これはラッパー・スクリプト(wrap=ラッパー)であり、/opt/telegram/telegram を実行し、-noupdate フラグを渡して自動更新を無効にします。

$@ は、スクリプトに渡された引数を個別に展開する特別な変数です。引数にスペースが含まれる場合、二重引用符で囲むのが推奨されますが、ここではおそらくユーザー名やログイン名(スペースや特殊文字が禁止されている)のため、問題がないと見られます。

/opt/telegram/telegram は実行可能ファイルであり、x アトリビュートが設定されています(ディレクトリの場合、これは「パスを通り抜ける」ことを意味しますが、ファイルでは「実行可能」を意味します)。

:backhand_index_pointing_right: これは単なるアイコンの一つ**であり、その関連性は不明です。アプリケーションのインストール方法は不明です。表から見ると、run インストーラーの可能性がありますが、正確にはそうではありません。Telegram はアプリストアの snap または tar.gz アーカイブで配布される可能性がありますが、後者の可能性が高いです。

2番目のアプリケーションのファイルを検索するには、whence コマンドを使用します。

whence

これは実際のコマンドではなく、アリアス(複数行のコードを1つのコマンドとして隠す)です。

~/.bash_aliases を開いてください。ファイルが存在しない場合は作成してください。以下を追加してください:

# whence — インストール方法の迅速な確認
whence() {
    local prog="$1"
    [ -z "$prog" ] && { echo "Usage: whence <program>"; re
```1; }

    echo "=== $prog ==="
    echo "• which: $(which \"$prog\" 2>/dev/null || echo '—')"
    echo "• snap: $(snap list 2>/dev/null | grep "^$prog " || echo '—')"
    echo "• flatpak: $(flatpak list --app 2>/dev/null | awk -v p=\"$prog\" '$1==p {print $1\":\"$3}' || echo '—')"
    echo "• dpkg: $(dpkg -S \"$(which \"$prog\" 2>/dev/null)\" 2>/dev/null | cut -d: -f1 || echo '—')"
    echo "• .desktop: $(find ~/.local/share/applications /usr/share/applications -name \"*$prog*.desktop\" 2>/dev/null | head -1 || echo '—')"

これは .bash_aliases~/.bashrc ファイルで呼び出される仕組みになっているため、ファイルに変更を加えた後は、その変更を適用する必要があります(この変更は、以下でコマンドを実行したターミナルのみ、または新しいログイン時に有効になります):

source ~/.bashrc

外見的には何も変わりませんが、セッション内に新しい変数やアリアスが追加されます。

確認:

whence telegram

=== telegram ===
• which: —
• snap: —
• flatpak: 
• dpkg: 
• .desktop: /home/ivan/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

ここでは、.desktop ファイルがシステムの /usr/share/applications/ ではなく、ホームディレクトリにあります(以下、そのディレクトリ内のファイル数を確認):

ls -l ~/.local/share/applications/

-rwxrwxr-x 1 ivan ivan 579 Nov  8 16:22 org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

このファイルの内容に興味があります:

cat ~/.local/share/applications/org.telegram.desktop*

[Desktop Entry]
Name=Telegram
Comment=New era of messaging
TryExec=/opt/telegram/telegram
Exec=/opt/telegram/telegram -- %u
Icon=org.telegram.desktop
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application
Categories=Chat;Network;InstantMessaging;Qt;
MimeType=x-scheme-handler/tg;x-scheme-handler/tonsite;
Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
Actions=quit;
DBusActivatable=true
SingleMainWindow=true
X-GNOME-UsesNotifications=true
X-GNOME-SingleWindow=true

[Desktop Action quit]
Exec=/opt/telegram/telegram -quit
Name=Quit Telegram
Icon=application-exit

このアイコンのサインは Telegram(Desktop なし)です。

スクリプトは… 同じ実行ファイル /opt/telegram/telegram を指していますが、変数や「更新しない」フラグを渡さない点が特徴です。なぜかは不明ですが、内部の声では、開発者がどの展開方法でも一貫性を持たせるべきだと考えられます。しかし、この点は特に重要ではありません。ログイン情報は必要なく、設定から自動で取得されます。違いは自動更新の有無だけです。ちなみに、ユーザーは一方で「Telegramを更新してください」という通知を表示され、他方ではアプリケーションが自動で更新され、再起動を待つ(ただし、必ずしもそうとは限りません)。

全体として、両方のアイコンは同じTelegramインスタンスを起動し、これが最も重要です。したがって、両方のアイコンが同じアプリケーションと設定(プロファイル)を共有しているため、片方を削除しても問題ありません。

どちらが最も美しいかを判断して、以下を削除しましょう:

~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

このファイルを削除しないでください。アイコンの非表示は別途の方法で行います!


メニューからTelegramアイコンを削除する(アプリケーションとサービスは残す)

スクリプトに Hidden=true[Desktop Entry] セクションに追加します:

sed -i '/^\\[Desktop Entry\\]$/a Hidden=true' ~/.local/share/applications/org.telegram.desktop._18faa92ddda377ceaa5a576303af9e59.desktop

注意:これは簡易なコマンドで、ファイル内にこの行がすでに存在するかどうかを考慮していません(再度実行しても問題ありません)。重複は危険ではありません。

変更は即座に反映され、アイコンがメニューから消えます。アイコンを復活させたい場合は、先ほど追加した行(矢印で示されている部分)を削除してください。