App

An app in Linux is a piece of software designed to perform one or more functions for an end-user. An app may have a graphical user interface (GUI) or run only via a command line (CLI).

An app is any program designed to perform a specific function, either for an end user or a system administrator. An app in Linux is flexible, can run natively, can be packaged in a variety of ways, and is much more customizable than Windows/macOS.

Apps can be:

  • GUI desktop apps: like Firefox, GIMP, LibreOffice, VS Code…
  • Command line apps (CLI): like htop, nano, wget, ffmpeg
  • Server apps: like Apache, MySQL, Docker, Nginx…
  • Container apps: pre-packaged to run on any system (Flatpak, Snap, AppImage…)

How ​​apps are distributed in Linux:

  1. Through package managers (apt, dnf, pacman...):
    • Apps are installed from the distro's software repository, in the form of .deb, .rpm packages…
    • For example:
sudo apt install firefox
  1. Portable apps:
    • AppImage: just download and run, no installation required.
  • Flatpak and Snap: cross-platform app packaging and distribution, with secure sandboxing.
  1. Self-compilation from source code:
  • Users download source code and compile manually using ./configure && make && sudo make install

An app in Linux usually includes:

Components Description
Executable file (binary) Main executable file (usually located in /usr/bin, /usr/local/bin)
Library (.so) Shared software libraries
Resources Images, icons, fonts, themes
Configuration file Format .conf, located in /etc/ or personal directory ~/.config/
Documentation Manual (man, --help, /usr/share/doc/)

Examples:

Firefox:

  • GUI app, installed from apt, dnf, or Snap/Flatpak.

  • Executable file: /usr/bin/firefox

  • User configuration: ~/.mozilla/firefox/

htop:

  • CLI app to monitor progress.

  • Install via sudo apt install htop

  • Run via command line: htop