I’m a big fan of various interfaces which are meant to be exclusively keyboard driven:
urxvt – Replacement for xterm. See the stumpwm config file below to see what options I use.
sxiv – Simple lightweight image viewer with vim-like bindings
zathura – PDF/PS/DjVu viewer with vim-like bindings
emacs – my first IDE and now I’m too old to change. I’ve used vim, but I just enjoy pressing 3 keys at once more than having modal editing. Emacs lisp sucks so I tried climacs, a common lisp emacs port, but it’s not finished yet.
qutebrowser – Internet browser in Qt with vim-like bindings. Works a ton better than pentadactyl/vimperator/tridactyl as far as being keyboard driven and not incredibly slow. Those are also very frustrating with firefox/chrome because addons break regularly. Surprisingly, given that it’s meme software, qutebrowser actually works with almost every site I’ve tried.
stumpwm – Tiling window manager, a common lisp port of ratpoison. Wastes no screen space and is entirely keyboard driven. Can also be significantly changed when running live because it’s in common lisp. Again, it works surprisingly well, I’ve done terrible terrible things and I think I’ve only had it crash once. I’ve also had weird experiences with fullscreen stuff with games or streaming sites on other linux window managers, and stumpwm has always worked how I want. Here’s my .stumpwmrc config file:
A sys-show-info that displays ram use, battery use, sound levels, and screen brightness when invoked:
(defun sys-show-info ()
(defparameter temp-string1 (run-shell-command "free -h | grep Mem: | sed s/' \\+'/' '/g" t))
(defparameter positions1 (all-positions #\Space temp-string1))
(defparameter temp-string2 (run-shell-command "acpi" t))
(defparameter positions2 (all-positions #\Space temp-string2))
(echo-string (current-screen) (concatenate 'string (subseq temp-string2 (caddr positions2) (- (length temp-string2) 1)) " | Volume: " (subseq (run-shell-command "amixer get Master | sed "\
s/ /\\n/g" | grep -m 1 %" t) 1 4) " | Mem: " (subseq temp-string1 (cadr positions1) (cadddr positions1)) " | " (time-format *time-format-string-default*) " | Brightness: " (subseq (run-shel\
l-command "cat /sys/class/backlight/intel_backlight/brightness" t) 0 4)))); " | " (run-shell-command "iw dev wlp1s0 link | grep SSID" ))))
(define-key *root-map* (kbd "a") "sys-info")
Taking screenshots with scrot:
(define-key *root-map* (kbd "h") "exec scrot -u /home/dont/stumpwm_screenshots/%Y-%m-%d-%T-screenshot.png")
Opening urxvt with desired options:
(define-key *root-map* (kbd "c") "exec urxvt -bg 'black' -fg 'white' +sb -sl 65535 -b 0 -w 0 -letsp -1 -fn "xft:bitstream vera sans mono:size=8:antialias=True,xft:unifont"")
You can also do stuff with ratclick to move the mouse pointer and click. I played with some stuff for that but it never worked satisfactorily. For example one thing I tried was to bring up an overlaid grid and have the pointer move to the grid depending on what button you pressed. After this finer stuff could be done with relative motion. I’m not sure if there is actually a way to completely replace the mouse in a way that I would be happy with.
Ubuntu – I worked from Ubuntu->Fedora->Arch->Gentoo and stayed there for several years before moving back. Gentoo made me learn a ton of stuff about linux, but at this point I want software to ‘just werk’ instead of needing fixes/configuration.