DEV Community

Cover image for InstantWM: Animations in a Window Manager!
Angad Sharma
Angad Sharma

Posted on

InstantWM: Animations in a Window Manager!

InstantWM is a window manager to InstantOS, which is an Arch-Linux based operating system that aims to work right out of the box and also cater to power users. It went through a lot of scrutiny and controversy in it's development process, primarily due to faulty reviews from a particular youtuber (distrotube).

The developer subsequently released a video with some bugs either excavated, or altogether nullified by the faulty review. When the smoke settled, people started reviewing InstantOS, but no one has really made a standalone review of InstantWM, which is the window manager that the OS uses, and can be installed on any distribution. I feel like this window manager deserves its own "series" of reviews.


First Impressions

I usually start my reviews with features and the installation procedure, but for this particular WM, I felt that a first impressions review is necessary due to the underlying controversy.

It is the best and the most versatile window manager I have used in a while

Considering I have used stable and extendible WMs such as xmonad and i3, instantWM bring a lot to the table. On first glance, it looks like a dwm fork. That is because it is, but only 40% of the suckless code is remaining in the instantWM repository.

It's versatility comes in the fact that it is both a tiling and a floating window manager. It has a menu like awesome, and you can even use it with a mouse instead of a keyboard, which makes it suitable for newcomers as well. It's modernity is in the fact that it is both minimal and fashionable at the same time, with it's attractive window animations and compsiting effects without sacrificing any functionality.


Features

InstantWM is no joke. It is feature rich without sacrificing on functionality and usability. Some of its main features include.

  • Patchless configuration (you don't have to manually patch things into the config)
  • Modern window transition animations without sacrificing on speed
  • Full multimedia and multimonitor support out of the box
  • Instantutils offers a rich set of utilities for support
  • Hybrid window manager (floating + tiling)
  • Tag system reminiscent of dwm, with tag pinning support as well

Installation

If you are coming from a dwm background, you can simply skip this section.

You need to clone the instantWM repository and build it from source. This is the same way dwm works. Even the configuration is done in the code itself, and needs to recompile after every change.

git clone --depth=1 https://github.com/instantOS/instantWM.git
cd instantWM
./build.sh
Enter fullscreen mode Exit fullscreen mode

These commands will generate a binary. You can then logout of your current DE or WM and login to instantWW, either using a display manager, or through changing your ~/.xinitrc to say the following:

exec instantwm
Enter fullscreen mode Exit fullscreen mode

Before logging into instantWM, you can download the instantutils, which are available in the linux source repositories. We will touch on what these utilities do later on.

# instantutils is available in the AUR
yay -S instantutils
Enter fullscreen mode Exit fullscreen mode

InstantWM uses the st terminal by default, so make sure you either have an st build or you change the configuration (termcmd) to point to another terminal.


Tiling Modes

The official web page has a rundown of all instantWM layouts. Some high utility ones are:

Grid Layout

This layout arranges windows in a grid of equally sized windows.

Grid Layout

Centered Master

One of m favourite layouts, centered master is a layout where the window at the center is the master and all other windows pop up on the left and right hand sides.

Centered Master

Horizontal Stack Layouts - 1 and 2

These are your traditional tiling modes but tiling is done either horizontally or vertically.

TTT

===

Overview

This layout stacks windows in a way that each window is visible and is unchanged from its size in the previous layout.

Overview Layout

Half Stack

The master area is tiled normally, but the stack works like the monocle layout with all windows layered on top of each other.

Half Stack

Other layouts are:

  • Floating
  • Monocle
  • Tiling Layout (Master and Stack)

Overlay Windows

Have you ever played games where you get an overlay console when you press the tilde button, where you can enter commands? You can do the same thing to your windows in instantWM.

Overlay

super + control + w overlays your current window on top of the other windows and essentially locks it in place so it cannot be accidentaly removed. You can then press the same keybinding to undo the action. This gives you a lot of power when you are developing as well as looking at documentation, or a manpage. You can checkout available overlay animations.


Configuration

InstantWM can be configured the same way you configure dwm. If you haven't read my blog on how to configure dwm, you can give it a read here:

Or you can directly go into the configuration section, to checkout how to tweak instantWM to your liking.

NOTE: A key difference between InstantWM and dwm configuration is that instantWM does not have a patch and diff system like dwm, and additional has a build.sh script that you can run everytime you change a configuration.


Multiple Monitor Support

I do not write about multiple monitor support a lot when I am doing my window manager reviews since the WMs that support this feature usually require xrandr commands to be run in order to set the display, but instantWM comes with an amazing utility for the same.

The moment you plug your external display in, an instantmenu pops up, asking if you want to mirror or extend your display out to the secondary display. This is a great feature that I hope more window managers incorporate.

You can easily switch between monitors and send current windows to the secondary display without leaving your keyboard, as shown in the video above.


Conclusion

InstantWM and its instantutils can be easily downloaded and configured for any system and you don't necessarily have to have instantOS for the best experience. People in the WM community are used to using minimal and lightweight WMs which often compromise on aesthetics. It is great to see a window manager with a modern user experience that is still minimal enough to be installed and used on low power machines.

As of now (when this article was written), instantWM is still in beta and actively looking for contributors. I am glad to see that the developer is also building towards ARM and 32 bit support. I can recommend this window manager to beginners as well as power users due to its outstanding versatility.

Judgement Rubric Rating
Simplicity of use ❤️ ❤️ ❤️ ❤️
Simplicity of Configuration ❤️ ❤️
Learning curve (lesser is better) ❤️ ❤️
Productivity ❤️ ❤️ ❤️ ❤️ ❤️
Fun ❤️ ❤️ ❤️ ❤️ ❤️

Top comments (5)

Collapse
 
bashe profile image
Jordan Basheski

I've never spent the time to learn at least one tiling WM and this one looks like very interesting one to try...

I just installed on an Arch running under WSL2 and it doesn't work... But I was expecting not to work, so no big deal... also "instantutils" are no more available...

I might try instantOS later on a virtual machine (I'm just experimenting at work ;) so currently forced to stay on windows mahcine)

Collapse
 
l04db4l4nc3r profile image
Angad Sharma

The best part is you don't have to get the intire instantOS. You can just get the instantWM and keep your underlying linux operation system

Collapse
 
johnaweiss profile image
johnaweiss

How does this compare to xfce? Or is that apples to oranges?

Collapse
 
yaugusto profile image
Yuri Augusto

I installed Qtile on my gnome fedora. But I'm kind of confused on how to configure it. Learning a little everyday. I'll take a look at all your posts.

Collapse
 
rayvermey profile image
Ray Vermey

Good article!
I have made some videos on youtube on InstantOS/WM for people interested.
Link to playlist: https://www.youtube.com/watch?v=2tVUnIUndWg&list=PLVapeou0oJF77dZlprQuliNiu8D_oI1yr