Ramit Mittal

Getting the most out of Gnome with tiles, windows, and shortcuts

The Goal

I wanted to do make managing and navigating between windows simpler and faster in the Gnome desktop environment.

The Constraints

Monitors

Issues with my neck prevent me from using a multi-monitor setup. Turning my head sideways, even for short periods, 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
I don’t want to be rescuing a broken system just because I ran an update at lunch when I have to deliver a feature by 5 PM.

Packages just work
Ubu has excellent support for snap packages. Snaps are a huge help whenever I need to install some proprietary software for work.

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

Simplicity

I want to make this work with the least amount of customizations and external packages possible.

The Setup

Suboptimal defaults that waste time and brain cycles

  • Using the Super key to show all windows and then finding the one I want to work with when I 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 the 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.

Hack#1 Workspaces

  • I 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.
  • Every application window should have a designated workspace. Always keep application windows in 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

Hack#2 Tiling

  • I find floating windows to be 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.

Hack#3 Two or less 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 I have more than two windows on a workspace, I can never be sure which window a shortcut like Alt + Tab will bring forward.

Keybindings for #1 #2 #3

NameKey
Move to workspace on the leftCtrl + Super + ←
Move to workspace on the rightCtrl + Super + →
Move window one workspace to the leftShift + Super + ←
Move window one workspace to the rightShift + Super + →
Switch windows directlyAlt + Tab
Lock screenSuper + L
Close windowAlt + F4
Maximize WindowSuper + ↓
Toggle fullscreen modeSuper + ↑
View split on leftSuper + ←
View split on rightSuper + →

Keybindings can be modified by going to Settings > Keyboard Shortcuts.
All other shortcuts are disabled except for the screenshots section which is left to defaults.
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.

Movement of windows and workspaces is done by a combination of Super and arrow keys.

  • Super + ↑ ↓ ← → moves windows within the current workspace.
  • Shift + Super + ↑ ↓ ← → move workspaces.
  • Shift + Super + ↑ ↓ ← → (numpad arrow keys) moves windows across workspaces.

(Optional) Hack#4 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 any value. I have rewired the Caps Lock as a Menu key can be used to create more keybindings.

# Install
$ sudo apt install gnome-tweaks

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

More 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 for a while, but when I’m working they just get in the way and slow me down.

On sticking with this setup

The goal is to optimize navigation, not to showcase the features of a particular desktop env.

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. You can also use these ideas to customize your own desktop env.