## Linux [[i3]] and [[bspwm]]. Problem solved. ## Mac ### Amethyst [[Amethyst]] is pretty nice. It is on [[Homebrew]]. Amethyst is based on [[xmonad]]. ```sh brew install --cask amethyst ``` Promising fact: > Ancient Greeks wore amethyst and carved drinking vessels from it in the belief that it would prevent intoxication. ### Yabai [[Yabai]] (and [[skhd]]) seems more nerdy. Perhaps more powerful. Seems to be inspired by [[bspwm]] and [[sxhkd]]. ```sh brew install --cask yabai ``` Need to make some changes to [[System Integrity Protection]] to access some adanced features pertaining to Mission Control and better animations. [This video about Yabai](https://www.youtube.com/watch?v=JL1lz77YbUE) is decent. On 10.14+ [[System Integrity Protection]] only needs `fs` and `debug` disabled. I.e. running `csrutil enable --without fs --without debug` is all that is needed. ### Rectangle Window mover and resizer with keyboard shortcuts. [Rectangle](https://rectangleapp.com/) is open source. It's based on Spectacle. Many people recommend it. ```sh brew install --cask rectangle ``` Seems decent for what it is, but it does not manage the window stack like [[Amethyst]] does. [[Spotify]] does not adhere to some of the sizes. On a bigger monitor, it will probably work. Rectangle is a window mover, not manager. ### Magnet [Magnet](https://apps.apple.com/us/app/magnet/id441258766) is paid and on the App Store. Rectangle is probably the better option. ### Swish Window mover and resizer, but with mouse gestures instead of keyboard shortcuts. [Swish for macOS](https://highlyopinionated.co/swish/) is based on mouse gestures. _Promising_. Paid. > Control windows and applications right from your trackpad with intuitive **swipe**, **pinch**, **tap** and **hold** gestures. Would need a Magic Trackpad. ### Other [BetterSnapTool on the Mac App Store](https://apps.apple.com/us/app/bettersnaptool/id417375580?mt=12) is another one. Uninspiring name. [Tiles](https://www.sempliva.com/tiles) too. Talks about dragging. I don't want to _drag_ stuff. [[Hammerspoon]] is productivity software worth checking out. > Hammerspoon is an interface between a Lua scripting engine and various MacOS APIs. Read [Introducing Hammerspoon — Personal Productivity](https://medium.com/@jhkuperus/introducing-hammerspoon-personal-productivity-d32c0c825caf). [Magical One-Handed App-Switcher — Personal Productivity](https://medium.com/@jhkuperus/magical-one-handed-app-switcher-personal-productivity-a959c2e9842a) for `jumpapp`. Read [Solve Shortcut Hell in MacOS — Building a Hyper Key](https://medium.com/macoclock/solve-shortcut-hell-in-macos-building-a-hyper-key-1cb8838bf521). Relies on [Karabiner-Elements](https://karabiner-elements.pqrs.org/). Launchpad is the built in [[Application launcher]] of [[MacOS]]. [[Emacs]] ([[Doom Emacs]]) with `:completion vertico` is probably the best option. Still would like to have a scratchpad terminal. [[MacOS]] Spaces might be sufficient. [[iTerm]] says: > iTerm2 offers a special terminal window that is always available with a single keystroke. This window is called the "hotkey window" and is most commonly used for occasional administrative tasks. To enable this feature, go to Preferences > Keys. Enable "Show/Hide iTerm2 with a system-wide hotkey". Click in the field and enter the key combination you'd like to use. Then check "hotkey toggles a dedicated window with profile:". A new profile will be created that is optimized for the feature. Pressing the hotkey will drop a terminal window down from the top of the screen, and pressing it again (or clicking in any other window) causes it to disappear. This thing is very Quake-like. It does not work inside fullscreen spaces. [[i3]] with [[tmux]] is better. ## Windows [Microsoft PowerToys](https://github.com/microsoft/PowerToys). [PowerToys FancyZones utility for Windows](https://docs.microsoft.com/en-gb/windows/powertoys/fancyzones): > FancyZones allows the user to define a set of window locations for a desktop that are drag targets for windows. When the user drags a window into a zone, the window is resized and repositioned to fill that zone. Why would you want to drag with the mouse? This tool is not designed for [[Ergonomics]]. It is a window mover and resizer.