Package Categories and References
1. Core System
These are not optional. Without them, nothing else works correctly.
Base System
The absolute minimum for a bootable Arch installation. Includes
the core utilities, the C library, and the package manager itself.
Without this layer, the system does not exist.
Examples:
base,base-devel
Linux Kernel
The kernel is the bridge between your hardware and your software.
It manages memory, processes, devices, and system calls. Arch
ships the vanilla upstream kernel, but alternatives exist with
different scheduling and performance characteristics.
Examples:
linux,linux-lts,linux-zen,linux-hardened
linux-headers is also needed if you build kernel modules
(e.g. for certain GPU drivers or VPN tools).
Firmware
Blobs of binary code that the kernel loads onto hardware devices
at boot – GPU microcode, Wi-Fi card firmware, NVMe controller
firmware. Without this, hardware either does not work at all or
works badly.
Examples:
linux-firmware
CPU Microcode
Processor-specific patches applied by the bootloader at boot
time. They fix hardware bugs and security vulnerabilities at the
CPU level. You pick one depending on your CPU manufacturer.
Examples:
intel-ucode,amd-ucode
Bootloader
The first piece of software that runs after your firmware (UEFI
or BIOS). It finds the kernel image and hands control over to it.
Without a bootloader, the system does not start.
Examples:
grub,systemd-boot(part of systemd),rEFInd
Init System
The first process the kernel starts (PID 1). It brings up
everything else – mounts filesystems, starts daemons, manages
services. Arch uses systemd by default. You are not replacing it
unless you know exactly why.
Examples:
systemd(default on Arch, already present)
Filesystem Utilities
Tools for creating, checking, and repairing filesystems. Also
needed for mounting drives formatted with filesystems other than
the one your root partition uses – external drives, USB sticks,
Windows partitions.
Examples:
e2fsprogs(ext4),dosfstools(FAT32),ntfs-3g(NTFS),exfatprogs(exFAT),btrfs-progs
Man Pages
The built-in documentation system. man ls, man systemctl,man pacman. Without man-db, you have no offline reference.
You will need the internet for everything.
Examples:
man-db,man-pages
Time Synchronisation
Keeps the system clock accurate by syncing with network time
servers. An inaccurate clock breaks HTTPS certificate validation,
authentication tokens, and log timestamps. systemd-timesyncd
is already present on most Arch installs and handles basic NTP.
Examples:
systemd-timesyncd(lightweight, already in
systemd),chrony(more accurate, better for laptops
that sleep frequently)
Disk Encryption
Encrypts partitions or volumes so their contents are unreadable
without the correct passphrase or key. If you set up LUKS during
install, cryptsetup is already on your system. If not, this is
the tool you use to add encryption later.
Examples:
cryptsetup(LUKS),veracrypt
2. Display & Compositor
Wayland Compositor
On a standard desktop environment like GNOME or KDE, the
compositor is bundled in. On a standalone window manager setup
like this, it is its own package. The compositor is responsible
for drawing windows, handling input, managing outputs (monitors),
and compositing everything into what you see on screen. On
Wayland, the compositor also is the display server.
Examples:
hyprland,sway,river,niri
Display Manager / Login Manager
The graphical (or TUI) interface that greets you before you log
in. It authenticates your session and launches your compositor.
You can also skip it entirely and launch Hyprland from a TTY withuwsm or a shell script – but a display manager gives you a
cleaner boot experience.
Examples:
ly,greetd,sddm,gdm
Wayland Session Manager
A wrapper that correctly launches a Wayland compositor as a
proper systemd user session, ensuring environment variables are
set, D-Bus is activated, and XDG portals start correctly. Without
something like this, some applications or portals may not
function properly.
Examples:
uwsm
XDG Desktop Portal
A standardised interface that allows sandboxed applications
(Flatpak, but also native apps) to request desktop services –
screen sharing, file picker, opening URIs, camera access – in a
controlled way. Without the correct portal for your compositor,
screen sharing in browsers, file pickers in some apps, and
screenshots via portals will not work.
You typically need two: one compositor-specific, one GTK fallback.
Examples:
xdg-desktop-portal-hyprland,xdg-desktop-portal-gtk,xdg-desktop-portal-kde
XWayland
A compatibility layer that allows X11 applications to run inside
a Wayland session. Some software has not been ported to Wayland
yet. Without XWayland, those applications will not launch at all.
Examples:
xwayland(often pulled as a dependency of the
compositor)
GPU Driver
Software that lets the kernel communicate with your graphics
card. Without the correct driver, you get software rendering,
which is slow, consumes a lot of CPU, and will make Hyprland
painful to use.
Examples:
mesa(AMD / Intel open source),nvidia,nvidia-open,vulkan-intel,vulkan-radeon
Video Acceleration
Libraries that offload video decoding and encoding to the GPU
rather than the CPU. Without this, playing video is noticeably
more expensive on your system resources.
Examples:
intel-media-driver,libva-mesa-driver,nvidia-utils,libva-utils(for testing)
Display Configuration Tool
A tool for arranging monitors, setting resolutions, refresh
rates, and scaling. Hyprland handles this in its config file, but
a GUI tool makes multi-monitor setups significantly less painful
to configure initially.
Examples:
nwg-displays,wdisplays,kanshi
(kanshi is for automatic profiles, not interactive config)
3. Desktop Environment Components
These are the building blocks of the desktop. A traditional DE
like GNOME bundles all of these together. On a standalone
compositor, you assemble them yourself.
Status Bar / Panel
A persistent bar that displays information – time, date,
workspace indicators, system stats, network status, battery,
volume, active window title. On Wayland this communicates with
the compositor via its own protocol or via standard Wayland
protocols.
Examples:
waybar,eww,yambar,ags
Application Launcher
A fuzzy-search interface for launching applications by name,
running shell commands, or switching between open windows.
Without one, you either open a terminal every time or bind every
application to a keyboard shortcut.
Examples:
rofi(with Wayland fork),wofi,tofi,fuzzel,anyrun
Notification Daemon
Receives and displays desktop notifications sent by applications
via the D-Bus notification spec. Manages the queue, allows
dismissal, can support actions (buttons inside notifications).
Without one, notifications are silently dropped.
Examples:
mako,swaync,dunst
Screen Lock
Blanks the screen and requires authentication to resume the
session. The lock screen sits between your unattended machine and
anyone who walks up to it.
Examples:
hyprlock,swaylock,waylock
Idle Daemon
Monitors input inactivity and triggers actions after a set time
– dim the screen, lock the session, suspend the system. Works
in tandem with the screen lock.
Examples:
hypridle,swayidle
Wallpaper Setter
Sets and manages the desktop background. On Wayland this must be
a Wayland-native tool; X11 wallpaper setters will not work.
Examples:
hyprpaper,swww,swaybg,mpvpaper(animated
wallpapers via mpv)
Polkit Authentication Agent
Polkit is a framework for controlling privilege escalation for
unprivileged processes. When an application needs elevated
permissions (mounting a drive, installing a package via a GUI),
Polkit intercepts the request and the authentication agent
presents a password prompt. Without one, those GUI operations
silently fail.
Examples:
polkit-kde-agent,polkit-gnome,lxqt-policykit
Keyring / Secret Storage
A secure, encrypted store for secrets – passwords, API tokens,
SSH keys, application credentials. Applications that handle
authentication (browsers, email clients, cloud sync tools) expect
a secret service to be present and will either fail to save
credentials or store them in plaintext without one.
Examples:
gnome-keyring,keepassxc(with secret service
integration)
Clipboard Manager
Wayland does not have a persistent clipboard by default. When a
window closes, its clipboard content disappears. A clipboard
manager keeps a history of copied items and makes them accessible
after the source application is gone. Also enables fuzzy-search
through clipboard history.
Examples:
cliphist,clipman
wl-clipboard (wl-copy / wl-paste) is also needed as the
underlying Wayland clipboard utility. It is not a manager itself,
but most managers depend on it.
Screenshot Tool
Captures the screen, a region, or a specific window. On Wayland
this works through the compositor’s screencopy protocol or via
XDG portals. X11 screenshot tools do not function on Wayland.
Examples:
grim,hyprshot,grimblast
A region selection tool is almost always used alongside the
screenshot tool.
Screen Region Selector
An interactive overlay that lets you draw a rectangle over the
screen to define a capture area. Used with screenshot tools and
sometimes screen recorders.
Examples:
slurp
Screen Recorder
Captures video of the screen or a region of it. Useful for
documentation, bug reports, or content creation. Wayland screen
recording requires compositor support for the screencopy protocol.
Examples:
wf-recorder,obs-studio
Color Picker
Samples the color of any pixel on screen and returns the hex or
RGB value. Small tool, but immediately useful when theming.
Examples:
hyprpicker,gpick
On-Screen Display (OSD)
A temporary overlay that appears when you change volume or
brightness, showing the current level visually. Not strictly
necessary, but without it you adjust volume blind.
Some notification daemons (like swaync) can be configured to
do this. There are also dedicated tools.
Examples:
swayosd, custom scripts usingnotify-send
Screen Annotation / Screenshot Editor
Edits screenshots immediately after capture – adds arrows,
text, highlights, and crops. Useful for documentation.
Examples:
swappy
4. Audio
Audio Server
The layer between the kernel’s audio subsystem (ALSA) and your
applications. It handles routing, mixing, Bluetooth audio,
virtual devices, and gives applications a consistent interface
regardless of hardware. PipeWire is the current standard on
modern Linux – it also handles PulseAudio and JACK compatibility.
Examples:
pipewire,pipewire-pulse,pipewire-alsa,pipewire-jack,wireplumber(session manager for PipeWire)
Volume Control / Audio Mixer
A GUI or TUI for controlling per-application volume, input/output
device selection, and audio routing. The audio server itself does
not provide this interface.
Examples:
pavucontrol(GUI),pulsemixer(TUI),pamixer
(CLI)
5. Networking
Network Manager
Manages wired, wireless, and VPN connections. Handles DHCP,
static IP configuration, connection profiles, and automatic
reconnection. Without this (or an equivalent), you configure
networking manually via ip and wpa_supplicant every boot,
which is painful.
Examples:
networkmanager,iwd,connman
Network Manager Frontend
A user interface for the network manager. The manager itself runs
as a daemon in the background; the frontend is how you interact
with it – connecting to Wi-Fi, editing profiles, toggling VPN.
Examples:
nm-applet(system tray),nmtui(TUI),networkmanager-dmenu(rofi/dmenu integration)
DNS Resolver / Encrypted DNS
Handles domain name resolution. The default system resolver sends
DNS queries in plaintext, which is readable by your ISP and any
network middleman. An encrypted DNS tool routes those queries over
DoH or DNSCrypt.
Examples:
dnscrypt-proxy,systemd-resolved(with DoH
config),stubby
VPN Client
Encrypts your network traffic and routes it through a remote
server. Necessary for privacy on hostile networks or for
accessing private network resources.
Examples:
wireguard-tools,openvpn,openconnect
Firewall
Controls which network traffic is allowed in and out of the
system. Without one, all ports are open to whatever the kernel
allows by default.
Examples:
ufw(frontend for nftables/iptables),nftables,iptables
SSH Client / Server
The standard tool for remote access and secure file transfer.
The client lets you connect to remote machines. The server lets
remote machines connect to yours.
Examples:
openssh
Tor
Routes traffic through the Tor anonymity network. torsocks
wraps arbitrary applications to force their traffic through Tor.
Examples:
tor,torsocks
Network Diagnostics
Tools for inspecting, testing, and debugging network connections
at a lower level than a browser or ping. Useful for diagnosing
connectivity issues, scanning for open ports, or measuring
throughput.
Examples:
nmap(port scanning),traceroute,iperf3(bandwidth testing),bind(providesdigandnslookupfor DNS queries),openbsd-netcat
6. Input & Hardware
Input Remapper
Remaps keys, mice, and other input devices at the kernel or
application level. Useful for non-standard keyboards, ergo
layouts, or remapping modifier keys across the entire system.
Examples:
keyd,xremap,interception-tools
Brightness Control
Adjusts screen backlight brightness. On Wayland this usually
works through a tool that writes directly to the kernel’s backlight
interface.
Examples:
brightnessctl,light
Fingerprint Reader
If your machine has a fingerprint sensor, this daemon enables
it for PAM authentication – login, sudo, screen unlock.
Examples:
fprintd
Power Management
Controls CPU frequency scaling, disk spin-down, USB autosuspend,
and other power-saving features. Particularly relevant on laptops.
Examples:
tlp,auto-cpufreq,power-profiles-daemon
Bluetooth Manager
Manages Bluetooth device pairing, connection, and profiles. The
kernel’s Bluetooth stack (bluez) is the backend; a frontend
gives you a usable interface.
Examples:
bluez,bluez-utils(backend),blueman(GUI),bluetui(TUI)
Smart Drive Monitor
Monitors hard drive and SSD health via the S.M.A.R.T. interface
built into the drive firmware. Useful for catching failing drives
before data loss.
Examples:
smartmontools
7. Theming & Appearance
Font — Monospace (with Icons)
Your terminal, editor, and status bar all render text. A Nerd
Font patches the typeface with icon glyphs used by many TUI tools
and status bars. Without one, you see boxes or question marks
instead of icons.
Examples:
ttf-jetbrains-mono-nerd,ttf-firacode-nerd,ttf-hack-nerd
Font — Sans-Serif (UI / Interface)
Used by GTK applications, notification bodies, rofi, and anywhere
a proportional font is expected. Picking one gives the desktop
a consistent look across applications.
Examples:
inter-font,noto-fonts,ttf-ubuntu-font-family
Font — Emoji
Without emoji fonts, emoji render as empty boxes. Browsers,
terminals, and some applications use them even if you do not
intentionally.
Examples:
noto-fonts-emoji,ttf-twemoji
Font — Serif
Used in documents, PDF viewers, and reading-focused applications.
Less critical than monospace and sans-serif for a terminal-first
setup, but absence is noticeable in document viewers and office
applications.
Examples:
adobe-source-serif-fonts,noto-serif
Font Management Tool
Previews, installs, and organises fonts. Not necessary if you
install fonts via the package manager, but useful if you are
downloading fonts from external sources or managing a large
collection.
Examples:
font-manager
Icon Theme
The set of icons used by GTK applications for file types,
folders, application launchers, and system actions.
Examples:
papirus-icon-theme,hicolor-icon-theme
(hicolor is the fallback standard, always install it)
Cursor Theme
The mouse cursor shape. The default Wayland cursor is functional
but ugly. A cursor theme makes things look intentional.
Examples:
capitaine-cursors,xcursor-themes,bibata-cursor-theme
GTK Theme
Controls the visual appearance of GTK2/GTK3/GTK4 applications –
buttons, windows, scrollbars, toggles, everything. Without a
theme, GTK apps use the bare Adwaita default which may clash with
your compositor’s look.
Examples:
adwaita-dark(built-in GTK),catppuccin-gtk-theme
GTK Settings Manager
A GUI tool for applying GTK themes, icon themes, and cursor
themes without manually editing ~/.config/gtk-3.0/settings.ini.
Also handles font settings for GTK apps.
Examples:
nwg-look,lxappearance
Qt Theme / Qt Theming Layer
Qt applications use a separate theming system from GTK. Without
configuring this, Qt apps look completely different from everything
else – mismatched fonts, colours, and widget styles.
qt5ct and qt6ct are configuration tools. Kvantum is a theme
engine that applies SVG-based themes to Qt.
Examples:
qt5ct,qt6ct,kvantum
8. Shell & Terminal
Terminal Emulator
The window that runs your shell. On Wayland this must be a
Wayland-native terminal or one that runs under XWayland. GPU
acceleration makes a meaningful difference in rendering speed,
especially with large outputs.
Examples:
kitty,alacritty,foot,wezterm,ghostty
Shell
The command interpreter. Bash is the default on Arch. Zsh adds
better completion, history handling, and plugin support. Fish is
friendly but not POSIX-compatible.
Examples:
zsh,bash,fish
Shell Prompt
The part of your shell that displays information at the start of
each line – current directory, git branch, last exit code, etc.
A well-configured prompt gives you context at a glance.
Examples:
starship,oh-my-posh,powerlevel10k(Zsh only)
Terminal Multiplexer
Allows multiple terminal sessions within a single window, with
persistent sessions that survive disconnection. Especially useful
for SSH or long-running processes.
Examples:
tmux,zellij,screen
Pager
Displays long text output one screenful at a time.less is the standard. bat is a replacement with syntax
highlighting and line numbers.
Examples:
less,bat
AUR Helper
Automates building and installing packages from the Arch User
Repository, which is not covered by pacman directly. Also
wraps pacman for full system upgrades.
Examples:
paru,yay
9. Text Editors
There is a meaningful distinction between a quick terminal editor,
a modal editor, and a full IDE. They are not interchangeable and
serve different moments.
Simple Terminal Editor
A straightforward, non-modal editor that behaves like most
people expect a text editor to behave – you open it, you type,
you save, you quit. No modes, no configuration required to use
it. The value is immediate usability, especially on a fresh
system before anything else is configured, or when editing a
single file quickly over SSH.
The tradeoff is that it is slow for large-scale editing and
offers almost no extensibility.
Examples:
nano,micro
Modal Terminal Editor
A terminal editor built around the concept of distinct modes –
usually a normal mode for navigation and commands, and an insert
mode for typing. This means the keyboard is not wasted on just
typing characters; every key is a potential command. The learning
curve is steep but the payoff is that editing becomes
significantly faster once the muscle memory is built.
vim is the classic. It is installed almost everywhere, which
makes knowing it valuable beyond your own machine. neovim is
a modernised fork with a Lua configuration API, better defaults,
and a large plugin ecosystem. The two share the same fundamental
editing model.
These editors are also the foundation of the terminal-first
development workflow – with enough configuration they approach
full IDE behaviour.
Examples:
vim,neovim
IDE (Integrated Development Environment)
A heavier, more complete development environment than a plain
text editor. An IDE bundles a file tree, integrated terminal,
built-in debugger, version control UI, and deep
language-specific tooling into one application. The distinction
from a text editor is fuzzy – Neovim with enough plugins
approaches IDE behaviour – but a dedicated IDE requires less
configuration to get to that point.
Worth noting: VS Code and its derivatives are technically
Electron applications. They are large, they consume more memory
than a terminal editor, and they are not terminal-native. The
tradeoff is that they work well out of the box for most
languages without extensive configuration.
Examples:
code(VS Code),vscodium(VS Code without
Microsoft telemetry),intellij-idea-community,pycharm-community,eclipse
10. Development & Version Control
Version Control System
Tracks changes to files over time. Essential for any code or
configuration work. Also used by AUR helpers to clone and update
packages.
Examples:
git
Git TUI / Frontend
An interactive terminal interface for git – viewing diffs,
staging changes, managing branches, and resolving conflicts
without memorising every git subcommand.
Examples:
lazygit,gitui
Diff / Merge Tool
Compares two files or directories side by side and highlights
differences. A merge tool extends this to resolve conflicts when
two versions of a file have both been modified. git diff is
sufficient for simple cases; a dedicated tool helps with complex
conflicts.
Examples:
meld(GUI),vimdiff(terminal),delta(better git diff output in terminal)
Language / Runtime Version Manager
Manages multiple installed versions of a language runtime on the
same machine. Essential when different projects require different
versions – one project needs Node 18, another needs Node 20, a
third needs Python 3.10 while your system has 3.12. A version
manager lets you switch between them per-project or per-shell
without reinstalling anything.
Examples:
nvm(Node.js),pyenv(Python),rustup(Rust – also the official Rust installer),sdkman(JVM languages),mise(polyglot, handles many
languages in one tool)
Language Runtimes and Toolchains
The interpreters, compilers, and build tools for whatever
language you are working in. Arch ships most of these in the
official repositories.
Examples:
nodejs,npm,python,python-pip,rust,go,deno
LSP Servers
Language Server Protocol implementations that provide
autocompletion, diagnostics, go-to-definition, and other IDE
features in editors that support LSP (like Neovim). Installed
separately per language.
Examples: managed via
mason.nviminside Neovim, or installed
directly via the package manager
Build System / Build Tools
Automates the steps required to turn source code into a runnable
binary or deployable artifact. Handles compilation order,
dependency linking, and running tests. Different languages use
different build tools; base-devel on Arch covers most of what
you need to compile anything from the AUR or from source.
Examples:
make,cmake,meson,ninja,gradle
API Testing Tool
Sends HTTP requests to an API endpoint and inspects the response.
Used for testing and debugging REST or GraphQL APIs without
writing code. Some are CLI tools, some are GUI applications.
curl covers basic use but is not ergonomic for repeated API
work.
Examples:
httpie,xh,curlie(CLI),bruno,insomnia(GUI, open source)
Database Client
Connects to a running database and lets you inspect schemas,
run queries, view data, and manage tables. Essential once you
are working with any persistent data store.
Examples:
dbeaver(GUI, multi-database),beekeeper-studio(GUI),pgcli(TUI, Postgres),mycli(TUI, MySQL)
Container Runtime
Runs applications in isolated containers. Docker is the most
common. Podman is a daemonless alternative. Incus/LXD runs full
system containers and virtual machines.
Examples:
docker,podman,incus
Virtualisation
Runs full virtual machines with their own kernel. QEMU is the
backend; virt-manager and virt-viewer are frontends.
Examples:
qemu-full,virt-manager,virt-viewer,libvirt
System Call Tracer / Debugger
Traces the system calls a process makes, which is how you find
out why a program is failing when it gives you no useful error
message. A low-level debugging tool you reach for when everything
else fails.
Examples:
strace,ltrace
Hex Editor
Opens binary files and shows their raw byte values in
hexadecimal. Used when inspecting files that are not plain text
– compiled binaries, firmware images, corrupted files.
Examples:
hexyl(terminal, read-only with colour),bless(GUI, editable),xxd(CLI, ships with vim)
11. File Management
File Manager
Browse, move, copy, rename, and delete files. TUI file managers
are fast and integrate well with terminal workflows. GUI file
managers provide drag-and-drop and thumbnail support.
Examples:
yazi,lf,nnn(TUI),thunar,dolphin(GUI)
Archive Manager
Creates and extracts compressed archives – zip, tar, 7z, rar,
gz, zst. Without the right tool for a format, you cannot open it.
Examples:
7zip,unzip,unrar,tar(usually already
present),file-roller(GUI)
Thumbnail Generator
Generates preview thumbnails for images, videos, and documents
in GUI file managers. Without this, file managers show blank
icons instead of previews.
Examples:
ffmpegthumbnailer,tumbler
Disk Usage Analyser
Shows what is consuming disk space, either visually or as a
sorted list. Useful when a drive fills up and you need to find
the cause.
Examples:
dust,ncdu,duf(disk usage summary)
Disk / Partition Management
Tools for creating, resizing, and managing partitions and
partition tables. Used for setting up drives or external storage.
Examples:
gptfdisk,parted,gparted(GUI)
LVM Tools
If your system uses Logical Volume Management for flexible disk
partitioning, these are required.
Examples:
lvm2
Backup Tool
Copies data to a secondary location in a way that supports
incremental backups, deduplication, and restoration. rsync is
simple file mirroring. restic and borg add encryption,
deduplication, and snapshot management.
This is not optional if the data matters. A broken package
upgrade, a full disk, or a hardware failure will eventually
happen.
Examples:
rsync,restic,borgbackup
Cloud Storage Client
Syncs files with a remote cloud storage service.
Examples:
filen-cli,rclone,syncthing
Remote Desktop Client
Connects to remote machines running a graphical desktop via VNC,
RDP, or other protocols. Useful for managing Windows machines or
headless Linux servers that have a GUI.
Examples:
remmina,tigervnc
12. System Utilities
System Monitor / Resource Monitor
Displays live information about CPU, memory, disk I/O, network,
and running processes. A better-looking, more informative
replacement for top.
Examples:
btop,htop,bottom
Process Viewer
A better ps. Lists running processes with readable output,
filtering, and sorting.
Examples:
procs
Fuzzy Finder (CLI)
An interactive filter for lists of text in the terminal.
Integrates with the shell to search command history, files,
processes, and anything else that outputs text.
Examples:
fzf,sk
Smart Search (File Content)
Searches file contents recursively. Much faster than grep -r
on large codebases.
Examples:
ripgrep,silversearcher-ag
Smart Search (File Name)
Finds files by name. Faster and more user-friendly than find.
Examples:
fd
Modern ls Replacement
A replacement for ls with colour, icons (with Nerd Fonts),
git status integration, and human-readable sizes.
Examples:
eza,lsd
Download Manager
Downloads files from the internet, with support for resuming
interrupted downloads, parallel connections, and multiple
protocols.
Examples:
aria2,wget,curl
Calculator (CLI)
A command-line calculator for quick arithmetic or more complex
expressions without opening a GUI application.
Examples:
bc,qalculate(has a CLI mode)
Security Auditing
Checks the system for known vulnerabilities in installed packages
and configuration issues.
Examples:
arch-audit,rkhunter,lynis
Duplicate File Finder
Scans directories for files with identical content and lists or
removes them. Useful for cleaning up storage.
Examples:
fdupes,rmlint
13. Applications
Web Browser
Fetches, renders, and runs web content. Wayland-native browsers
render noticeably smoother than those running via XWayland.
Examples:
firefox,librewolf,floorp,brave,chromium
Email Client
Sends and receives email. Can be a full GUI application or a
terminal-based client.
Examples:
thunderbird,tutanota-desktop(GUI),neomutt,aerc(TUI)
Document Viewer / PDF Reader
Opens and reads PDF, ePub, DjVu, and similar formats. A minimal
document viewer is faster than a full office suite for just
reading.
Examples:
zathura(withzathura-pdf-mupdf),evince,okular
ePub / eBook Reader
A dedicated reader for ePub files specifically. zathura can
handle some formats but a dedicated reader offers better
navigation, bookmarking, and reading experience for long-form
text.
Examples:
epr(terminal),foliate(GUI)
Image Viewer
Opens and browses image files. Should be Wayland-native or
usable under XWayland.
Examples:
imv,swayimg,eog
Image Manipulation Tool
Edits and converts images. imagemagick is a CLI tool that
handles format conversion, resizing, and compositing.
Examples:
imagemagick(CLI),gimp(GUI raster),inkscape(GUI SVG / vector)
Video Player
Plays video files and streams. mpv is the standard for
terminal-first setups – it is scriptable, lightweight, and
supports virtually every format.
Examples:
mpv,vlc
Media Downloader
Downloads video and audio from websites and streaming platforms
to local files.
Examples:
yt-dlp
Music Player Daemon
A background daemon that manages a music library and plays audio.
Controlled separately by a client application. Separates
playback logic from the interface – if your UI crashes, the
music keeps playing.
Examples:
mpd
Music Player Client
The interface for a music player daemon. Controls playback,
browsing the library, and managing the queue.
Examples:
ncmpcpp,mpc(CLI),cantata(GUI)
Note Taking Application
A place to write and organise notes, references, and personal
knowledge.
Examples:
obsidian,logseq,zettlr
Password Manager
An encrypted database of credentials. Without one you either
reuse passwords or write them somewhere insecure.
Examples:
keepassxc,bitwarden,pass
Office Suite
For documents, spreadsheets, and presentations in standard
formats (ODF, DOCX, XLSX, etc.).
Examples:
libreoffice
Spell Check Library
Provides spell checking for applications that support it –
LibreOffice, email clients, some browsers. You install the
library and then the dictionary for your language separately.
Examples:
hunspell,hunspell-en_gb,hunspell-en_us,aspell(some applications prefer this over hunspell)
Calculator (GUI)
A graphical calculator. Qalculate is particularly good because
it handles unit conversion, symbolic maths, and complex
expressions.
Examples:
qalculate
Communication / Messaging
Applications for chat, social platforms, and real-time
communication.
Examples:
telegram-desktop,element-desktop(Matrix),discord,slack-desktop
Fediverse / Social Client
TUI or GUI clients for federated social platforms – Mastodon,
Akkoma, Pleroma, Misskey. If you are on the Fediverse and want
to interact without a browser.
Examples:
tut(Mastodon TUI),toot(CLI),kaiteki(GUI, multi-platform Fediverse)
RSS / Feed Reader
Aggregates and displays content from RSS and Atom feeds – blogs,
news, podcast listings, YouTube channels. Keeps information
consumption terminal-side and out of the browser.
Examples:
newsboat(TUI),rss-guard(GUI)
Torrent Client
Downloads files via the BitTorrent protocol. Useful for Linux
ISOs, large open datasets, and anything distributed without a
central server.
Examples:
transmission-cli(CLI/daemon),transmission-gtk(GUI),qbittorrent,deluge
Fetching Tool
Displays system information alongside an ASCII or image logo.
Purely aesthetic. Installed last, used constantly.
Examples:
fastfetch,neofetch(unmaintained),macchina
14. Fonts Summary
Fonts deserve a consolidated note because they affect the entire
desktop.
| Type | Purpose | Example Packages |
|---|---|---|
| Monospace Nerd Font | Terminal, editor, status bar icons | ttf-jetbrains-mono-nerd |
| Sans-Serif UI Font | GTK apps, notifications, launchers | inter-font, noto-fonts |
| Emoji Font | Emoji rendering everywhere | noto-fonts-emoji |
| Serif Font | Documents, reading | adobe-source-serif-fonts |
15. Quick Checklist
Use this to verify nothing critical is missing.
Core System
- Base system and kernel
- CPU microcode and firmware
- Bootloader
- Man pages
- Time synchronisation
- Disk encryption (ideally set up at install time)
Display
- GPU driver and video acceleration
- Display manager or TTY launch setup
- Compositor (Hyprland)
- XDG desktop portals (compositor-specific + GTK fallback)
- XWayland
- Display configuration tool
Desktop Components
- Status bar
- Application launcher
- Notification daemon
- Screen lock + idle daemon
- Wallpaper setter
- Polkit agent
- Keyring
- Clipboard manager +
wl-clipboard - Screenshot tool + region selector
- Screen annotation tool
- Color picker
- OSD (volume / brightness feedback)
Audio
- Audio server (PipeWire + WirePlumber)
- Volume control
Networking
- Network manager + frontend
- Firewall
- SSH client/server
- Encrypted DNS
- Network diagnostics tools
Input & Hardware
- Brightness control
- Bluetooth (if hardware present)
- Power management (if on a laptop)
- Fingerprint reader (if hardware present)
- Input remapper (if needed)
- Smart drive monitor
Shell & Terminal
- Terminal emulator
- Shell + prompt
- Terminal multiplexer
- Pager
- AUR helper
Theming
- Fonts (monospace Nerd Font + emoji at minimum)
- Icon theme + hicolor fallback
- Cursor theme
- GTK settings manager
- Qt theming (qt5ct / qt6ct + Kvantum)
Editors & IDE
- Simple terminal editor (nano or micro)
- Modal terminal editor (vim or neovim)
- IDE (if text editor + plugins is not sufficient)
Development
- Git + git TUI
- Language runtimes and toolchains
- Language version manager
- Build tools (base-devel covers most of this)
- LSP servers
- API testing tool
- Database client (if working with databases)
- Container runtime (docker, podman, or incus)
- Virtualisation (qemu + virt-manager if needed)
- Diff / merge tool
- System call tracer (strace)
- Hex editor
File Management
- File manager
- Archive manager
- Disk usage analyser
- Disk / partition management tools
- Backup tool and a tested restore procedure
- Cloud storage client (if needed)
- Remote desktop client (if needed)
System Utilities
- System monitor
- Fuzzy finder (fzf)
- Smart file content search (ripgrep)
- Smart file name search (fd)
- Modern ls replacement (eza)
- Download manager
- Security auditing tools
Applications
- Web browser
- Email client
- Document / PDF viewer
- Image viewer
- Video player
- Music player daemon + client
- Note taking application
- Password manager
- Office suite
- Spell check library + dictionaries
- Media downloader (yt-dlp)
- Communication / messaging apps
- Torrent client (if needed)
- RSS reader (if needed)
- Fetching tool
This note is a reference, not a prescription. Your actual
package list will differ. The point is to know what each
category does so you know what you are missing when something
does not work.