Quality of life settings for a lazy user

Or you can call it "an improved workflow". The thing is, many operations we do during the time spent on the computer can be optimized a little bit, sped up and they're not even difficult to set up or remember. Here I bring a few settings I've been using over the years on my laptop.

I know about tiling window managers, that are keyboard oriented, but here I will describe your typical mouse-oriented WMs/DEs.

I've been using these settings mainly on Cinnamon, earlier also on xfce. But they should work with any WM/DE on X11. I'm new to GNOME on Wayland, so I'll work out how to apply these later in the future.

Switching windows to a concrete application

Instead of using Alt+Tab and/or switching workspaces and remembering where everything is, or — god forbid — using mouse to navigate between windows, you can jump directly to the application you need using wmctrl.

So, for example, if I want a shortcut to switch to Firefox, I'd setup super+f to execute wmctrl -xa firefox. This works only on X11 window system though.

Another thing I've been using is, a script I call ros (run or switch). Here's the Gist. This script checks, whether the process is already running. If it does, the it switches to the application, if not, it starts the application. Pretty simple, yet it can save some time.

For Wayland, there's a script called gnome-magic-window that does the same thing. The usage is simple:

gnome-magic-window "Window name" "command-to-run-if-no-window-is-open"

fish shortcuts

Fish is a friendly interactive shell. After installing, you can make it default by using chsh -s `which fish`.

Fish already comes with a lot of QoL improvements. One particular caught my interest and that's when you press alt+l, it lists the files inside the current folder (or any folder that's currently written on your line).

It so happens, that you can configure shortcuts like these yourself. In your ~/.config/fish/config.fish you can add this:

function fish_user_key_bindings
    bind \es 'echo ""; git status; commandline -f repaint;'

This will enabled you to press alt+s and run git status.

Full documentation on custom bindings can be found here.

fish completions

Another QoL for you might be custom completions. Many are already built into fish, but the best example for custom ones I can think of are when you're at your job and you have some internal tools, with some/many arguments that you can't remember even after a year of working there. So you can either make tons of aliases for these commands or make your own completions.

The documentation can be found here.

All completions are stored in ~/.config/fish/completions.