Comparision: i3 vs dwm

I used i3 for a pretty long time, but now, after using dwm for a long time and highly customizing it, i3 is now horrible for me. Why? So...

  1. Performance and memory usage

    dwm tiles windows automatically and dynamically. It means that if a new window appears, dwm will, according to selected layout, move a new window to the master part, and rest of windows will be in a slave part. Windows are on the stack, so you can move them, set window to master, change size of master part, and many other things.
    On the other side, tiling in i3 is manual. It means that you must select where exacly window will be spawned, but that give you flexibility to make your own layout in runtime. This is great, but dynamic tiling is usable more often than manual tiling.
  2. Manual tiling

    dwm tiles windows automatically and dynamically. It means that if a new window appears, dwm will, according to selected layout, move a new window to the master part, and rest of windows will be in a slave part. Windows are on the stack, so you can move them, set window to master, change size of master part, and many other things.
    On the other side, tiling in i3 is manual. It means that you must select where exacly window will be spawned, but that give you flexibility to make your own layout in runtime. This is great, but dynamic tiling is usable more often than manual tiling.
  3. Configuration

    To configure i3, you are going to open ~/.config/i3/config file which is wrote in simple, easy language. On the other side, to configure dwm, you will open config.h localised in root of your cloned repository. This file is just C code. You may think that i3 configuration way is better, because you don't need to edit source code, but... you are wrong!
    i3 configuration file is write in simple pseudolanguage wrote especially for i3, so:
    1. You are limited to the features that creator predicted,
    2. You are slowed down on startup, because configuration file must be loaded into memory, lexical analysed, syntatic analysed and interpreted,
    3. As the result of the previous point, i3 is more bloated, because the binary must contain the configuration file parser, interpreter, etc.

    On the other side, dwm is superior in this battle. If you are going to configure something in your dwm, you are just going to change especially separated part of source code and just recompile dwm. Why is that superior?
    1. You are not limited to creator's predictions about a language. You are writing in real programming language which is a part of an final, executable binary. You can write your own functions inside and outside this file, all source code is so small (~2k lines of C code),
    2. It will be fast. dwm will be executed instantly by not required loading, parsing and interpreting a source code,
    3. Your binary will be unique, because most of users will have unique config file which is just compiled to binary.
  4. Customization

    If you want to make your i3 look greater, you can edit it's source code... just joking, if you will look into i3 source code (or even worser, i3-gaps source code) and compare this to dwm source code, you will get a heart attack. That's just bloat. Building source code is done with meson and every compilation it just takes ∞ years to even check for dependencies. Just bloated.
    On the other side, dwm compared to i3 is an angel. Simple makefile, ~2k lines of code and many patches on official site makes dwm perfect for extending with new features. Here you just select what you want in your window manager. Remaking is extremely fast. Many dwm's builds (including mine) are so customized, that beginner can think that vanilla dwm is just other window manager.

    dwm on my git server:

    Static webpage: git.kocotian.pl/dwm
    Clone with: git clone git://git.kocotian.pl/dwm.git

  5. Copying configuration

    If you want to install dwm instantly on other computer, you just can copy a binary (which of course is not a good option, but if time is important, you just can) to a /usr/local/bin on target computer. If you want to quickly copy i3, that will be impossible to just copy a binary. You must install i3 because of a lot of dependencies (which for example on Ubuntu is not that simple), copy configuration file, if you are using external scripts (because i3 config is so limited that you must write external programs) you must copy also them, additionally you are probably using another bar, because i3bar is so ugly and unusable, so you must install this another bar and copy a configuration file, just time consuming work.

Who wins?

Domain dwm i3
Performance and memory usage Win Lose
Manual tiling Win Win
Configuration Win Partially win
Customization Win Lose
Copying configuration Win Lose

Final score: 5 points for dwm and to 1.5 points for i3. Winner is dwm!


Generated by stac on Linux weed 5.12.4-artix1-1 #1 SMP PREEMPT Fri, 14 May 2021 15:42:20 +0000 x86_64 GNU/Linux