Window managers are programs that allow a user to interface with their computer. I currently use the Sway window manager for the benefits that Wayland provides, but I've used EXWM, [Bspwm](../tools/bspwm.org), i3 and herbstluftwm in the past - as well as whatever GNOME system that Ubuntu had installed on 18. [Sahand Nayebaziz on Twitter — Are.na](https://www.are.na/block/18752836): Very cool keyboard-only manipulation of a design tool. The whole operating system should offer this level of easy, customizability and control over the work. I'm not a huge fan of the overuse of the command palette though… # Utilities - [HideIt: shows a window by its name when a cursor is a defined region on the screen](https://github.com/tadly/hideIt.sh) - [DispUtils: provides utilities for getting information about displays](https://github.com/tudurom/disputils) - [wmutils: tools for X window manipulation](https://github.com/wmutils/core). These can be used to script your own window manager! - [autorandr](https://github.com/wertarbyte/autorandr) automatically detects the current display and loads the appropriate X window setup. - is a script to open a tool created by a terminal on top of the terminal rather than allowing the terminal to waste space. This is a cool idea and makes the system feel smoother - but it might be more interesting to see the output in some way while viewing the result of the command in an ergonomic, notebook-like way! Some terminals with web rendering capabilities are working on these visualizations, but they've been done since smalltalk, really. # Cool ideas I want to be able to have a computing environment that's both local-first and accessible from anywhere. I don't always have an internet connection, so I want my information readily available, but on occasion I only have access to an arbitrary device - where the only guarantee I have is that the device has a web browser. My system should work within these constraints! - [share your terminal as a web application](https://github.com/yudai/gotty) # Cool WM projects - [WindowChef: a stacking window manager](https://github.com/tudurom/windowchef) - [Sara WM: the best features of DWM and BSPWM](https://github.com/gitluin/sara) - [2BWM: A fast, floating WM with two borders](https://github.com/venam/2bwm) - [goowmwm: get out of my way! simple and effective window manager](https://github.com/seanpringle/goomwwm). - [bug.n](https://github.com/fuhsjr00/bug.n) is a tiling window manager for Windows written in AutoHotkey. - fun tiling wm - [StumpWM](https://stumpwm.github.io/) is interesting insofar as its behavior is runtime modifiable using Common Lisp. I'm not sure how far this goes or to what degree people want to be able to modify their window manager - it's not something that strikes me as particularly flexible, but it might be nice to have such a system to work with during development of a WM. # WM Reviews ## BSPWM - ideas : changing the classname by identification in the bspwm tree! - ' sticky' scratchpad : will switch monitors only if the desktop is swapped with the other monitor. personal policy - 'scratchbad when opened occupies the biggest window' - sticky normal terminal window (with tmux, via byobu) to the scratchpad is much more useful and allows for a single terminal window to be kept open rather than having to use many read on this! - idea : have window actions focus and place the window on the main window of the target desktop. a swap monitor action is very cool; may want to either retain or swap monitor focus independent of this! depending on the direction of the hotkey relative to the monitor which has focus.if key action points to opposite monitor, swap the desktop moving the focus with the desktop; else, retain focus on the current monitor while cycling the desktop toggling the dock! this is much more distraction free (through conky) as opposed to a continuously updating status line at the top or bottom of the screen. conky is super beautiful and configuring it would besuper useful. run conky above the desktop windows via xdotool as per sdothum's articles this seems like the most useful and powerful way to go in terms of a system configuration. make sure to use this one in the future. ## herbstluftwm things it can do: (see sdothum here: ) - dynamic window placement to balance frames - dynamic window focus to avoid empty frame focus on application close - distraction free monocle layout proportions (versus fullscreen mode) - automatic desktop layout restore on focus and monitor swap\* - quick monitor and frame swapping with focus directions - hide/unhide windows per desktop - pulsating borders to indicate overlapped windows - virtual monitors to show/hide the conky system information panel - single status bar to follow monitor focus and hint monitor geometry width - blur background if a window is present on the desktop note that monitor geometries are global when set. honestly his explanation is pretty complicated: there are a lot of things that can be done without this complex configuration. can have a status bar that follows the monitor focus! killing the status bar isn't super effective, but using xdotool to manage the visibility of the panels seems muh more palatable check out his dotfiles for more information on this: ## XMonad cool because it is written in and configured with haskell. this is another manual tiling window manager; you have to manually align and manage tiles. idea : rather than manually moving the window in between panels, shifting all of the workspaces 'one to the right' or 'one to the left' to refocus the panel u want at the center seems super valuable! this means that u dont have to reconfigure all of the stuff displayed at any given time) not sure if this is worthwhile as opposed to other things : bspwm doesn't do anything other than window management, unlike other programs that may not integrate very well into the existing shell. benefits: - extensive multimonitor support - stable and feature rich - easy to configure and extend drawbacks: - huge - fractured into many different libraries - terrible floating layer that cannot always be avoided - using haskell (though this is also a pro?) The rEFInd boot menu and it's super slow as it has to load of the images from BIOS - not a good experience. It's fine to show logs as your computer starts up. ## things to integrate - whatever side manager that sdothum uses in lieu of the header interface - a terminal email client - better notification daemon - unifying chat app? (slack/signal/discord/irc(????) frontend somehow) - twitter ? (may not want to browse twitter at all …) stream video over terminal or smth