애플리케이션 아이콘을 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/, .desktop, systemd, ~/.config/
가장 “더럽게” 설치된 방식. 종종 uninstall 스크립트가 남지 않음.
8 컴파일 (make install) which 앱명/usr/local/bin/ 1. make uninstall (있으면)
2. 없으면 수동으로 삭제
삭제 또는 checkinstall을 미래에 사용하는 경우
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를 통해 .deb 패키지를 설치하는 것일 뿐, dpkg를 사용하지 않는 것이 아닙니다.
  • 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 $@

이것은 wrapper 스크립트 (wrap=포장)이며, 실제로는 /opt/telegram/telegram 파일을 실행하고 --noupdate 옵션을 전달합니다. 이 옵션은 Telegram이 자동으로 업데이트를 확인하거나 설치하지 않도록 합니다.

$@는 스크립트에 전달된 인수를 개별 인수로 풀어내는 특수 변수입니다. 일반적으로 이 변수는 따옴표로 감싸서 사용하는 것이 좋습니다. (공백이 포함된 인수에 대한 문제를 방지하기 위해). 하지만 여기서는 공백이 없거나 특수 문자가 없는 사용자 이름이나 로그인 이름을 전달하므로 이 방식이 사용됩니다.

/opt/telegram/telegram 파일은 실행 가능한 파일입니다. (폴더에선 x 속성은 폴더를 통과할 수 있음을 의미하며, 파일에선 실행 가능성을 의미합니다.)

:backhand_index_pointing_right: 이건 단지 하나의 아이콘과 관련된 것일 뿐입니다. 설치 방법은 아직 명확하지 않습니다. 표에 따르면 run 설치 프로그램으로 보이지만, 확실하지 않습니다. Telegram은 앱 스토어에서 snap으로 제공되거나, tar.gz 아카이브로 제공됩니다. 이 경우는 후자에 더 가깝습니다.

두 번째 애플리케이션의 파일을 찾기 위해 whence 명령어를 사용합니다.

whence

실제로는 명령어가 아니라 별칭 (다른 명령어를 숨겨놓은 별칭)입니다.

~/.bash_aliases 파일을 열어보세요. (존재하지 않으면 새로 생성하세요). 아래 코드를 추가하세요:

# whence — 설치 방법을 빠르게 확인
whence() {
    local prog="$1"
    [ -z "$prog" ] && { echo "Usage: whence <program>"; return 1; }
```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을 참조하지만, 변수와 “업데이트하지 않음” 옵션을 전달하지 않습니다. 왜 그런지 모르겠습니다. 내부 목소리는 개발자가 어떤 배포 방식이든 일관된 방식으로 작업해야 한다고 말합니다. 하지만 이 경우는 중요하지 않아 보입니다. 로그인은 설정에서 자동으로 가져오므로 필수는 아닙니다. 차이점은 자동 업데이트 여부입니다. 그리고 사용자는 한 경우에 "텔레그램을 업데이트해야 합니다"라는 팝업을 보고, 다른 경우엔 앱이 자동으로 업데이트되고 재시작을 기다립니다(그러나 이건 확정된 것이 아닙니다).

요약하자면, 우리는 두 아이콘이 모두 동일한 텔레그램 인스턴스를 가리키는 것을 확인했습니다. 이것이 가장 중요한 점입니다. 이제 설정이 같고 프로필도 같은 텔레그램을 두 개가 가리키고 있으므로, 하나를 제거할 수 있습니다.

더 예쁘지 않은 아이콘을 제거해 봅시다:

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

이 파일을 절대 삭제하지 마세요. 아이콘을 숨기는 방법은 다르게 합니다!

메뉴에서 텔레그램 아이콘만 숨기고(프로그램과 서비스는 유지)

스크립트에 [Desktop Entry] 섹션에 Hidden=true 매개변수를 추가합니다:

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

주의: 이 명령은 파일에 해당 줄이 이미 있는지 여부를 고려하지 않습니다(다시 실행할 경우). 하지만 중복은 문제가 되지 않습니다.

변경은 즉시 적용됩니다 - 아이콘이 메뉴에서 사라집니다. 아이콘을 복구하려면, 방금 추가한 줄(화살표로 표시됨)을 삭제하세요.