baskerville / bspwm

A tiling window manager based on binary space partitioning
BSD 2-Clause "Simplified" License
7.79k stars 414 forks source link

What is the difference between bspwm and i3wm? #1142

Closed Joe23232 closed 4 years ago

Joe23232 commented 4 years ago

What is the difference between bspwm and i3wm as I am looking for the right tiling Window Manager?

I also believe that bspwm does support sockets so I can use any programming language to modify its behaviour. If I feel the need to use a programming language to customise it even further, am I able to for example the border gap using the programming language in a high level manner?

Lythenas commented 4 years ago

IMO the main difference between i3wm and bspwm is how you control/configure them. Also as far as I understand i3 also has a hotkey daemon. Were as bspwm does not (I'm using sxhkd for that).

In bspwm you can change everything (al least everything that can be changed) on the fly with the bspc command (the syntax takes some getting used to). That includes border gaps and moving windows etc. As long as your programming language can execute normal console commands you can control bspwm. As far as I understand the socket is only used to print events (e.g. when creating a new window).

You can also use any executable as external rules. This script is then called every time a new window is created and you can output e.g. if it should be floating. I just have a shell script for external rules but you could use any language for that.

Joe23232 commented 4 years ago

@Lythenas THanks for that mate :)

shoober420 commented 4 years ago

bspwm has less bloat. No menu of any sort stands out as a main advantage. Sadly, this project hasn’t been active recently, and it fails to build with gcc10. There are even pull requests made to patch it for gcc10, but the author won’t merge them.

If you decide to go with bspwm, you should check out spectrwm. I’ve since moved on to using spectrwm and I like it very much. i3 has way too bloat IMO.

Joe23232 commented 4 years ago

spectrwm comes with bloat though, for example it comes with a taskbar though? And also with spectrwm am I able to script it using any language that I like?

shoober420 commented 4 years ago

spectrwm has substantially less bloat than i3. You can disable the menu / taskbar by tweaking these settings the spectrwm config file.

# To disable validation of the above, free the respective binding(s):
bind[]      = MOD+Shift+Delete  # disable lock
# bind[]        = MOD+Shift+Return  # disable term
bind[]      = MOD+p         # disable menu

Once doing that, it’s identical in terms of minimalism as bspwm is. I’m not sure about your language options, but I’m sure you can configure it to your liking someway or another.

Joe23232 commented 4 years ago

@shoober420 with spectrwm would you happen to know by any chance if I can add this blue line at the top of the window?

Full window (options)

shoober420 commented 4 years ago

It seems possible, but it’s hacky. https://www.google.com/amp/s/amp.reddit.com/r/unixporn/comments/2rmoiw/titlebars_in_bspwm_or_any_titlebarless_wm_is_it/

Keep it mind, bspwm and spectrwm are minimalist window managers. They are designed for users who DON’T want window decorations, in favor for more screen space. For example, I don’t need window decorations to close windows, I have keyboard binds for that. I do use a 1 pixel border for windows to help organize my terminals though.

If you find yourself wanting titlebars and window decorations, bspwm and spectrwm are not the best choice, and are geared toward true minimalism in favor of screen space.