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.
- terminal multiplexers are used instead of window managers
Well, there’s twin.
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.
I’ll just dump this here.
shell tools
https://github.com/rust-unofficial/awesome-rust https://zaiste.net/posts/shell-commands-rust/
alternatives
- fd: simpler find
- bat: nicer cat
- lsd: ls with NerdFont icons
- broot: smarter tree
- ripgrep: better grep
GUI alternatives
- draw: mouse drawing on the shell!
- imgfb: Draws a farbfeld or jpeg image to the Linux framebuffer
- baca: TUI e-book reader
- Terminal Image Viewer (tiv): what it says
- FIM: framebuffer image viewer
- derasterize: cli pixel to ANSI converter
- cli video playing: mpv --gpu-context=drm
- ts-polkitagent: Polkit Agent for the Shell (old)
- fbterm: framebuffer terminal
- twin: Textmode WINdow environment
- directfb2: framebuffer desktop
- csv to ascii art table via python pandas
Task Management:
- dun: note-taking & task manager
- cubby: encrypted note taking to cloud, with markdown
- girok: TUI calendar
Services:
File Manager:
- clifm: nice shell file manager with tagging
- nnn: cli fm with split-view file preview
- TUIFI Manager: cli fm with rendered images in 2D layout
- xplr: hackable, minimal, TUI fm
Login Manager:
Others:
- buku - shell bookmark-manager - GitHub
- hyperfine: shell benchmark tool
ease of use
- edir: rename with text file
- mdcat: Sophisticated Markdown rendering for the terminal
- clipboard: shell clipboard manager & more
- portal: cli file transfer agent between computers
- croc: simple file transfer tool via local server, Android Appp too
- transfer.sh: cli file sharing via cloud
- detox: file name cleanup
- ouch: simple de/compressor
- mnamer: intelligent video renamer
- gum: bells and whistles for shell scripters
- pytermgui: bells and whistles for python scripters
specialist tools
Great list, thank you!
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.
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.
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
VisiData may do what you want.
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