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.

image Eink Colour terminal

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).