1. 22
  1. 6

    I’ve been using bspwm for well over a year now and it works like an absolute dream. I use polybar, rofi, and sxhkd with it and it’s a really well organized and intuitive experience for me. I used i3 for a few years and it was good but had weird bugs due to bloated config and a noob setup, switching to bspwm felt like a natural move. I appreciate how it managed multiple windows better through a Thunderbolt dock for my laptop.

    Tiling window managers are fantastic for productivity and empower greater keyboard usage but as someone who also has to use a mouse a lot of the time anyways, it’s a bit of a waste to move my dominant hand to the keyboard for a bunch of single use shortcuts only to move it back to the mouse again. I’ve used the Logitech G602 (recent upgrade to G604) with it, which has made it the most seamless workflow setup. These mice have 6 side buttons that can be remapped. Using sxhkd with bspwm allows me to use the mouse to go forward a page, backward a page, toggle full-screen focus of a specific window or switch to smaller tiled view, close a window, fluidly drag and resize windows, move windows, pause/play, previous track, next track, zoom in/out, control volume and brightness using the scroll wheel and holding the respective side button modifiers, and left and right arrow keys mapped to scroll wheel tilt for scrolling/video scrubbing/text editing and selection, on top of all regular mouse functions. These many functions are achieved through sxhkd’s modifier key and keeping the modifier on the mouse while getting creative with combinations.

    That might sound like a lot, but it’s a very streamlined system for me with very little thought and movement used to interact with my computer. I tried to do something similar in i3 but couldn’t get nearly as smooth results. Bspwm’s modulatory made understanding and adding onto the system a lot easier for me from the start. With my setup, it’s fundamentally changed how I use my computer, I highly encourage those inclined to give it a shot. The accumulated gains are huge and it’s so nice not wrestling with the system to do what you want.

    1. 1

      My main struggle with the sxhd methods is when you switch workstation/laptop/environment you loose your configuration. For keyboard, you can use QMK [0] and even if your shortcuts may not transpose in the new environment, you keep a sane base. Maybe QMK can be used for this kind of mouse? This struggle really blocked me last years to take a leap in mechanical keyboards and more configurable mouses because I used to have my personal laptop on Linux and my workstation on Windows.

      [0] https://qmk.fm/

      1. 1

        I fully hear you and I think it’s workable! So clearing up how the shortcuts work, the mouse hotkeys actually don’t change across platforms and are mapped to either single key presses or combo macro presses, depending on the key. The same command/action will occur if I use the keyboard for the keystrokes entered vs the mouse. What’s stored on the onboard memory are standard key presses that work with any OS, but sxhkd takes those keypresses and uses them as hotkeys to run a command. Bspwm’s window management through cli provides access to commands that are run when the appropriate buttons are pressed, likewise other Linux utilities like pulseaudio, etc are used for commands in the config. The bspwm and sxhkd setups are dotfiles that can be ported to any Linux machine also running bspwm and sxhkd and the settings will transfer over properly, assuming all other dependencies are installed for your config.

        I actually configured the mouse in Windows using the Logitech G Hub software, libratbag and piper exist for mouse config on Linux but the G Hub software has way more settings. I only use windows for the rare gaming session so I personally don’t care about not having those shortcuts on it, though it can totally be frustrating to use the shortcuts by muscle memory and not have them work. You can still use a tool like AutoHotkey to make the shortcuts work on Windows. What you can do will be far more limited than with bspwm, but I’ve found that using x-mouse-controls on Windows along with custom hotkeys allows me essentially the same effect, if a bit clunkier and with a few missing options. That’s just a limitation of using Windows though.

        I’m not quite sure if QMK would solve this problem as well but if you want to give a configurable mouse another look, it’s definitely doable to have the shortcuts working correctly across platforms using the same mouse inputs :)

      2. 1

        *multiple monitors through a Thunderbolt dock, not windows.

        *Modularity, not modulatory


      3. 4

        I used bspwm for over a year, but ultimately switched to herbstluftwm a few months ago, after being frustrated with bspwm’s behavior of losing windows or entirely crashing when I docked or undocked my laptop.

        Tags work a little bit differently, and a keybinding feature is built in, but I adapted in an afternoon.

        1. 2

          Sharing my comment from the similarly timed HN thread:

          I’ve been a BSPWM user for about 5 years now. It’s very comfy. The client is close to the shell, and you can have both automatic and manual tiling modes. When there is some feature you like that the author did not account for, you can query the state of the world in json and make decisions based on that.

          A comment here mentions herbstluftwm, which came before BSPWM and I would even call a sister WM – Baskerville even announced BSPWM on the Herbstluftwm mailing list when it was initially released[2]. I would say BSPWM has less to think about than in the other window manager (everything is a node vs climbing frames with nested layouts). It can be thought of as a kit for building what you want, even. For instance, I use a tag-based workflow[3], where I toggle the hidden flag of nodes, and keep only one desktop.

          WRT the windows being kept as nodes in a binary tree, this is useful because you can then climb the tree and perform balances and rotations within a subselection of the whole thing. You can also use the tree datastructure to enforce layout, like here[1], a DWM-like stacking layout.

          With monocle mode, you can add fake padding for fullscreen windows, allowing you to have comfy fullscreen stuff that still accounts for a panel presence. With an external rules script, you can make decisions about what to do with windows as they appear, allowing dynamic layouts and decision making.

          I’m sure at the end of the day, you can get what you need with any window manager if you drill far enough (year of the linux desktop is here, if you are willing to read the source). BSPWM has been a nice base for flexible workflow types for me. I will also share screenshots I’ve taken over the years here: https://notes.neeasade.net/rice.html (all bspwm past mid 2014).

          [1] https://old.reddit.com/r/bspwm/comments/euq5r7/a_dwmlike_stack_layout_script_for_bspwm/

          [2] https://herbstluftwm.org/archive/msg00052.html

          [3] https://github.com/neeasade/dotfiles/blob/master/bin/bin/btags

          1. 1

            Used bspwm for a year or so, but went back to Awesome WM, which I think is more mature and works better for some corner cases.