Using emacs for the scrollback in terminal multiplexers
I should start with saying that I still don't really know if this is a good idea or not, but it feels like it's worth trying out at least.
An irritating limitation in Zellij, and a possible solution
After seeing it mentioned in an online community I thought it might be worth trying out. I'm not really disappointed with tmux, I've been using it for years but I actually only use a small part of what it can do. I create tabs, sometimes create panes, and I regularly use the scollback functionality to copy output of commands I've run earlier.
Unfortunately, as is reported in a ticket, Zellij can't select and copy using the keyboard. From the discussion in that ticket it seems unlikely it ever will be able to. After finding that out I resigned to staying with Tmux – I'm not ready to go back to using a pointing device to select and copy text in my terminal!
When I was biking to the pool yesterday I realised a thing though: I'm already using a tool that is very good at manipulating text using the keyboard. Of course I'm talking about Emacs! So if I can just make Emacs start up quickly enough I ought to be able to use it for searching, selecting and copying from the scrollback buffer. I haven't found a way to do this in Tmu= yet, but Zellij has EditScrollBack so I can at least try it out.
A nice benefit is that I can cut back on the number of different shortcuts I use daily.
My slimmed down Emacs config
My current Emacs config starts up in less than 2s, which is good enough as I normally start Emacs at most a few times per day. However, if I have to wait 2s to open the scrollback buffer I suspect I'll tire very quickly and abandon the experiment. So I took my ordinary config and slimmed it down. Cutting away things that weren't related to navigation and searching.
The list of packages is not very long:
straight
use-package
evil
general
which-key
vertico
orderless
marginalia
consult
The first 5 are for usability in general, and the last 4 are bring in the functions I use for searching through text.
The resulting config starts in less than ¼s. That's more than acceptable, I find.
Copying to the Wayland clipboard
It turns out that copying with `y` in evil
does the right thing by default and
the copied text ends up in the clipboard without any special configuration.
From Tmux I'm used to being thrown out of copy-mode after copying something.
While that's sometimes irritating, it's at other times exactly what I want.
Given that evil-yank
does the right thing it was easy to write a function for
it:
(defun se/yank-n-kill (beg end) (interactive "r") (evil-yank beg end) (kill-emacs))
The config files
I'm keeping my dot-files in a private repo, but I put a snapshot of the Emacs and Zellij config in a snippet.