AI 탐구노트

우분투 : AppImage 데스크톱 바로가기 만들기 본문

기술 팁

우분투 : AppImage 데스크톱 바로가기 만들기

42morrow 2024. 9. 29. 09:15

 

AppImage는 리눅스에서 어플리케이션을 손쉽게 사용할 수 있도록 한개의 파일 안에 필요한 모듈을 다 포함한 SW 패키징입니다.

윈도우로 따지면 exe 파일인 셈인데 부가적으로 필요한 dll 같은 것들이 이 속에 다 포함되어 있다고 보시면 됩니다. 

다른 것 고려없이 이 파일만 받아서 사용하면 되므로 사용은 아주 편리합니다.

 

 

AppImage 사용 시 문제점

문제는 AppImage은 Installer 등을 이용해서 설치되는 것이 아니다보니 데스크탑 어플리케이션 목록에 보이지 않는다는 겁니다. 

어플리케이션 검색에서도 나오지 않아, 매번 해당 파일이 있는 위치로 가서 실행을 시켜야 한다는 불편함이 있습니다. 

 

해결책 : 데스크톱 바로가기 생성 

이 문제는 손쉽게 해결할 수 있습니다.

아래 예는 Arduino IDE를 등록하는 걸 보여 드립니다. 

 

 

1️⃣ 방법1. 정식 방식

 

~/.local/share/applications 경로에 'Arduino IDE.desktop' 파일을 생성하고 내용은 다음과 같은 항목을 입력합니다.

 

 

 

icon 파일은 AppImage에서 추출하거나 아니면 공개되어 있는 것을 다운받아 사용해도 되는데... 아무래도 번거롭죠? ^^;

[Desktop Entry]
Name=ArduinoIDE 
Comment=Arduino IDE
Exec=/home/sol/apps/arduino-ide_2.3.3_Linux_64bit.AppImage
#Icon=/home/sol/apps/app-icons/arduino.png
Terminal=false
Type=Application
Categories=Development

 

 

 

2️⃣ 방법2. 초간단 방법 (추천!)

 

이런 과정을 한방에 해결하는 shell script를 이미 만들어두신 분(깃헙 링크)이 있습니다. 

한방에 icon 추출부터 Desktop 등록까지 완벽하게 끝납니다. ^^

스크립트 자체는 길지 않으니 직접 내용을 보셔도 좋을 것 같습니다. 

# 등록 shell script 다운로드
$ wget https://raw.githubusercontent.com/un1t/appimage-desktop-entry/refs/heads/master/appimage-desktop-entry.sh

# 등록 (예: 아두이노 IDE)
$ ./appimage-desktop-entry.sh /home/sol/app/arduino-ide_2.3.3_Linux_64bit.AppImage

# 등록 삭제
$ ./appimage-desktop-entry.sh /home/sol/app/arduino-ide_2.3.3_Linux_64bit.AppImage --remove

 

※ 제가 github 파일을 wget으로 다운받을 때 raw 파일의 URL을 사용해야 한다는 것을 깜박했었네요. 현재는 바로 잡아뒀습니다.

 

 

등록 실행을 하면 자동으로 진행되는데 맨 마지막 부분에 사용할 icon을 선택하는 화면이 아래와 같이 나옵니다.

이 때 원하는 이미지의 번호를 지정하고 엔터를 누르시면 작업은 완료됩니다. 

 

결과 확인

 

ShowApps 목록에 보면 아래와 같이 잘 등록된 것을 볼 수 있습니다.

icon도 AppImage 내에서 추출한 것이라 아주 깔끔하게 잘 들어가 있습니다. 

당연히 검색을 통해서도 확인할 수 있습니다. 

사진 : 자동 등록 쉘 스크립트를 이용해 등록한 Arduino IDE 예시

 

 

 

귀차니즘에 빠진 저같은 사람을 위한 간단하지만 훌륭한 꿀팁이었던 것 같습니다. :-)

 


3️⃣ 추가 확인사항  (sandboxing 관련)

 

같은 방식으로 몇가지 AppImage를 설치해서 사용하다가 간혹 위의 방식대로 하면 등록은 되는데 실행이 안 되는 경우를 발견했습니다. 원인을 찾아보니 Electron 기반 앱들의 경우, 기본적으로 Chromium 엔진을 사용하는데 sandboxing (격리) 처리를 위해 추가적인 권한 설정이 필요하다고 합니다. 그런데 AppImage가 root 권한으로 sandbox 권한 설정을 할 수가 없기 때문에 이를 비활성화해야 한다네요.

 

하는 방법은 간단합니다. 방법1 또는 방법2를 거치고 나면 생성되는 .desktop 파일의 내용을 다음과 같이 수정하면 됩니다.

 

수정 전

Exec=/home/sol/apps/arduino-ide_2.3.3_Linux_64bit.AppImage

 

수정 후 

Exec=env ELECTRON_DISABLE_SANDBOX=1 /home/sol/apps/arduino-ide_2.3.3_Linux_64bit.AppImage

 

주의할 점은 샌드박스를 비활성화하는 것은 격리 기능을 끄는 것으로 앱이 시스템의 다른 자원에 더 쉽게 접근할 수 있게 되며 보안 격리층이 없어진다는 것입니다. 그러니, 이번 경우처럼 전세계적으로 다 사용하는 도구의 경우에는 덜 하겠지만 출처가 확실하지 않은 앱을 사용할 때는 더욱 주의를 기울여야 합니다!