Best Lightweight Software/Applications for GNU/Linux
Firas Khalil Khana | 23/03/2017
In this article I’ll be listing some of the lightest applications the GNU/Linux world has to offer, some of which you may know and some not. These applications will not only be lightweight but will not sacrifice that much convenience for the performance and low memory footprint they offer.
I’ll start from ground up, and by that I mean from the bootloader to userspace.
LILO is the lightest bootloader currently available. It’s development was discontinued in Dec. 2015 , but it still works perfectly fine with ext4 filesystems. The configuration file is very straightforward and it requires updating so don’t you forget to update LILO once you’re done editing its configuration file.
It also has another limitation, that is you can’t use more than one initrd. So if you had your microcode updates in an initrd, they won’t work with LILO, but don’t worry DOTSLASHLINUX has guides on booting without an initrd and building microcode updates directly into the kernel.
On the other hand, EXTLINUX is another flavor of Syslinux the lightweight bootloader. It has a simple configuration, supports ext2, ext3, ext4, BTRFS, NTFS, FAT12, FAT16, FAT32, XFS, UFS and FFS
and it doesn’t require updating once you’re done with editing its configuration file, which is impressive once you start to count the number of times you forgot to update your GRUB or LILO config.
2- Kernel: Custom Kernel
DOTSLASHLINUX has an extensive series on how to configure your Linux kernel, kindly check the following The Linux Kernel Configuration Guide Part 1
3- initrd/initramfs : None
Yes, you can boot without an initrd/initramfs. Kindly check our article Booting the Linux Kernel Without an initrd/initramfs
“Hold your horses… What about the intel/amd microcode updates that boost my processor’s performance?” Well, I never said that you needed an initrd to use them. You can easily build them directly into the linux kernel. How you ask? Kindly follow our guide on Building Intel CPU Microcode Updates Directly into the Linux Kernel
After the boot process finished, it’s time to choose a shell and here’s where it gets tough. You see DASH or (Debian Almquist shell) is a modern POSIX implementation of sh and is 4x times faster then BASH. It also uses very minimal resources and has an overall low memory footprint. Since it’s a POSIX compliant shell built for efficiency, you’ll find the arrow keys not working and instead spitting out
^[[A ^[[B ^[[C ^[[D ^[[7~ ^[[8~
and you won’t have a history file of your previous shell commands.
So if you’re that type of person that loves minimalism and speed and can type long shell commands repeatedly without errors then go with DASH.On the other hand, if you prefer having a life… I mean a history of your commands, tab prediction at the price of some overhead then choose BASH.
5- Display Servers: Xorg VS Wayland
We have a tie here why? Well I’d pick a tie over flame wars any day! “Xorg is outdated, bloated with old unnecessary code…” we get that and we all hope that wayland will replace it one day. If wayland is working for you then stick with it, otherwise (and for the sake of this article) go for xorg.
6- Starting X Server: xinit
Yes, you do not need a display/login manager to start your Xorg server. You can easily use xinit and its frontend startx instead. You can even automate startx to start once you’ve logged in.
Here’s DOTSLASHLINUX’s guide to do that Starting Xorg Server Using xinit
There isn’t much comparison here as ALSA is a device driver, an interface between sound hardware and the kernel. Using ALSA alone is lighter than pulseaudio. Late versions of alsa support sound from multiple applications using the plugin dmix which is enabled by default. PulseAudio is a sound server built on top of alsa and can control sound coming from multiple applications unlike alsa which doesn’t have this functionality.
If you wanted a basic configuration file to use on laptops with PCH/HDMI sound cards, kindly check DOTSLASHLINUX’s custom ALSA configuration Basic ALSA Configuration
8- Window Manager: dwm VS Openbox
DWM isn’t only a tiled window manager for X, it’s a dynamic one as well but the reason why I chose dwm is that it’s highly configurable, does what it needs to do perfectly well and super fast! Can’t it get any better!
Here’s DOTSLASHLINUX’s custom dwm configuration Best dwm Configuration
On the other hand, openbox is the de facto stacked window manager for lightweight GNU/Linux distros. It’s heavier than dwm, but it’s for those who absolutely can’t use or hate tiled window managers.
slstatus is the lightest status bar, it was made and should be used with dwm. Here’s DOTSLASHLINUX’s custom slstatus configuration Best slstatus Configuration
If you’re into openbox then LXPanel is your friend. Yes, LXPanel is lighter than fbpanel, pypanel, tint2… you name it! How come? Out of the box it has a workspace switcher, minimize-all-windows button, volume plugin, battery plugin, networking plugin, cpu/ram usage plugin, temperature plugin, date/time plugin…etc.
Overall it has a significantly lower memory footprint than other panels using the same plugins.
There really isn’t much competition here. ranger is one of the fastest and lightest CLI file managers (along with coreutils) and PCManFM dominates the lightweight category of GUI file managers.
11- Desktop Manager: None VS PCManFM
PCManFM can be used to manage the desktop. You can easily organize your icons on your desktop in a neat grid provided by PCManFM. You can also operate on your desktop as you would normally do inside a folder in a file manager.
12- Application Launcher: dmenu
Lightest application launcher available. It was originally developed to be used with dwm, but it can be used with any window manager. You can map it to a keyboard shortcut.
13- Terminal Emulator: rxvt-unicode (urxvtd & urxvtc)
Some may argue and say that st is lighter or that lxterminal is better, but if you’re only going to run a single instance of a terminal emulator without needing the support for scrolling back up then go with st… Otherwise, you can heavily benefit from urxvt. Once you get the daemon (urxvtd) running, you can open for example 100 clients (urxvtc) and the memory footprint would roughly stay the same. Try opening 100 tabs in lxterminal or opening 100 instances of st and measure its memory usage and see for yourself…
Here’s DOTSLASHLINUX’s custom urxvt configuration for least memory footprint Configuring rxvt-unicode (urxvt)
14- Network Manager: ConnMan
Connman is lighter than both NetworkManager and WICD. It supports wifi connection via wpa_supplicant, bluetooth via bluez, automatically manages wired connections and supports the usage of proxies and VPNs. The only drawback to it is that there’s no official applet for it and the currently available applets are either old, slow or lacking some features.
It’s a matter of preference and easiness of use as all of these are lightweight image viewers with feh being the lightest and intended mainly for console users (can also set desktop wallpapers).
qiv comes next being the lightest and fastest GUI image viewer. However, qiv’s controls may be hard to learn for some users. On the other hand, gpicview has a simple GTK GUI that many users will prefer.
16- Desktop Background Wallpaper Setter: hsetroot VS feh
hsetroot is lighter than feh as feh depends on imlib2 (which is probably installed everywhere), but nevertheless these are some extremely lightweight background wallpapers setters for your desktop.
These two are the lightest “usable” web browsers with a GUI available on GNU/Linux. You may be wondering that “ If they were so lightweight then why is my package manager pulling lots of dependencies? “. True they have some dependencies related to qt5 and qtwebkit, but once they’re installed, they’re much lighter than your mainstream browsers. They’re even lighter than midori which is considered a lightweight gtk web browser. Otter is lighter than qupzilla but it’s still under heavy development.
ePDFView is convenient lightweight pdf reader for GNU/Linux. It’s so small it weighs less than 200 kilobytes. However, it’s not the fastest. That title goes to MuPDF which is not so light (package is around ~20 megabytes) but is the fastest pdf reader available for GNU/Linux. MuPDF controls may be annoying to some users as well.
cmus is considered an extrememly lightweight CLI audio player. However, if you found its shortcuts hard to memorize (which is highly unlikely), then mpd+ncmpcpp (which is also a lightweight CLI audio player that has a visualizer) will suit you better.
DeaDBeef is the lighter one (but not by much). However, I’ve encountered several problems while trying deadbeef. Audio files that had.m4a or.aac extension were unplayable and crashed the player. On the other hand, my experience with audacious was super smooth and it played whatever I through at it as long as it had audio.
20- Video Player: mpv
Some may argue that mplayer is lighter, that is true but only slightly. Mpv plays all video formats known to man-kind and it uses less cpu resources than both mplayer and vlc. It also supports VAAPI (Video Acceleration API) and VDPAU (Video Decode and Presentation API) which can significantly reduce its cpu usage (VAAPI) and its gpu usage (VDPAU) making it the fastest, most powerful and least resource hungry video player on GNU/Linux.
Here’s DOTSLASHLINUX’s custom mpv configuration for maximum performance and maximum powersaving Optimal mpv Configuration
e3 is the lightest and is written in assembly. Nano and e3 are for when you’re inside a terminal or in a tty, and leafpad’s when you’re not. However, I’d pick e3/nano over leafpad any day any time.
There’s also Vim, which is the lightest extensible text editor out there. I mainly use Vim for everything and in fact this whole website was coded inside Vim. If you’re interested, kindly check this Best Vim Configuration and Plugins for Web Development
MAIM or (MAke IMage) is a lightweight screen capture tool that utilizes imlib2 to take screenshots. Just fire up a terminal and type:
and a screenshot of your desktop with the name and format that you specified will be saved in the current directory that you’re in. It has some nice options and can be mapped to a given keyboard shortcut.
You also have scrot which requires imlib2 but is also considered lightweight, and gnome-screenshot which despite being related to the GNOME project doesn’t pull many GNOME dependencies.
Recordmydesktop is slightly lighter than simplescreenrecorder but doesn’t have as many options as it does. Unless you have a good reason not to choose simplescreenrecorder, go with recordmydesktop. Green recorder is a new screen recorder claiming to be simple and functional, it’s also the first screen recorder to support Wayland display server on GNOME session.
24- Screen Auto Locking Tool: xautolock
25- Console Auto Locking Tool: vlock
Available for CLI usage and has two GUI flavors (GTK & QT), transmission is a lightweight bittorrent client available for GNU/Linux.
27- Archive Manager: xarchiver
Xarchiver supports 7-zip, arj, bzip2, gzip, rar, lha, lzma, lzop, deb, rpm, tar and zip
28- Process Viewer: htop
Htop is an interactive process viewer for GNU/Linux. It supports mouse usage in terminal or tty through GPM (General Purpose Mouse or Console Mouse Support). It also monitors your cpu usage, memory usage, battery…etc.
If you’re in a terminal emulator or in a tty use irssi, otherwise use xchat. The only downside to irssi is that it’s limited by the terminal emulator it was launched in and since many terminals don’t support right to left languages (and if they did the text doesn’t appear properly), you may want to choose xchat to talk in languages other than English.
True lighttpd is the lightest available http server out there for GNU/Linux, but nginx outperforms it under heavy load.
31- FTP Server: vsftpd
Very Secure FTP Daemon (or vsftpd for short) is a tiny, stable and secure FTP daemon for GNU/Linux. It has a simple configuration file and is super fast.
32- Voice Chat Server & Client: Murmur & Mumble
I was really shocked by the high quality of murmur (server) and mumble (client). I definitely recommend it for gamers, work offices, local use…etc
Geany is for GTK users and has poor autocompletion support (it can be extended using ctags but it’s still not enough). On the other hand, qt creator albeit being used to create Qt applications, it can be used as a C/C++ IDE and it’s a fast one indeed. It has an awesome autocompletion. To me it’s a revamped code::blocks with a better GUI.
34- Download Manager: GNU Wget or uGet
Wget something when you’re in a terminal or a tty, uGet it when not.
I hope you’ve enjoyed this article. This list of applications will be constantly updated and new entries will be added (that is if I found another lightweight yet convenient application for GNU/Linux). If you think I missed an application that you think is lightweight, then please let us know in the comments section below.