A window manager is a software responsible for the placement and appearance of windows of various applications. It allows you to use any number of displays and utilize the screen to its full potential. The advantage is that it increases your productivity and improves your multitasking experience. But what exactly can one do with a window manager?
The article describes some of the best floating and tiling window managers available for Linux.
Window Manager vs. Desktop Environment
Each Linux distribution comes with its desktop environment. By default, Fedora comes with the GNOME desktop environment but provides KDE Plasma, Xfce, LXQT, Cinnamon, or MATE. A desktop environment includes a window, icons, toolbars, directories, screen widgets, and wallpapers. A window manager is a component of a desktop environment, and together with other libraries & applications, it gives users better human-computer interaction.
Linux uses the X Window system (or X11) as its default windowing system. It provides the basic framework for a GUI environment required by various GUI-based apps to function on the display device and interact with a mouse and keyboard. However, the X11 system does not offer much in organizing and managing the app windows on your desktop. This is because X 11 does not mandate the user interface. As a result, the visual styling of X-based environments varies greatly, and different apps may present other interfaces.
This is where a window manager steps in. It can allow you to manage the appearance and behavior of app windows on your computer’s screen or external displays. In essence, you can control its placement and, by extension, its appearance.
Top 15 Window Managers for Linux
Without further ado, let’s get into our list of some excellent window managers for Linux.
1. Awesome WM
Awesome WM is an open-source windows manager written in Lua programming language. The project started as a fork of DWM (Dynamic Window Manager) and evolved into a full-fledged Linux window manager. It features simple window management and is relatively fast.
The language of choice for its development is Lua which offers extensive customization options for developers and users. Moreover, its advanced features can give users complete control over the GUI and window management. You can learn all customization options and advanced features from its well-documented API. Moreover, it uses the asynchronous XCM library instead of the Xlib library, ensuring your actions aren’t subject to as much latency.
$ sudo dnf install awesome [Fedora/CentOS/RHEL] $ sudo apt install awesome [Debian/Ubuntu] $ sudo pacman -S awesome [Arch Linux]
Dynamic-Window Manager [DWM ] is a minimal, simplistic windows manager that works well. It is one of the older open-source window manager projects. It is an inspiration to other dynamic tiling window managers such as xmonad and awesome.
One caveat, however, is the lack of a configuration file, which makes customizing the program’s a little complicated for some users. If you want to make any changes, you have to modify its source code and build it again. To other power users and developers, this might be intriguing and interesting.
DWM is usually the preferred window manager for users who need a no-fuss window manager that does one job—window management. However, sometimes a lot of extra elements and features could add complexity to the user experience and beat the purpose of a program.
$ sudo dnf install dwm [ Fedora/CentOS/RHEL] $ sudo apt install dwm [Ubuntu/Debian] $ sudo pacman -S dwm [Arch Linux]
3. i3 Window Manager
The i3 window manager is a manual window tiler written in the C programming language. It features different window organization settings to modify elements to suit your style. Users will like the fact that it can be straightforward to configure it via a plain text file.
The project team desires to create a fast and minimal window manager that is appealing to advanced users. It features essential functionality such as manual window placement, themes, multiple focus modes. Its advanced options include a taskbar, configurable keybindings, and many more. You can also still customize it further with custom scripts that can be appealing to advanced Linux users.
On the whole, i3’s approach puts you in control of how you’d like to use it on your system, making it ideal for different kinds of users. You can either use it as is or modify it all together as per your productivity needs. Moreover, it is suitable for low-powered computers.
$ sudo dnf install i3 [Fedora/CentOS/RHEL] $ sudo apt install i3 [Ubuntu/Debian] $ sudo pacman -S i3 [Arch Linux]
Xmonad is a free, open-source dynamic tiling window manager for Linux written in the Haskell programming language. You can configure it easily through a configuration file that helps you personalize its behavior to suit your needs.
Users with no prior experience with Haskell can experience challenges in configuring xmonad. However, if you have a prior understanding of the language, it can be very customizable. You can take advantage of this to create a robust and advanced program than most others window managers. It also features an extensive extensions library, Xinerama support (for multi-display setups), and on-the-fly reconfiguration, and many more.
Xmonad automates most of the window arrangements for you so you can focus solely on productivity. It makes it a suitable option for novice and experienced Linux users.
$ sudo dnf install xmonad [Fedora/CentOS/RHEL] $ sudo apt install xmonad [Ubuntu/Debian] $ sudo pacman -S xmonad [Arch Linux]
IceWM is a free stacking window manager written in the C++ programming language. Its project team aims to create a fast and smooth window management experience suitable for underpowered Linux machines. However, despite being minimalistic, it doesn’t compromise on essential features, usability, and customizability.
It uses a plain text file to make customizations making it relatively easy to configure. And if you are stuck, you can refer to its well-structured documentation guides to assist you along the way. Moreover, you get some random helpful tooltips to get you acquainted with the GUI elements and their functionalities whenever you use the program.
Some advanced GUI features include a built-in taskbar at the bottom that simplifies managing and organizing app windows and workspaces. It also supports both Xinerama and RandR, which helps you to set up multi-monitor quickly.
$ sudo dnf install icewm [Fedora/CentOS/RHEL] $ sudo apt install icewm [Ubuntu/Debian] $ sudo pacman -S icewm [Arch Linux]
Spectrwm is a small, dynamic reparenting and tiling window manager built for X11. It was inspired by xmonad and dwm to be fast, concise, and compact. It uses a plain text configuration file with default settings similar to those in xmonad. You can edit and reload configurations while the program is running, meaning you can see your configuration results without logging out.
Some advanced features include built-in keyboard shortcuts, drag-to-float, quick launch menu, dynamic RandR support. Moreover, it features customizable colors, border width, and a status bar.
It is simple to use with a few choices making it an ideal choice for beginners.
$ sudo dnf install spectrwm [Fedora/CentOS/RHEL]] $ sudo apt install spectrwm [Debian/Ubuntu] $ sudo pacman -S spectrwm [Arch Linux]
Fluxbox is an open-source display manager licensed under MIT. It is based on an old project called Blackbox and is written in the C++ programming language. It is lightweight and is relatively fast on any device, making it one of the best window managers
Its advanced features include a panel and different wallpapers. Users can find it easy to use and configure with a straightforward menu that is mouse-driven. You can also easily access the root menu by right-clicking.
It comes with a variety of themes and configuration choices, as well as automatic tiling options. Users with little or no programming language experience can still use Fluxbox with relative ease.
$ sudo dnf install fluxbox [Fedora/CentOS/RHEL]] $ sudo apt install fluxbox [Debian/Ubuntu] $ sudo pacman -S fluxbox [Arch Linux]
Herbstluftwm is a free and open-source manual tiling window manager for x11. It is highly configurable and uses Glib and Xlib. Its layout is based on splitting frames into sub-frames which can be split further and filled with windows.
Herbstluftwm’s advanced features include tags for workspaces or virtual desktops, exactly one tag per monitor, and many more. Its configuration script runs at startup via IPC calls from herbstclient. New users might find it technical, but you can always reference its online usage tutorial or any of its guides from the herbstluftwm team.
$ sudo dnf install herbstluftwm [On Fedora] $ sudo yum install herbstluftwm [On CentOS/RHEL] $ sudo apt install herbstluftwm [On Debian/Ubuntu]
tmux is a free, open-source terminal multiplexer. You can create multiple terminal sessions that you can access and control from a single screen. It makes use of all the screen space available. You can easily use it due to its support for keybindings which enables you to split windows and create more panes as per your needs.
You can also share your shell instances between different distinct sessions for other use cases or users. tmux is an ideal choice for advanced Linux users running several command-line programs simultaneously.
$ sudo dnf install tmux [On Fedora] $ sudo yum install tmux [On CentOS/RHEL] $ sudo apt install tmux [On Debian/Ubuntu]
bspwm is a free, lightweight, and open-source Linux tiling manager. The program is based on binary space partitioning that represents windows as the leaves of a complete binary tree. One of its advanced features is critical binding which is handled through a separate utility called sxhkd. Sxhkd enhances its performance and support for other input devices.
Some of bspwm’s advanced features include support for multiple windows, EWMH, automatic mode for automatically setting the position of app tiles, and many more. You can also configure and control it through simple messages.
True to Linux philosophies, bspwm concentrates on doing one thing and getting it done correctly, making a favorable choice for most experienced Linux users.
$ sudo dnf install bspwm [On Fedora] $ sudo yum install bspwm [ On CentOS/RHEL] $ sudo apt install bspwm [On Debian/Ubuntu]
Ratpoison is a free, open-source lightweight Window Manager for Linux. The project team aims to design a simple program with minimal fancy graphics and window decorations. Instead, it is modeled after the GNU Screen that gained its popularity in the virtual terminal community.
Its advanced features include split windows that you can organize into non-overlapping frames. You can also maximize all windows within each frame. Moreover, Ratpoison is solely operated using keyboard commands.
If you get stuck, you can always refer to its well-structured and easy-to-use online documentation.
$ sudo dnf - install ratpoison [Fedora] $ sudo pacman -S ratpoison [Arch Linux] $ sudo apt install ratpoison [Ubuntu/Debian]
Qtile is an open-source, full-featured, and hackable tiling window manager. It is written and completely configured in Python. Its project team aims to design a window manager that is simple to use, extensible, and highly customizable.
Some of the Qtile features include custom layouts, built-in commands, and widgets. It efficiently uses your screen real estate by automatically arranging windows. Moreover, you can script it remotely to set up workspaces, manipulate windows or update status bar widgets. If you are a Python developer, you can leverage the full power and flexibility of the language to make Qtile fit your work environment needs.
It has comprehensive documentation and an ever-growing community of developers and users who are always ready to help if you are stuck or need clarification. You can also check out some configuration examples on Github.
$ sudo dnf -y install qtile [Fedora] $ sudo pacman -S qtile [Arch Linux] $ sudo apt-get install qtile [Ubuntu/Debian]
Enlightenment provides smooth, appealing, and modern Linux display manager. Moreover, it is relatively easy to use. The first time you log into Enlightenment, it asks for some basic preferences, like desired language, size of window title bars, and you can also accept the defaults. In essence, you don’t need any programming knowledge to set up the environment. It also features mouse-driven menus that are perfect for your laptop battery life.
By default, its desktop displays desktop icons for familiar places, such as your home, root, and temporary directories. There’s also a docking area at the bottom where applications can go when minimized. You can also create launchers for quick access to common applications and where applets such as clock, volume control, keyboard layout, and many more run. It provides interactive desktop previews within the desktop widget and the ability to turn the desktop within its thumbnails.
In essence, Enlightenment is a desktop environment disguised as a window manager. Its primary task is to arrange and manage windows. Moreover, it ships with a file manager (Fileman), a terminal (terminology), a network manager(ConnMan)
$ sudo apt install enlightenment -y [Ubuntu/Debian]
Sway is a free, open-source, and lightweight tiling window manager. It is Wayland i3-compatible and automatically arranges application windows to maximize screen estate. By default, it organizes windows into a grid. Moreover, you can organize application windows vertically, horizontally, stacked, or tabbed. You can also change the size of windows or split windows into containers of several windows.
Other advanced features include support for keyboard shortcuts, its usage of Wayland instead of Xorg, and gaps. It supports a majority of the commands included in Wayland i3.
$ sudo dnf install sway [On Fedora] $ sudo yum install sway [On CentOS/RHEL] $ sudo apt install sway [On Debian/Ubuntu]
Joe’s Window Manager(JWM) is an open-source lightweight window manager for the X11 Window System. It is written in c programming language and is optimized to work well even on older or less powerful computers.
By default, it can run on only the Xlib library and work with other libraries such as libXext for shape extension, libjpeg for JPEG backgrounds and icons, libpng PNG backgrounds and icons, Cairo and libRSVG for icons and backgrounds, and many more.
$ sudo dnf install jwm [On Fedora] $ sudo yum install jwm [On CentOS/RHEL] $ sudo apt install jwm [On Debian/Ubuntu]
Window managers are an essential part of daily workflow productivity for users who have to navigate between several apps or several display screens. As with any Linux app category, there are many more window managers in the Linux community that you can choose. A majority of them offer nearly the same features as our list above.
In case you’re getting started with window managers, I recommend checking out xmonad or i3. They are fast, minimal, and offer all the essential features you’ll need to keep your app windows organized and maximize your productivity. A personal favorite is Qtile because of the Python programming language that offers a lot of customization options.
If you have a personal favorite, please share it in our comments sections.