+++ title = "Fvwm - part I" author = ["MichaƂ Sapka"] date = 2024-09-02T22:31:00+02:00 categories = ["blog"] draft = false weight = 2002 image_dir = "blog/images" image_max_width = 600 abstract = "Descend into madness" +++ Ever since I moved back to Linux (and then FreeBSD) I've rocking near stock DWM. Well, for quite some time I've been eyeing this other gorgeous windows manager - Fvwm. Today, I stumbled upon [Carl Svensson's config](https://www.datagubbe.se/fvwm/)[^fn:1] and decided to finally pull the plug. I have a very short experience with Fvwm3, as it comes as the default Xorg WM on [OpenBSD.](https://man.openbsd.org/fvwm) But I'm on FreeBSD, so I had to install the package: ```shell pkg install fvwm3 ``` And 3 megs later I was rocking a spanking new wm. At first, it was confusing as I've been told that there should be some panel on the right, but there was none. {{< image class="centered" alt="Screenshot of Fvwm with panel in the middle." file="fvwm-240902-1.png" >}} What the hell? All screenshots made with Gimp. {{< /image >}} If you look at my [setup](https://michal.sapka.me/blog/uses/), you will notice that I have a laptop in permanently closed state. The docked laptop is the right screen, I just never see it. It was time to say goodbye to it and my `.xinit.rc` now has a ```shell ... xrandr --output DP-2 --off & \ ... ``` Which resolved the issue! {{< image class="centered" alt="Screenshot of Fvwm with panel on the right." file="fvwm-240902-2.png" >}} A very usable desktop. {{< /image >}} Time to explore! Fvwm may be old, but it rocks features I've never seen anywhere else. In this way, it is a bit like Emacs - it plays in a league of its own. {{< image class="pull-left" alt="A 2x2 grid" file="fvwm-desktops.png" >}} Desks and pages {{< /image >}} We are pretty used to having multiple virtual desktops, even Windows has them. Those are called `desks` here - a separate workspace. But each desk is separated into multiple `pages` you can move to by moving the pointer to the edge of screen. Kind of like RTS game, where you scroll the map the same way. Therefore, the virtual desktop is larger than the physical screen. The size here is 2x2. You can, of course, move windows between pages by dragging them. This will be difficult to adjust. First, by default there is no keyboard control. Second, when scrolling, the mouse pointer maintains its virtual position - so, you move the screen down to move below and the cursor moves to the top of the screen. Thirdly, a scroll is not always the same size - sometimes I move a full page down, sometimes I am in-between two. I have no idea how to use this feature. It is as cool as confusing. Mouse centrism doesn't end here. Click on wallpaper with any mouse button to see a dedicated menu. {{< image class="pull-left" alt="A 2x2 grid" file="fvwm-winops.png" >}} Windows operations {{< /image >}} Even though you can resize, move, and so on every window by interacting with it, it's also available from this menu. You first select what you want to achieve, then click the window and perform the action. Fvwm is a child of TWM, which is the default WM for Xorg and this how it was done it there. Note, the "(un)" prefix - those work as switches, not flags. Iconified is just like "hiding" windows in other WM. Shading hides the window, living only title bar. Sticky windows will be present on all pages. You can also move the window to given desktop/page, and define Y position relative to other windows. {{< image class="pull-right" alt="A 2x2 grid" file="fvwm-fvwm.png" >}} The Fvwm menu {{< /image >}} The second menu is more of what I would expect. You can run programs (list is loaded dynamically), open XTerm. In my case "Run Command" opened dmenu, which was a huge surprise. Then you've got the "Fvwm prompt" with is a command line way to interact with the window manager. You can change the wallpaper, open Fvwm related man pages and copy your config to clipboard. For now, I have no config, so this will come later. The last three options allow you to refresh (redraw all windows), restart Fvwm without killing running programs and quit Fvwm completely. {{< image class="centered" alt="A 2x2 grid" file="fvwm-appswitcher.png" >}} Application switcher {{< /image >}} Maybe the one straight-forward one: app switcher. Switching app will move you to page on desk with given application, and activate it So, this is out-of-the-box experience with Fvwm. It's different from anything I've used recently. From what I've been told, anything here can be adjusted, so I'll start working on my config file soon. As for now, I have to get used to paging as it's the one thing which I have no idea how to use. [^fn:1]: Datagubbe is one of the sites which inspired me to start my own. It's outstanding!