BanditHijo.dev

Membuat Desktop Entry untuk Aplikasi Terminal (TUI)

Created at: 2025-07-12
Author by: BanditHijo

Pendahuluan

Hampir semua app TUI (Terminal User Interface) ketika dipasang, belum memiliki desktop entry atau application shortcut agar dapat dipanggil dari application launcher. Berikut ini cara saya membuatnya.

Problem

Karena tidak terbaca atau terdaftar di Application Launcher, saya harus membuka terminal emulator terlebih dahulu untuk memanggil applikasi TUI tersebut. Tidak praktis.

Solusi

Saya perlu mendaftarkan aplikasi TUI tersebut dengan cara membuat desktop entry file agar dikenali oleh application launcher.

Lokasi Desktop Entry

Lokasi dari Desktop Entry disimpan secara umum terdapat di dua tempat.

  1. Global (all user)
    Berada di /usr/share/applications/ direktori.
  2. Local (per user)
    Berada di $HOME/.local/share/applications/ direktori. Kalau belum ada, bisa dibuat dulu.

Di dalam direktori ini, kita dapat melihat file desktop entry yang tersedia. Biasanya desktop entry file sudah tersedia ketika aplikasi di pasang. Namun, umumnya untuk aplikasi berbasis GUI. Aplikasi TUI hampir sangat jarang menyertakan file desktop entry. Maka dari itu, saya sering membuat sendiri file desktop entry untuk aplikasi TUI yang saya gunakan, dan saya simpan di local.

File Desktop Entry

Ciri dari desktop entry file adalah memiliki ekstension .desktop.

Contoh isi dari desktop entry file dari htop.desktop.

/usr/share/applications/htop.desktop
1[Desktop Entry]
2Type=Application
3Version=1.0
4Name=Htop
5GenericName=Process Viewer
6Comment=Show System Processes
7Icon=htop
8Exec=htop
9Terminal=true
10Categories=System;Monitor;ConsoleOnly;
11Keywords=system;process;task

Berdasarkan referensi dari website freedesktop.org > desktop-entry-spec > recognized-keys, terdapat key wajib yang minimal harus ada. Seperti Type dan Name. Namun, untuk dapat memanggil aplikasi harus juga memiliki key Exec (executable). Value dari key Exec inilah yang akan digunakan untuk memanggil aplikasi.

Modifikasi File Desktop Entry

Terkadang saya ingin memodifikasi isinya sesuai dengan preferensi saya. Jangan langsung memodifikasi dekstop entry file yang ada di global. Lebih baik di copy ke local.

Tujuannya agar modifikasi yang dilakukan tidak kembali seperti semula apabila aplikasi tersebut mendapat pembaharuan ketika update.

Buat dulu direktori $HOME/.local/share/applications/ kalau belum ada.

$ mkdir -p ~/.local/share/applications/

Kemudian copy file htop.desktop yang ada di global ke local.

$ cp /usr/share/applications/htop.desktop ~/.local/share/applications/

Contoh Exec untuk Aplikasi TUI

Sejauh pengalaman saya menggunakan Linux, saya menggunakan 2 jenis pendekatan untuk memanggil aplikasi TUI menggunakan desktop entry.

  1. Direct executable
  2. Indirect executable

Perbedaan dari keduanya terletak pada key Terminal.

Direct Executable

Pada pendekatan diret executable, artinya kita menggunakan terminal emulator default yang kita define pada Desktop Environment atau Window Manager dengan configurasi default. Seperti window geometri dari terminal emulatornya.

1Exec=htop
2Terminal=true

Dengan begini, htop akan dipanggil menggunakan default terminal emulator dengan geometri default dari terminal emulatornya.

Indirect Executable

Pada pendekatan indirect executable, artinya kita dapat menggunakan terminal emulator sesuai yang kita inginkan yang kita panggil dari Exec key dan tidak menggunakan terminal emulator default. Dengan begini, kita dapat menggunakan parameter yang disediakan oleh terminal emulator tersebut termasuk window geometri dari aplikasi terminal yang kita panggil.

1Exec=st -t "htop" -g 100x10 -e sh -c 'htop'
2Terminal=false

Dengan begini, htop akan dipanggil menggunakan st (Simple Terminal) termial emulator dengan ukuran window 100x10 dengan nama window “htop”.

Penjelasan parameter pada st terminal yang saya gunakan.

-e adalah parameter untuk executable. Pada terminal emulator lain mungkin bisa -x.

-t adalah parameter untuk mengatur window title.

-g adalah parameter untuk mengatur geometri dari window terminal.

Setiap terminal emulator memiliki parameter yang berbeda-beda.

Contoh Desktop Entry untuk Beberapa Aplikasi TUI

Berikut ini adalah beberapa desktop entry file yang saya buat untuk memanggil aplikasi TUI yang saya gunakan.

Neomutt - email client

$HOME/.local/share/applications/neomutt.desktop
1[Desktop Entry]
2Type=Application
3Exec=neomutt
4Icon=utilities-terminal
5Terminal=true
6Categories=System;TerminalEmulator;
7Name=Neomutt
8GenericName=Email Client
9Comment=A version of mutt with added features

Newsboat - RSS feed reader

$HOME/.local/share/applications/newsboat.desktop
1[Desktop Entry]
2Type=Application
3Exec=newsboat
4Icon=utilities-terminal
5Terminal=true
6Categories=System;TerminalEmulator;
7Name=Newsboat
8GenericName=RSS Reader
9Comment=RSS/Atom feed reader for text terminals

Irssi - IRC client

$HOME/.local/share/applications/irssi.desktop
1[Desktop Entry]
2Type=Application
3Exec=irssi
4Icon=utilities-terminal
5Terminal=true
6Categories=System;TerminalEmulator;
7Name=Irssi
8GenericName=IRC client
9Comment=Modular text mode IRC client with Perl scripting

St - Simple terminal

$HOME/.local/share/applications/st.desktop
1[Desktop Entry]
2Type=Application
3Exec=st
4TryExec=st
5Icon=utilities-terminal
6Terminal=false
7Categories=System;TerminalEmulator;
8Name=st
9GenericName=Terminal
10Comment=st is a simple terminal implementation for X
11StartupWMClass=st-256color

Nvim - Neovim text editor

$HOME/.local/share/applications/nvim.desktop
1[Desktop Entry]
2Name=Neovim
3GenericName=Text Editor
4Comment=Edit text files
5TryExec=nvim
6Exec=nvim %F
7Terminal=true
8Type=Application
9Keywords=Text;editor;
10Icon=nvim
11Categories=Utility;TextEditor;
12StartupNotify=false
13MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

Pulsemixer - PulseAudio mixer

1!filenme: $HOME/.local/share/applications/pulsemixer.desktop
2[Desktop Entry]
3Type=Application
4Name=pulsemixer
5GenericName=pulsemixer
6Comment=CLI and curses mixer for pulseaudio
7Icon=utilities-terminal
8Exec=st -t "pulsemixer" -g 100x20 -e sh -c "pulsemixer"
9Terminal=false

Ncpamixer - Ncurse PulseAudio mixer

$HOME/.local/share/applications/ncpamixer.desktop
1[Desktop Entry]
2Type=Application
3Name=ncpamixer
4GenericName=ncurses PulseAudio Mixer
5Comment=ncurses PulseAudio Mixer
6Icon=utilities-terminal
7Exec=st -t "ncpamixer" -g 70x30 -e sh -c 'ncpamixer'
8Terminal=false

Ranger - Terminal File Manager

$HOME/.local/share/applications/ranger.desktop
1[Desktop Entry]
2Type=Application
3Name=ranger
4GenericName=Terminal File Manager
5Comment=Launches the ranger file manager
6Icon=utilities-terminal
7Terminal=true
8Exec=ranger
9Categories=ConsoleOnly;System;FileTools;FileManager
10MimeType=inode/directory;
11Keywords=File;Manager;Browser;Explorer;Launcher;Vi;Vim;Python

XProp - Property display for X

1[Desktop Entry]
2Type=Application
3Exec=st -t "xprop" -e sh -c 'xprop; exec $SHELL'
4Icon=utilities-terminal
5Terminal=false
6Categories=System;TerminalEmulator;
7Name=xprop
8GenericName=xorg-xprop
9Comment=Property displayer for X

Referensi

  1. freedesktop.org - Desktop Entry Specification
    Diakses tanggal: 2025-07-12
  2. freedesktop.org - Desktop Entry Specification - recognized-keys
    Diakses tanggal: 2025-07-12
  3. Arch Linux Wiki - Desktop entries
    Diakses tanggal: 2025-07-12