Keyboard shortcuts

I use a fairly eclectic range of hardware and software, and keyboard shortcuts are required to get it to all work together. This list is mainly for me, but I’ve split it up by device/application in case it is of any use to other people with similar setups.

Epomaker SK61 keyboard shortcuts

I use a 61-key keyboard on my main computer. It doesn’t have some of the keys that I use occasionally, and whilst it’s perfect for writing there are a few keyboard shortcuts required to make some things I do a little bit easier. The main ones that I use are:

  • Up arrow – Fn + /
  • Down arrow – Fn + menu
  • Left arrow – Fn + Alt
  • Right arrow – Fn + Ctrl
  • Delete – Fn + M
  • Volume up –Fn + H
  • Volume down –Fn + G
  • Switch to layer 2 – Fn + W

There isn’t really much else I use that this keyboard doesn’t give me naturally, and the form factor and the way it handles more than make up for the lack of keys.

Motospeed CK61 keyboard shortcuts

My other keyboard is a Motospeed CK61, which seems to have increased dramatically in price since I got mine. The layout is the same as the SK61 (which is why I like it), but instead of layers it has shortcuts that translate specific parts of the keyboard to alternate keys, which I find quite useful sometimes. Shortcuts I use are:

  • Factory reset – Fn + Escape
  • Map /, alt, menu and ctrl to arrow keys – Fn + 3
  • Control brightness of backlight – Fn + U/I
  • Cycle through different lighting patterns – Fn + menu

i3 shortcuts

I’ve used i3 as my window manager for over a year now, and I find it fits my workflow perfectly. The main i3 shortcuts I find myself using are:

  • Open a terminal window – $mod + Enter
  • Open a different application – $mod + d then type the application name (eg firefox)
  • Open (or go to) a second desktop – $mod + 2
  • Send the focused application to that desktop – $mod + Shift + 2
  • Split a container vertically – $mod + v
  • Split a container horizontally – $mod + h
  • Move between containers – $mod + arrow keys
  • Switch to a tabbed layout – $mod + w
  • Switch to a stacked layout – $mod + s
  • Close a window – $mod + Shift + q
  • Exit i3 – $mod + Shift + e

I do have a few other custom shortcuts defined, which are detailed in my i3 config file.

Atom shortcuts

I use the Atom text editor for a lot of my workflow. My main shortcuts are:

  • Multi line editing – ctrl + alt (or shift on Linux) + arrow keys
  • Toggle markdown preview – ctrl + shift + m
  • Create a PDF of the current file – alt + ctrl + e
  • Open a terminal ctrl + alt + shift + i
  • Show a hidden menu bar – alt

Kitty shortcuts

I use Kitty as my terminal emulator on any computer that it works with, although I don’t really use too much advanced functionality. The main shortcuts I use in Kitty are:

  • New terminal within an existing session – ctrl + shift + enter
  • Toggle through windows – ctrl + shift + ]

There are lots more of these on the Kitty website

Qutebrowser shortcuts

I’ve just started experimenting with Qutebrowser. It’s very fast, but has a steep learning curve. The main shortcuts that I’ve found myself using so far are:

  • Open a URL in the current tab – o
  • Open a URL in a new tab – shift + o
  • Toggle through open tabs – shift + k and shift + J
  • Close the current tab – d
  • Back – shift + H

A lot of standard shortcuts (ctrl + t for a new tab, Fn + 5 to refresh) also work as expected.

Zathura shortcuts

Zathura is a lightweight PDF viewer, and something else I’ve been incorporating into my workflow over the last few months. I only ever really use it for reading PDFs, so just use the arrow key shortcuts detailed above, plus s to make what I’m reading fit the width on the window/container I’m reading it in. Zathura has a lot of other functionality which I really do need to explore at some point soon, at which point I’ll come back and update this guide with anything interesting I uncover.

My Setup – April 2021

My Setup

I’ve been maintaining an up to date list of what hardware and software I use since I discovered Uses This a few years ago. It used to live as a page in my blog, but I like to maintain an up to date version so I can keep track of exactly what I’m using and how it changes over time. Every couple of years I post a snapshot as a blog post to track the passage of time. This is one of those snapshots.

The hardware I use

Home – I’ve just bought a new desktop computer that mostly consists of components that are fairly new (this is a first for me). Everything feels snappy and fast, and I love it. I also have three monitors (now identical in both size and resolution which pleases me), a mechanical keyboard, a hand-me-down gaming mouse, and all the docks, cables and switches to connect everything together. My personal laptops are both Thinkpads – an x260 for travel and couch-surfing, and an x230 which largely gets used for digitising vinyl and testing software I plan on using on one of my main computers. I also have a variety of Raspberry Pis that fulfil various server and media functions, and a Synology NAS for backups. I’m trying to phase out a lot of my older computers and only use newer machines with SSDs and lots of memory, but it’s hard to let go sometimes.

Work from home – As home, but with a Thinkpad L13 doing the driving. All it requires is a couple of cable switches and toggling the input on two of my monitors. I’d love to do this without crawling under my desk, but that’s a problem for another day.

Work – I’ve not been in my office for a while, but I think I still have something largely similar to my home setup, but with one less screen. I think I’ll be taking my very quiet solar-powered keyboard in as I’ll be sharing an office soon and mechanical keyboards are not conducive to good working relationships.

Travel – I don’t travel right now, but which I did it would be some combination of a Thinkpad, Raspberry Pi Zero, Kindle and phone. I also carry bootable USB versions of Ubuntu and Tails everywhere I go (even places I don’t take a computer). Increasingly my travel hardware also includes a bike and related tools.

The software I use

At work I’m running Windows 10. It largely does the job, but I would like to be able to live without it. Most of my day is spent doing video calls using either Teams or Zoom, but apart from those I tend to use largely the same suite of applications as I do for everything else.

At home (and whilst travelling) It’s mostly Ubuntu with a side order of LibreElec and Raspbian for my Raspberry Pis. I’ve been using the i3 window manager for Ubuntu since early 2020, although I do have Gnome installed on most of my computers as well. The script I use for installing my computers is available on Github and is regularly updated so it generally represents the software I am currently using.

Firefox has always been my main browser, and it surprises me that more people don’t use it. I have a container running with various versions of all the main browsers so that I can test things, but otherwise it’s Firefox all the way.

Other software I use that I feel is somewhat noteworthy includes:

WordPress – All my blogs run on WordPress. I currently maintain a WordPress multisite installation and several stand alone sites.

Atom – A text editor that handles Markdown well, integrates nicely with GitHub, and can preview and export to PDF. I also use Pandoc to convert to PDF, HTML, and/or .docx if required (I try not to use office software until the point I have to share what I’m working on with someone else), and have also started experimenting with using Pandoc to generate slides and ebooks.

Trello – I use this for my to do list, and it’s a good way to visualise the planning and execution of any task based work. It also reminds me when I have forgotten to do something.

Dropbox – Cloud storage and syncing software to ensure I can access everything everywhere.

IFTTT and Buffer – To automate as much as possible. Between them they handle a lot of the seemingly clever things in my digital life, and explain why I seem to be able to post to social media sites at times when I appear to be elsewhere.

Virtualbox and Multipass – Because no-one needs as many physical computers as I had before virtualisation was a thing. Multipass is what I use the most at the moment, and it’s really transformed the way I use containers for anything volatile or requiring increased privacy or security. There are generally at least a couple of containers running on my computer which I can switch to if I need to use a different desktop environment or browser to test something.

Spotify for discovering new music, and Rhythmbox for playing the music I already own. I have 162 days of digital music on my computer, and that’s before we get to all the records and CDs I’ve not got round to digitising yet.

Github for collecting together code that I’ve written and making the way my computers are set up available to other people in case it’s useful. I’ve also increasingly started using private repositories to version control writing and the notes I take at work.

My dream setup

Maybe I’m already living the dream, but the one thing I’d really like is to go back to doing everything on one computer. I also long for reasonably priced mechanical keyboards that are designed for people who just like to type, rather than gamers. Give me RGB and I will activate it, but sometimes I think something a bit more stylish might be more in keeping with the rest of my setup.

More changes to my i3 config file

I had my new computer delivered this week. It was good to install it from my own scripts, copy across my dotfiles, and just carry on working.

Going through this process I did note that my i3 configuration file looks a lot different than when I last blogged about it, so I thought I’d make a note of the things I’ve changed from the defaults.

First up is screen locking. My muscle memory expects to use the same keyboard shortcut as Windows, so I’ve just configured that in:

set $i3lockwall i3lock -i /home/andy/Dropbox/lock.png -t
bindsym mod4+l exec --no-startup-id $i3lockwall

I’ve also set up something to randomise my wallpaper each time I log in (with a different one on each screen if I’m using multiple monitors):

exec --no-startup-id feh --randomize --bg-scale /home/andy/Dropbox/Wallpaper/current/*

I just keep a small folder of images in Dropbox that acts as a repository to pick from, and then add/remove occasionally to keep things fresh.

And then I’ve picked applications that don’t make sense in tiled mode and make the windows float (so they appear on top of everything else and can be moved around):

for_window [class="Gimp"] floating enable
for_window [class="vlc"] floating enable
for_window [class="zoom"] floating enable
for_window [window_role="pop-up"] floating enable
for_window [window_role="task_dialog"] floating enable
for_window [class="Arandr"] floating enable
for_window [class="XTerm"] floating enable

I think that’s about it for now. I’ve also made fairly significant changes to my installation and update scripts, but that’s a topic for another day.

Using the i3 window manager

i3 is a window manager for Linux that I’ve been using for the last few weeks. It’s a fairly steep learning curve, but definitely brings some productivity gains. i3 is a tiling window manager, and by default will fill up the whole screen with applications. So if you have one application open it’s full screen, if you have two open then they each take up 50% of the screen, etc.

Installing i3

A excerpt from my installation script:

# Install the i3 window manager and some basic utilities

sudo apt install -y i3 feh arandr byobu htop

# Download some wallpaper and set it as default when using i3

wget https://www.dropbox.com/s/n5o7jjg4qpuebjn/2017-12-27-13.38.44.jpg
mv 2017-12-27-13.38.44.jpg  default_wallpaper.jpg
echo "feh --bg-scale default_wallpaper.jpg" >> .profile

## Add some aliases

echo alias ls="ls -l" >> .bashrc
echo alias top="htop" >> .bashrc

Using i3

When you log in for the first time you’ll be asked to choose a modifier key (I chose ALT). The keyboard shortcuts below use $mod to refer to that modifier.

  • Open a terminal window – $mod + Enter
  • Open a different application – $mod + d then type the application name (eg firefox)
  • Open (or go to) a second desktop – $mod + 2
  • Send the focused application to that desktop – $mod + Shift + 2
  • Split a container vertically – $mod + v
  • Split a container horizontally – $mod + h
  • Move between containers – $mod + arrow keys
  • Switch to a tabbed layout – $mod + w
  • Switch to a stacked layout – $mod + s
  • Close a window – $mod + Shift + q
  • Exit i3 – $mod + Shift + e

For multiple monitors it’s possible to enable/define them using xrandr. The sysntax is something like:

`xrandr --output HDMI-2 --auto --right-of HDMI-1`

As I have three monitors I find arandr to be a better way to set them up though. It’s a graphical wrapper to xrandr and lets me see the layout of my monitors which I find much more useful.

More information about i3 can be found at https://i3wm.org/docs/userguide.html.