Spatial Layout of Application Windows

Introduction

When dealing with lots of different, changing contexts, it can help to arrange these contexts spatially, meaning in different locations relative to each other.

An example can be seen here: Screenshot of workspace switcher

In that screenshot, you can see an arrangement of different windows from my browser, text editor and terminal. These are the applications I use the most throughout the day and in all kinds of different contexts.

Splitting those contexts up and putting parts of them into one window for each of those applications, can quickly become overwhelming. Especially when you have to switch between those contexts, as you then have to navigate to the respective context within each of those applications, e.g. by finding the respective tabs.

Setup

This is a high-level description of the concepts used in my setup, along with specific steps for setting this up on KDE Plasma (5.12+ should work, though these specific instructions are written for 5.18+).

You'll be able to reproduce the basics of this workflow on some other desktop environments (e.g. Xfce, Enlightenment), but it won't be as easy or clean. And some of the specifics that I found best to work with, are only possible on KDE as far as I'm aware.

1. Lots of Workspaces

What I do to lay out the windows in fixed locations, is putting each of them onto their own workspace. Sometimes, I will put two or three windows onto one workspace, but only if I actually want to see them all on the screen at the same time.

My different contexts are then clusters of workspaces and to separate them, I leave one or more empty workspaces between them. (One is enough, but a few empty ones is good, if you need to open additional windows.)
I have 20 workspaces open at all times (which is the maximum that KDE Plasma allows). That may sound like a lot and you might not need all of them, but it doesn't hurt to have them available.

How to Set This Up on KDE

Under System Settings ⟩ Workspace Behavior ⟩ Virtual Desktops, click the "Add" button a whole bunch of times.

2. Mini-Map

With so many workspaces, you're not going to remember what's on each of them, especially since we don't want to strictly assign one workspace to always have one specific application on it, as many workflows on tiling window managers do.

So, to help ourselves along, we want a workspace overview in our panel. For that, we'll have to put those workspaces either into one row (horizontal panel) or one column (vertical panel). Personally, I prefer a vertical panel on the left, because it's closest to where your eyes typically are on the screen.

How to Set This Up on KDE

  1. In the same settings window from before, you can increase the number of rows to 20, if you want a vertical panel, or set it to 1, if you want a horizontal panel.
  2. Make sure you have the "Pager" widget on your panel (right-click the panel, click "Add Widget").
  3. Right-click the Pager widget (workspace overview), select "Configure Pager..." and then enable "Show application icons on window outlines".

3. Stop Windows From Hiding

With the mini-map in place, we want to be sure that we can see all windows on it. Which means two things:

  • Don't minimize windows.
  • Don't stack windows on top of each other.

If you can just get used to not doing this, that should work fine, but I do recommend setting up tiling window management for this workflow.

How to Set This Up on KDE

Install Kröhnkite for tiling window management:

  1. Got to System Settings ⟩ Window Management ⟩ KWin Scripts and click the "Get New Scripts..."-button.
  2. Search for "Krohnkite" and click "Install".
  3. Run the following two as commands as mentioned on its GitHub page to enable configuration:
mkdir -p ~/.local/share/kservices5/
ln -s ~/.local/share/kwin/scripts/krohnkite/metadata.desktop ~/.local/share/kservices5/krohnkite.desktop
  1. Close that dialog and click on the settings-button for Kröhnkite's list entry.
  2. I recommend using the "Quarter Layout" and ticking both "Use separate layouts for each [Activity/Desktop]". In the "Options"-tab, you can also enable "Prevent windows from minimizing".

4. Workspace Grouping

When I'm multi-tasking a lot of different contexts, I like to group those contexts into larger topics.
For one, because I will fill up those 20 workspaces (and I don't want to be filling them up, I want to have space between my contexts), so I actually need groups of 20 workspaces each.
But on the other hand, I also find that this just works well for my way of thinking, because there is usually some meta-context, for which I would need a larger context switch anyways. And if there is no such meta-context, I have a "Default" catch-all group.

How to Set This Up on KDE

KDE has a feature called "Activities", which allows for that.

I would also recommend enabling "Current virtual desktop: Remember for each activity" under System Settings ⟩ Workspace Behavior ⟩ Activities ⟩ Switching-Tab.

5. Keyboard Shortcuts

Since it is central to this workflow that you switch between workspaces a lot, I would recommend setting up some keyboard shortcuts for that.

Personally, I use these:

  • Super + W/S: Switch to Previous/Next Workspace
  • Super + Shift + W/S: Move Window to Previous/Next Workspace

It's also worth mentioning here that Alt+Tab won't generally be useful anymore, since you will switch through the desktops in order of their location, so the most recently focused window will generally be exactly one workspace away (or on the same workspace and therefore already visible).

I do switch between Activities in KDE in a most-recently-used fashion (which I have bound to Super + Tab), which I find works fine, because I generally only have a handful different Activities.