I wanted to have a separate laptop where I only use the terminal for my use cases. At the moment I am somewhat confident using the terminal, but I think limiting myself to tty only would build my confidence even more. Any tips?
EDIT: I am already using nvim and I already have installed a minimal distro (Arch). I just need advice on how to actually run this system effectively.
- set a good tty font (it’s almost all you’re gonna see)
- be comfy with basic core utils (mv, cp, chmod, …)
- choose a shell (bash, fish, …) and set up some useful aliases/abbreviations
- fzf or something similar does wonders (also replaces things like dmenu)
- terminal multiplexers are used instead of window managers
- some applications allow you to do some graphics (like mpv to play video)
- there is more advanced stuff you can do with frame buffers
- there are terminal browsers like w3m or lynx
- a good extensible text editor is essential (vim, nvim, emacs, helix, …)
- research some cli applications for your usecase (cal (calendar), neomutt (email), …)
Over time your collection of aliases and scripts will grow to make common tasks you do easier.
I disagree on the aliases. I’d recommend using almost none. It builds competence with the commands on all systems even without your special .bashrc. It’ll be easier to write scipts and change shells as well.
I use fish abbreviations. Unlike bash/zsh aliases, they expand when you press space or enter. This way you see the original command every time you use the alias, and you can edit as well. This should lighten the concern you have a bit. Your concern is something that sysadmins keep in mind e.g. default vim bindings so you are always comfortable on any server. However for desktop use I don’t think leaving the speed and comfort on table is worth it. Most desktop users only use their own systems anyway.
It’s about building muscle memory as well though. You are right that many home-gamers will probably never be without their customizations though. But if you do re-installs, setup VMs, try new distros, etc. it’s beneficial.
Just my opinion though.
Thanks a lot, I’ll definitely try the terminal multiplexers you’re talking about. I wondered how you would get different windows in tty.
Just don’t install a DE? Am I missing something?
Well yeah, but I want to know any tips on doing it effectively. If I just “don’t install a DE” I wouldn’t know where to go from there.
If I’m reading your post right, you basically want a fully functional system that is console only (no GUI), right? So when you go to install, just simply skip installing the desktop environment/window manager.
That, or you can set it up to where your system boots to the console, and you can activate the DE/WM if you want to (like startx for X11). Each environment is different, but I think it’s removing the line for starting the DE/WM from either systemctl or maybe a hook, I forget.
Yes, I know how to this. I think the way I’m saying it is confusing so let me explain. I know how to install a minimal system without a GUI, however I needed advice on the tools to be able to run this system effectively (i.e. tmux, byobu, and other things people have been mentioning).
With systemd, you set the default target to something other than a desktop environment.
Get the server version of whatever your favorite distro is. Nothing but terminal.
I built a console-only laptop once for financial reasons. I wanted something to travel with on a trip and was donated a laptop that, I think 20 MB of RAM after I upgraded it. I was able to run vim, perl and mutt was very tolerable performance.
I don’t think there’s really special tips. Pick a goal of some tasks to accomplish. Work towards them, discover the rough edges and find solutions for them. If you install everyone else’s favorite CLI apps, you can end up more than you need.
All that said, if I had the memory to run a GUI, I probably would have do so. But I wasn’t going to have a lot of time for web browsing and other laptop on that trip anyway.
Like others said, you can try installing Arch manually (not with the install script). You get the hang of the terminal and you get to see a bit more of how Linux works under the hood. The wiki is your friend, spend some time reading it!
I actually am using a manual Arch install. What i meant by gaining confidence is completely abandoning xorg and using the tty only.
If you haven’t set up this laptop yet, then I’d suggest installing a server-oriented distro like Debian, AlmaLinux, or Ubuntu Server. Those have minimal install options that come without a desktop environment installed, as most servers do not need one. If you’d like to make the install harder for yourself, this might be a good excuse to give Arch Linux or Gentoo a try, as those have the option of a fully manual install. If you’d like, you can install a desktop environment afterwards using the package manager.
If you already have a Linux with a graphical desktop installed, you can configure the system not to automatically start it with
sudo systemctl set-default multi-user.target
. (Do not do this on your main device!) You can re-enable it withsudo systemctl set-default graphical.target
.Regardless, you can then start a graphical session using
startx
, or whatever command is more appropriate for your desktop environment (gnome-session
to start GNOME on Wayland,startplasma-wayland
to start KDE Plasma), or bysudo systemctl start
ing your login screen manager (sddm, gdm, lightdm, etc).Just go for it! It’ll be fun. You will find yourself navigating your digital life (or at least: most of it) at relative ease with less distractions and graphical fuzz you otherwise get.
Getting to know terminal multiplexer (like screen) or vi-keys are crucial skills for anyone who is not afraid from working on “headless” machines!
vi-keys are crucial skills
I can very seriously argue on this one.
What are your use cases?
Messaging, reading, school work, watching anime, music, web browsing (may not be able to do this one nicely though). My use cases are very simple to implement on tty-only I think.
It is possible to watch movie files rendered in ascii with ffmpeg but I wouldn’t recommend it. Playing videos any other way requires a graphical interface.
Web browsing is possible with links, w3m and eww-mode on emacs.
You will struggle with school work. Eduroam is hard to connect to using the CLI for example.
I was able to use mpv to watch some anime I had downloaded on tty. Does this mean this was only possible because I already had xorg installed and running (I was using qtile prior to that)? I’m not sure if that’s how that works though.
Yeah you’ve got xorg running if graphics are being drawn, like windows or specifically windows with borders
Amazing post! I’ve been wanting to do the same… Have you found a CLI .csv file editor? One of the points of friction for me is finding how to replace Excel’s functionality past Libreoffice. I’m more curious to see what that workflow can do when one uses no GUI whatsoever.
I’ve found sc-im to be very useful, but I’m still a little new to it. Visidata is another one that seems to be a lot more powerful than sc-im.
I have used sc-im a few times, I like the simplicity and vim shortcuts.
Thanks for mentioning visidata, I’ll install it.
csv-mode on emacs