== Making more use of keyboard control over window position and size For a long time, I've done things like move and resize windows in [[my highly customized X environment MyDesktopTour]] through the mouse. Using the mouse for this is the historical default in X window managers and X window manager setups, and I have [[a whole set of fvwm mouse bindings MyFvwmButtonBindings]] to make this fast and convenient. I may have used keyboard bindings for things like [[raising and lowering windows XcapeFvwmKeybindingHack]] and [[locking the screen ScreenlockHabit]], but not beyond that. (I was familiar with the idea, since keyboard-driven tiling windows are very much a thing in X circles. But I happen to like the mouse.) Then I got [[a work laptop ../linux/DellXPS13FedoraReview]] with a screen that was big enough to actually need window management and discovered that my mouse-driven window manipulation didn't really work well due to [[a touchpad not being a good mouse ../tech/TouchpadNotAMouse]]. This led to me exploring Cinnamon's keyboard bindings for re-positioning and re-sizing windows (once I discovered that they exist), and progressively using them more and more rather than shuffle windows around by hand on the touchpad. (Unfortunately there doesn't seem to be a good list of Cinnamon's standard keybindings, or even anything obvious to tell you that they exist. I'm not sure how I stumbled over them.) These keybindings have turned out to be quite pleasant to use and make for a surprisingly fluid experience. Cinnamon's basic positioning keybindings let you tile windows to the halves and quarters of the screen, which works out about right on my laptop, and of course it supports maximize. Recently I've also been using a keybinding for flipping to a new virtual desktop ('workspace' in Cinnamon terminology) and taking the current window with you, which is helpful for de-cluttering a screen that's getting too overgrown. My laptop experience has pushed me into adding a certain number of similar keyboard bindings to my desktop [[fvwm http://www.fvwm.org/]] setup. Most of these are pure positioning bindings that do things like move a window to the bottom left or bottom right corner of the screen, because this turns out to be an operation I want to do a fair bit on my desktop (partly so I can just randomly place a new window then snap it into position). I also created a keybinding that resets terminals and browser windows to my preferred size for them (along with a 'maximize window' keybinding), which has turned out to be very handy. Now that it's trivial to reset a window to the right size, I'm much more likely to temporarily resize windows to whatever is convenient for right now. (A maximized Firefox on either my work or my home display is a little bit ridiculous, but sometimes I just want to hit things with a giant hammer and there are cases where it really is what I want.) Clearly one of the things that's going on here is the usual issue of reducing friction, much as with [[creating keyboard controls for sound volume ../linux/LinuxVolumeKeys]] and [[other cases ToolsClear]]. Having specific, easily accessible controls for various sorts of operations makes it more likely that I will actually bother to do them, and when they're useful operations that's a good thing. (It's not sufficient to have accessible controls, as I'm not using all of the [[fvwm]] keyboard bindings for this that I added. Some superficially attractive positioning and resizing operations turn out to be too infrequent for me to bother to remember and use the keybindings.)