Colour E-INK Terminal - proof of concept
Couple of weeks ago during my normal night I suddenly caught myself thinking about how cool it would be if instead of an article on the web I was reading a normal book and my eyes would feel less tired (so that I had more resources to sit behind the screen later).
Then I suddenly had an idea what if my laptop had an e-ink display, would I be able to write code and texts on it, without stressing my eyes too much? The minimalistic command-line environment which I use should truly shine on the device with physical limitations. Also energy-efficiency and eco-friendliness of such device (cyberdeck) should be at the top. So I started my research.
I did not found any success stories on the Internet and found only one manufacturer which sells monochrome displays with standard ports. It’s a decent display but I can’t sacrifice colours - syntax highlighting makes coding much more pleasant.
There are colour e-ink displays out there and to
start quickly I bought a
colour book reader on Android - Boox Nova Color 3
.
Setting up BookReader
I’ve never enabled Google Play Store on my e-book, it’s disabled by default and I don’t need it. (The good thing about this product is that it does not require any account to work) For the software repository I use F-Droid Just download apk file, connect e-book to computer through usb cable, copy .apk file to the device and run it from there.
Next we need the actual terminal program - install
Termux
from F-droid,
and also install Termux:Styling
to change colour schema of the
terminal (the default white on black does not
look good on the eink, imo).
In termux long touch will open menu, choose
More-Style-Choose-Color
- someone
already made a colour e-ink scheme. Nice!
Next in termux I installed mosh
(ssh for mobile devices, which has many
good features such as permanent session and
predicative input which helps defeat lag).
Generate ssh-key pair and copy public key to the main device storage.
Connect a keyboard and our ‘cyberdeck’ is ready.
Setting up server side
So the device is just a thin client, everything useful runs on a server.
The problem with the colour e-ink screen is that colour resolution
is much lower than the black and white resolution.
So colours should be used only for background.
(termux did not even show any foreground text colours for me).
So all colour schemas for all programs should be optimised
for this device -so I created a new dedicated user on the server.
I added public key from e-book to .ssh/authorized_keys
in
the home directory of that user and installed mosh
.
Here is an example of my vim colour scheme for that user, it only highlights the background of the text:
highlight Cursor ctermbg=00
highlight Normal ctermfg=00
highlight Normal ctermbg=15 "white is white
highlight Identifier ctermfg=01 ctermbg=14
highlight Statement ctermfg=00
highlight Comment ctermfg=00 ctermbg=09
highlight Constant ctermfg=00 ctermbg=11
highlight Error ctermfg=00 ctermbg=01
highlight Type ctermfg=00 ctermbg=15
highlight PreProc ctermfg=00 ctermbg=13
With that, I started my journey, and I can tell that this prototype is absolutely usable, this post for example, is written on this e-ink terminal, and the input lag on the default screen settings (the best picture quality) is stably low and is not noticeable if you don’t pay attention specifically (minimalistic software rules).
I hope that you guys will find this inspiring and will actually build a real cyberdeck, (I don’t have the necessary skills and for now - I’m satisfied with this prototype).