| I use bspwm, which is similar to i3. I mostly put 1-3 windows per workspace, and generally use one workspace per task. My "main" browser window is always workspace 1. My todo lists are always workspace 2. I then have one workspace set up to default to floating windows for apps that tends to go crazy with them, like e.g. gimp. The other workspaces are usually split into 2 or 3 windows, usually two columns with one window taking a whole column by itself and the other column split in two "half-height". E.g. if I'm working on a web app, the browser will typically take up the biggest window. But I also have keybindings set up to let me easily move the active window left/right/up/down (it will swap places with the displaced window). I tend to move windows into a bigger space more often than I resize them. Getting windows in the same space is easy for the most part - windows open on the space I have active, but I have keybindings set up to move the active window to a specific workspace, and you can also define rules for bspwm that sets up predefined slots for windows that "swallow" windows that match certain criteria, if there are certain apps you always want on certain workspace for example. Switching windows to floating if the wm doesn't get it right is also just a keypress away. bspwm can be fully controlled with a command line tool, so I also have scripts that will read a JSON file specifying a layout and recreate it and start the appropriate shells, browsers etc. I use the same plus an alias to change the name of the workspace based on the "nearest" project file working up from the last change of working directory on a given workspace. It's not perfect, but it means that e.g. if I "cd" into a project, the workspace name changes to reflect the project name, which does tend to make it easier to keep track of what I've put on which workspace. |