Mouseless

Mapping keys

It’s usually reasonable to remap CAPS LOCK to something more useful. A simple option is Ctrl. An advanced option (if available) is Tap&Hold: configure CAPS LOCK key to behave as Esc when tapping and as Ctrl when holding.

With my Kinesis Advantage360 it’s not well supported unfortunately.

I map CAPS LOCK to Mod4 key which is used in my Awesome window manager.

Before I used xmodmap for the mapping, now it is mapped directly in the keyboard configuration.

Xmodmap

xmodmap -e "clear Lock"
xmodmap -e "keycode 66 = Hyper_L"

Keyboard layouts

I am using QWERTZ. by pressing a sequence of keys, e.g.

Composition key

Compose key is a key which allows you to type special characters

Compose + " + a = ä or Compose + > + > = » or Compose + c + = = . Or hundreds of other combinations.

Tiling window manager

Let the window manager manage your windows without a need of dragging your windows with mouse.

A lot things can be configured (via rc.lua and with plugins).

I am using tile.left layout 99% of time.

It can handle external monitors well. E.g. mod4+o sends the active window to the other screen (and since the focus follows the window, by repeating you can toggle position of the current window between your screens).

Opening a new terminal is a matter of mod4+Enter.

CLI, terminal emulator, gnome-terminal

For quick computations I always invoked python and wrote an expression. Then I added this into my .bashrc and I can write e.g. c 123+234*345/456:

c() { printf "%s\n" "$@" | bc -l; }

I am using Gnome-terminal so I can quickly open another terminal in the current working directory with Ctrl+Shift+n.

Bash

You can enable vi key bindings with set -o vi in .bashrc. Or globally with set editing-mode vi in .inputrc.

Note, that Ctrl+L in insert mode won’t work, you need to switch to command mode first.

Tmux, GNU screen

The multiwindow/terminal capability of these multiplexers is not so important when I am working with the tiling WM and locally (I am turning off my laptop every day so the session persistence is not granted).

What is cool for the mouseless work is the copy mode with vim bindings.

There are some tool to help you with it, e.g. tmux-fingers.

Only recently I started using fzf extensively and it is a huge time-saver.

It can save a lot of typing when manipulating files in terminal.

Vim

I use Vim most of my screen time on computer, for mouseless work this is a nobrainer. I have no experience with Emacs.

I learned recently you can open a URL in a browser with gx.

Using fzf in Vim is easy with fzf.vim plugin, then you can use Ctrl+p or ff to fuzzy search for a file to be opened.

You can send a text from Vim to standard input of an external command and write the standard output to the buffer with :.!command. E.g. format text into a table with :.!column -t.

I have this alias fvim='vim $(fzf)' to quickly edit a file.

An alternative for copy-paste without a mouse from terminal is Vim’s terminal. :ter opens a vim terminal emulator, :vert term in a vertical window. Ctrl+w N switches to normal mode in which you can copy and navigate iorawill switch back to normal terminal use which you can leave withCtrl+d` as usual.

Do not open Vim in that terminal. :)

Browsing

In Firefox I am using Vim Vixen.

I am yet to get used to qutebrowser which has native Vim key bindings and uses two mode browsing.

Other tools

Many mouseless tools (mail, RSS reader, spreadsheet, …) are also text-user-interface tools I use.

Resources

published: 2023-06-14
last modified: 2023-11-29

https://vit.baisa.cz/notes/code/mouseless/