My workflow - tiles, windows, and shortcuts with Gnome

The Goal#

Doing something to the Gnome desktop environment that makes managing and navigating between windows simpler and faster.

The Constraints#

Monitors#

Issues with my neck prevent me from using a multi-monitor setup. Keeping my head turned sideways as I work is very uncomfortable.

If you use multiple monitors modify this setup to your liking.
Improvise. Adapt. Overcome.

Linux Distribution#

Ubuntu has been one of my defaults even before I started programming. Here are the reasons why I stick with Ubu:

Updates don’t break the system
You don’t want to be rescuing a broken system just because you ran an update at lunch when you have to deliver a feature by 5 PM.

Packages just work
Sometimes you just need to install some software for work and it’s convenient to be able to install snap packages without any problems.

I get paid to deliver software not to maintain a fancy workstation.
Boring is good.

Simplicity#

I shouldn’t have to install a whole bunch of external packages to get this working. Hyper-customization is not the goal.

The Setup#

What doesn’t work#

  • Using the Super key to show all windows and then finding the one you want to work with when you have 8 of them open is sub-optimal.
  • Using Alt+Tab is also sub-optimal because the windows change positions in the queue.
  • Hitting a corner with your mouse to show all windows is also sub-optimal.
  • Anything that involves the mouse is sub-optimal. It requires more brain cycles than pulling off a shortcut.

Use vertical workspaces#

  • You should always know where a window is and what’s the fastest way to get to it.
  • Workspaces are the single most under-utilized feature of any desktop environment. They should probably be taught about in school. You’re missing out big time if you’re not using workspaces on Gnome.
  • Windows should have a designated workspace. Whenever opened, they should be moved to their designated workspace.
  • For example, I always open:
    terminals on workspace 1
    a browser and a text editor on workspace 2
    a graphical git client on workspace 3

Tile your windows#

  • Floating windows are an absolute waste of resources.
  • The only useful states for a window are tiled, maximized, and full-screened.
  • Gnome supports a very simple two-column tile layout out of the box that’s enough for 90% of people.
  • I use the split-screen feature inside my text editors extensively. Therefore it makes sense to give the whole (or half) of the screen to the app and use split layouts inside the app itself.

No more than two windows per workspace#

  • One window per workspace is very good. Two is the absolute limit.
  • Two windows on a workspace can be put side by side.
  • Two windows on a workspace can also be maximized or full-screened. A shortcut like Alt + Tab can be used for switching between them.
  • If you have more than two windows on a workspace, you can never be sure which window a shortcut like Alt + Tab will bring forward unless you maintain a variable that holds that state in your head.

Keybindings#

NameKeyComment
Move to workspace aboveSuper + Page UpFn + ↑ = Page Up
Move to workspace belowSuper + Page DownFn + ↓ = Page Down
Move window one workspace downShift + Super + Page DownWithout Shift = move workspace
Move window one workspace upShift + Super + Page UpWith Shift = move window
Switch windows directlyAlt + TabSee below
Lock screenSuper + L
Close windowAlt + F4
Maximize WindowSuper + ↑
Toggle fullscreen modeMenuSee below
View split on leftSuper + ←
View split on rightSuper + →

Set your keybindings by going to Settings > Keyboard Shortcuts.
All other shortcuts are disabled except for the screenshots section which is left to defaults.
Movement of windows and workspaces is done by a combination of Super and arrow keys.
Alt + Tab is bound to “Switch windows” by default which is slower than “Switch windows directly”.
For opening an application, press the Super key and type the name.

Put the Caps Lock to use#

I write upper case characters by holding down on the Shift key. The Caps Lock just freeloads on my keyboard without providing anything. I have rewired the Caps Lock as a Menu key which is used for toggling fullscreen mode.

# Install
$ sudo apt install gnome-tweaks

# Then
Tweaks
  > Keyboard & Mouse
    > Additional Layout Options
      > Caps Lock behavior
        > Make Caps Lock an additional Menu key

More random thoughts on the matter#

Removing the desktop environment#

I do not let the desktop environment define my computing experience. The desktop env. provides useful widgets like WiFi and Bluetooth controls and that’s usually the limit of its utility. Launcher icons, animations, and all else may look cool when I’m relaxing, but while I’m working they just get in the way and slow me down.

On sticking with this setup#

This setup is easy to learn and does not stray too far from the defaults. Not all developers are power users, some just want things to work and this is the fastest way to navigate between windows in Gnome.
Try this setup if you happen to have a machine with Gnome running. Or, use these ideas to customize your own desktop env. experience.