Gnome 데스크탑 메뉴에 애플리케이션 추가하기

그놈 데스크탑 메뉴는 이걸 말한다.

Read The Fucking Manual; RTFM

왜?

Gnome 데스크탑 메뉴 커스터마이징이 필요해질 때가 있다. 예를 들면, 무척이나 유용한 프로그램을 발견했으나 그놈 데스크탑 메뉴를 고려하지 않고 만들어진 경우나, 자신이 직접 만든 프로그램을 편하게 불러다 쓰고 싶은 경우이다.

간단한 프로그램의 경우, Path에 밀어넣고 Alt + F2 핫 키로 명령어를 실행하면 된다. 하지만 그 많은 커맨드를 외우기에는 한계가 있고, 무엇보다 데스크탑 메뉴에 fancy한 아이콘과 함께 정리되지 않는다.

본질

Gnome의 데스크탑 메뉴는 윈도우의 바로가기 메뉴처럼 파일 기반으로 구성되어있지만, 좀 더 customizable 하다.

시스템 전체에서 사용될 소프트웨어는 /usr/share/applications/ 디렉토리에, 특정 계정을 위한 소프트웨어는 ~/.local/share/applications/ 디렉토리에 *.desktop 형식의 파일로 저장되어 있다.

$ ls /usr/share/applications/
bluetooth-sendto.desktop
ca.desrt.dconf-editor.desktop
chromium-browser.desktop
eog.desktop
evolution-calendar.desktop
firefox.desktop
gcm-calibrate.desktop
...

예제

Hello world 프로그램을 만들어보자. ~/.local/share/applications/ 디렉토리에 다음과 같이 helloworld.desktop 파일을 만들자.

[Desktop Entry]
Name=Hello World
Exec=bash -c 'echo "Hello World!";sleep 1;'
Type=Application
Terminal=true
신난다!

실행해보면 Hello World!라고 출력된 터미널이 나타났다가 1초뒤에 사라질 것이다.

이게 뭐지?

Desktop Entry 파일 형식은 읽고 쓰기 쉽게 만들어져있다. 여기에 여러분이 쓸만한 몇 가지 항목을 정리해보았다.

  • Name :: 데스크탑 메뉴에 표시될 이름
  • Exec :: 프로그램을 실행하는 명령
  • Icon :: 데스크탑 메뉴에 표시될 아이콘(파일 위치로 지정)
  • Type :: Application 혹은 Link, Directory 이다.
    • Application :: 소프트웨어를 실행하는 엔트리이다.
    • Link :: URL shortcut을 나타내는 엔트리이다.
    • Directory :: 데스크탑 메뉴의 서브 메뉴이다. .directory 확장자를 갖는다.
  • Terminal :: 이 값이 true인 경우 새 터미널이 만들어진다. true 값을 갖기 위해선 Type 값이 Application 이어야 한다.

예제2

아래는 Stylus Lab's Write 라는 전자펜 필기 애플리케이션의 데스크탑 엔트리를 지정하는 예제이다.

[Desktop Entry]
Name=Stylus Labs Write
Type=Application
Terminal=False
Exec=/home/user/.local/bin/Write
Icon=/home/user/.local/share/icons/hicolor/128x128/apps/styluslabs-write.svg
Keywords=Write;

styluslabs-write.svg는 이렇게 생겼다:

직접 그렸다.

그놈 데스크탑 메뉴에 "write"를 검색하면, 다음과 같이 나온다.

신난다!

데스크탑 엔트리에 대해 더 알고 싶다면, 이 페이지 맨 위의 RTFM 단락을 보라.