We’re installing Arch Linux on an old refurbished Dell laptop for our GUI fast.
--
Do it the hard way first and hold the arch wiki hand. Doing full disk encryption is hard so I grabbed another guide’s hand for that one. Apart from that though I found the entire process to be incredibly tedious as I suppose a manual process should be.
Nuke it and start again but this time with archinstall. Doesn’t it feel great? I appreciate you
archinstall. As I mentioned before we’re doing a GUI fast so no KDE and no Gnome. Ah wait also no
Xorg or Wayland. Remember the minimalists well I don’t know what they’re doing these days but they
had the right idea. We’re going full Virtual Ret… Terminal.
Everything in the Terminal, nothing outside the Terminal, nothing against the Terminal.
There’s something special about booting into an actual tty. It greets you with only 8 colours because your eyes need a dopamine detox. To thrive in this digital flatland all you need is an editor. You could go with vim or newvim but that’s for old people I’m using helix. Now the colours are all jacked up but remember it has that charm. Appeal aside, the virtual terminal is basically a single application fully maximised stealing all your attention. I’m not a single track mind so I’m going down a few thought streams concurrently which requires multiple tabs and windows. Easy fix with a multiplexer so maybe you need two tools alright. Here subverting expectations again by rejecting tmux and embracing zellij. All I can say is batteries included.
Do browsers and terminals work together? No but has that stopped some mad programmers trying to mix the two… no. I really tried to use some of these creations like w3m but got hit with a post-use clarity and felt disgusted. This newfound and ephemeral clarity threw a solution out at me… LLMs. That’s it I’m going to use an agent harness and I label it another essential requirement - no further questions.
--
With my eyes in a strained and watery state I realise I’m actually too modern and weak to handle
only 8 colours. Kmscon provides salvation for those who seek - true colour support and works without
a display server at all. It apparently survived in a fork for 11 years 😳 and only in the past year
did the project gain a pulse again. Blah blah it doesn’t have support for kitty protocols or sixels
amongst a bunch of other modern niceties. I hear you and I want those things too but we can’t get
everything we want in life. Perhaps we can though… I came across this
issue and it may be worth just using
libghostty to build a terminal emulator that sits on top of the Linux DRM/KMS like kmscon but
better. There’s a free idea for you the reader.
In other news, I came across an interesting accommodation if you still want to GUI fast but in a way that plays loose with the definition. You can use cage which itself runs a single maximised application - with a Wayland display server - which as you may have guessed can just embed a terminal. A lot of bloat for just running a terminal but I’m not judging.
Some Developer Notes
Helix Editor
If you just want to use your editor of choice for root level operations and you don’t want to add
sudo EDITOR=<editor>... or sudo -E everywhere then some adjustments are required - check
visudo manual.
sudo visudoThe above safely edits /etc/sudoers config files. You need to look for the following
Defaults!visudo env_keep += "SUDO_EDITOR EDITOR VISUAL"Change this to
Defaults env_keep += "SUDO_EDITOR EDITOR VISUAL"Now ensure that the EDITOR env variable is in your shell config. I would do the following:
echo EDITOR=helix > ~/.bashrcKMSCON
Just follow the arch wiki and you should be able to
figure it out. In my case I just wanted the service enabled on tty2 and still continue to run the
traditional agetty service on tty1. I came across a small hurdle with wanting the login screen to
auto launch tty2 so I’ll share what I did to fix it.
Once you’ve installed it you should add your config options with the following
sudo helix /etc/kmscon/kmscon.confThere is a kmscon.conf.example file in that directory that you can use to guide your decisions. I
set the following for my use case with respect to seat options.
vt=2
switchvt
libseatIf you reboot (or just restart the service) then you’ll see that it still doesn’t automatically
switch consoles. The issue is a certain --noswitch-vt arg being passed in which has greater
precedence than the configuration file you defined previously. Let’s fix this by removing the
aforementioned arg in ExecStart and then reboot. Note that the initial ExecStart= is not a
mistake.
sudo systemctl edit kmsconvt@tty2.service[Service]
ExecStart=
ExecStart=kmscon --vt=%I --seats=seat0 --login == /sbin/agetty -8 -o '-p -- \\u' --noclear -- - $$TERMZellij
--
I try to use the same colour theme in every tool that I use frequently and thankfully Catppuccin Mocha is found most places.
Apart from that I’ve been using custom layouts with zellij and you might find some inspiration.
// layouts/helix.kdl
layout {
pane size=1 borderless=true {
plugin location="compact-bar"
}
pane split_direction="vertical" {
pane name="Editor" focus=true {
command "helix"
args "."
close_on_exit true
}
pane split_direction="horizontal" {
pane name="Terminal"
pane name="Clanker" {
command "codex"
args "resume"
start_suspended true
close_on_exit true
}
}
}
pane size=1 borderless=true {
plugin location="status-bar"
}
}// layouts/sys.kdl
layout {
pane size=1 borderless=true {
plugin location="compact-bar"
}
pane split_direction="horizontal" {
pane split_direction="vertical" {
pane name="System Info" command="fastfetch"
pane name="Star Map" command="astroterm"
}
pane split_direction="vertical" {
pane name="Resources Monitor" focus=true {
command "btm"
close_on_exit true
}
pane name="System Journal" {
command "journalctl"
args "-f" "-n" "50"
close_on_exit true
}
}
}
pane size=1 borderless=true {
plugin location="status-bar"
}
}