Ask HN: Is it still possible to live in a terminal?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • copilot.vim

    Neovim plugin for GitHub Copilot

  • In addition to all the language servers folks have already pointed to, Github Copilot works -- surprisingly --- great in Neovim. Tim Pope (author of fugitive and many other popular Vim plugins) wrote the integration.

    https://github.com/github/copilot.vim

  • coc.nvim

    Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.

  • I've had great success with coc.nvim for IDE-like features; it manages language servers for you: https://github.com/neoclide/coc.nvim

    For file browser side-panes there are tons of options, but no one ever got fired for using the venerable old NERDTree.

    The rest is mostly just tmux!

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • emacs-slack

    slack client for emacs

  • Emacs (which can be run in the terminal using the "-nw" option) has a slack package -- I dipped my toes in and noped out quickly, as I found it too difficult and too ugly compared to using the app: https://github.com/yuya373/emacs-slack

    I've tried to do the same thing: going completely text mode. For me, it was disastrous -- it was a big distraction for me at work, at two jobs. I even left a good job partially so that I could try to go text-mode rather than click my way through lots of GUIs. It was something of an obsession. Now I look back and sigh.

  • browsh

    A fully-modern text-based browser, rendering to TTY and browsers

  • wee-slack

    A WeeChat script for Slack.com. Supports threads and reactions, synchronizes read markers, provides typing notification, etc..

  • > - My company uses Slack's enterprise auth, and all the CLI slack clients I could find haven't been updated in years and no longer work.

    https://github.com/wee-slack/wee-slack is decent.

    > - The web is using more javascript than in the past.

    cli browsers are probably the only truly unrealistic thing. An idea that I've been kicking around for a while is to build a simple CLI "browser" that uses PhantomJS or similar under the hood to request, load, and render the page into an image, convert the image to sixel (https://en.wikipedia.org/wiki/Sixel) and display it that way (or use any of the various terminal emulator-specific features (KiTTY has https://sw.kovidgoyal.net/kitty/graphics-protocol/ for example)). Probably pretty clunky, but it's doable if you're in the mood to write something purely for fun.

    > - Mutt doesn't handle multiple email accounts natively for work/personal. The solutions are hacks at best. Email servers are starting to use more complete auth mechanisms that don't work well with mutt.

    I don't think they're hacks. You can define exactly how you want it to work. That's a feature, not a bug. Sure, it takes a little bit of work to set up but you can use https://github.com/cweagans/dotfiles/tree/master/.config/mut... as a starting point if you'd like.

  • dotfiles

    My personal config files. (by cweagans)

  • > - My company uses Slack's enterprise auth, and all the CLI slack clients I could find haven't been updated in years and no longer work.

    https://github.com/wee-slack/wee-slack is decent.

    > - The web is using more javascript than in the past.

    cli browsers are probably the only truly unrealistic thing. An idea that I've been kicking around for a while is to build a simple CLI "browser" that uses PhantomJS or similar under the hood to request, load, and render the page into an image, convert the image to sixel (https://en.wikipedia.org/wiki/Sixel) and display it that way (or use any of the various terminal emulator-specific features (KiTTY has https://sw.kovidgoyal.net/kitty/graphics-protocol/ for example)). Probably pretty clunky, but it's doable if you're in the mood to write something purely for fun.

    > - Mutt doesn't handle multiple email accounts natively for work/personal. The solutions are hacks at best. Email servers are starting to use more complete auth mechanisms that don't work well with mutt.

    I don't think they're hacks. You can define exactly how you want it to work. That's a feature, not a bug. Sure, it takes a little bit of work to set up but you can use https://github.com/cweagans/dotfiles/tree/master/.config/mut... as a starting point if you'd like.

  • emacs-webkit

    An Emacs Dynamic Module for WebKit, aka a fully fledged browser inside emacs

  • Does GUI Emacs count as sufficiently terminal-ish? You can embed a Webkit-driven browser into Emacs, and then do anything browser-y you need to from there: https://github.com/akirakyle/emacs-webkit

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • dotfiles

    These are my dotfiles. There are many like them, but these are mine. (by wfleming)

  • I'm not sure what specific issues you've had with mutt, but I have mine setup with multiple accounts & have in the past used it for a work account where I had to do IMAP/SMTP auth via oauth token rather than username/password. It's definitely not a super well supported happy path & requires some setup, but it's worked well for me.

    - Multiple accounts: I have a per-account config file with the relevant specific (https://github.com/wfleming/dotfiles/tree/arch-linux/home/co...) and use folder hooks to apply those depending on which mailbox I'm viewing (https://github.com/wfleming/dotfiles/blob/arch-linux/home/co...). (Plus a keybinding in each account file to make flipping to the next account easy.)

  • xplr

    A hackable, minimal, fast TUI file explorer

  • The Vim/Neovim ecosystem has gotten unbelievably better over the last 5-10 years. "Living in the terminal" for core development work is IMO better than pretty much anything else out there; my Neovim setup has a modern plugin manager; an IDE-like experience with fast autocompletion as I type, goto definition, and automated refactor support; and a side-drawer file browser navigable with Vim motions. It feels like an IDE, except that it launches in ~100ms and has ultra-low typing latency. Using it with tmux panes means I can have various drawers and panes with a series of full, incredibly fast terminals wherever I want, with long-running tasks like automated test watching/running while I edit code placed wherever I want around the editor panel. Not to mention the Cambrian explosion of "modern" terminal tooling getting built, like xplr [1], hyperfine [2], httpie [3], etc.

    That being said, I think "living in the terminal" for general purpose computing, like browsing the web or talking to your coworkers, has been in a kind of frozen standstill while the rest of the world has moved on. I think it isn't worth trying to push non-dev work into the terminal currently.

    1: https://github.com/sayanarijit/xplr

    2: https://github.com/sharkdp/hyperfine

    3: https://github.com/httpie/httpie

  • hyperfine

    A command-line benchmarking tool

  • The Vim/Neovim ecosystem has gotten unbelievably better over the last 5-10 years. "Living in the terminal" for core development work is IMO better than pretty much anything else out there; my Neovim setup has a modern plugin manager; an IDE-like experience with fast autocompletion as I type, goto definition, and automated refactor support; and a side-drawer file browser navigable with Vim motions. It feels like an IDE, except that it launches in ~100ms and has ultra-low typing latency. Using it with tmux panes means I can have various drawers and panes with a series of full, incredibly fast terminals wherever I want, with long-running tasks like automated test watching/running while I edit code placed wherever I want around the editor panel. Not to mention the Cambrian explosion of "modern" terminal tooling getting built, like xplr [1], hyperfine [2], httpie [3], etc.

    That being said, I think "living in the terminal" for general purpose computing, like browsing the web or talking to your coworkers, has been in a kind of frozen standstill while the rest of the world has moved on. I think it isn't worth trying to push non-dev work into the terminal currently.

    1: https://github.com/sayanarijit/xplr

    2: https://github.com/sharkdp/hyperfine

    3: https://github.com/httpie/httpie

  • httpie

    🥧 HTTPie CLI — modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. (by httpie)

  • The Vim/Neovim ecosystem has gotten unbelievably better over the last 5-10 years. "Living in the terminal" for core development work is IMO better than pretty much anything else out there; my Neovim setup has a modern plugin manager; an IDE-like experience with fast autocompletion as I type, goto definition, and automated refactor support; and a side-drawer file browser navigable with Vim motions. It feels like an IDE, except that it launches in ~100ms and has ultra-low typing latency. Using it with tmux panes means I can have various drawers and panes with a series of full, incredibly fast terminals wherever I want, with long-running tasks like automated test watching/running while I edit code placed wherever I want around the editor panel. Not to mention the Cambrian explosion of "modern" terminal tooling getting built, like xplr [1], hyperfine [2], httpie [3], etc.

    That being said, I think "living in the terminal" for general purpose computing, like browsing the web or talking to your coworkers, has been in a kind of frozen standstill while the rest of the world has moved on. I think it isn't worth trying to push non-dev work into the terminal currently.

    1: https://github.com/sayanarijit/xplr

    2: https://github.com/sharkdp/hyperfine

    3: https://github.com/httpie/httpie

  • exwm

    Emacs X Window Manager

  • You can even use Emacs as a window manager if you are so inclined. https://github.com/ch11ng/exwm

  • NvChad

    Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

  • tmux

    tmux source code

  • git

    A fork of Git containing Windows-specific patches. (by git-for-windows)

  • Another alternative solution for Slack is to use Beeper (https://beeper.com) or just run the Slack bridge they use yourself directly (https://gitlab.com/beeper/mx-puppet-monorepo/-/tree/main/pac...) to bridge Slack into Matrix. From there you can use any CLI-based Matrix client you like; weechat, gomuks, whatever.

  • telescope.nvim

    Find, Filter, Preview, Pick. All lua, all the time.

  • - For file/text search I recommend telescope (https://github.com/nvim-telescope/telescope.nvim)

  • nerdtree

    A tree explorer plugin for vim.

  • vim-commentary

    commentary.vim: comment stuff out

  • - commentary for commenting (https://github.com/tpope/vim-commentary)

  • ale

    Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support

  • mason.nvim

    Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.

  • - Mason for installing LSP servers (https://github.com/williamboman/mason.nvim)

    Once you have the proper tooling in place you can do pretty much everything in vim that you are doing in vs code or intelliJ. I've just started using it for most of my dev work recently and I have found ThePrimeagen's youtube videos on vim to be a great resource.

    Series on using vim as you editor

  • dotfiles

    Automates the configuration of Vim, Tmux, and friends for make benefit of glorious $HOME and life embetterment. Wowoweewah great success! (by relaxdiego)

  • I still haven’t made the transition to Neovim in favor of stability, but here’s part of my dotfiles repo that installs all the plugins that I use with Vim:

    https://github.com/relaxdiego/dotfiles/blob/main/run_once_07...

  • magit

    It's Magit! A Git Porcelain inside Emacs.

  • >> Using the git CLI is much better for version control than the Jetbrains GUI wrapper

    > For some things. But for reviewing activity in git, and tracking changes across time, doing it in the terminal is unproductive and sucks. (e.g.: 10 levels deep of git blame)

    Magit[1] in Emacs is quite okay. It doesn’t feel duct-taped. I haven’t used fugitive[2] in Vim but that’s a thing that exists too.

    [1] https://magit.vc/

    [2] https://github.com/tpope/vim-fugitive

  • vim-fugitive

    fugitive.vim: A Git wrapper so awesome, it should be illegal

  • >> Using the git CLI is much better for version control than the Jetbrains GUI wrapper

    > For some things. But for reviewing activity in git, and tracking changes across time, doing it in the terminal is unproductive and sucks. (e.g.: 10 levels deep of git blame)

    Magit[1] in Emacs is quite okay. It doesn’t feel duct-taped. I haven’t used fugitive[2] in Vim but that’s a thing that exists too.

    [1] https://magit.vc/

    [2] https://github.com/tpope/vim-fugitive

  • DomTerm

    DOM/JavaScript-based terminal-emulator/console

  • DomTerm (https://domterm.org) isn't quite what you asked for: It only indirectly has a JavaScript console: Since its frontend is a browser engine, you can open up a JavaScript debugger.

  • Launch.nvim

    🚀 Launch.nvim is modular starter for Neovim.

  • I have both PHPStorm and Pycharm running, each takes up 4+GB memory on a 8G M1. Slowly growing memory usage for WindowServer process makes matter worse.

    For the last week, I have been playing with Neovim in spare time using a setup based on https://github.com/LunarVim/nvim-basic-ide It does pinning plug-in too.

    It's working well for small projects so far.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts