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
Name | Key |
---|---|
Move to workspace on the left | Ctrl + Super + ← |
Move to workspace on the right | Ctrl + Super + → |
Move window one workspace to the left | Shift + Super + ← |
Move window one workspace to the right | Shift + Super + → |
Switch windows directly | Alt + Tab |
Lock screen | Super + L |
Close window | Alt + F4 |
Maximize Window | Super + ↓ |
Toggle fullscreen mode | Super + ↑ |
View split on left | Super + ← |
View split on right | Super + → |
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.