Let’s talk CLI/TUI and Developer Workflows!

I’m looking to refresh my local toolkit and I’m curious: what are the absolute “must-have” CLI or TUI programs in your current rotation?

Whether it’s a specialized utility for a specific language, a terminal-based interface for a common service, or a workflow-changing alias, I want to hear about it. I’m especially interested in tools that prioritize keyboard-driven navigation and accessibility.

My Current Favorites:

To get the ball rolling, here are a few tools I’ve been leaning on lately:

  • uv — Fast, reliable Python package and project management.
  • fzf & ripgrep — The classic duo for fuzzy finding and searching.
  • tmux — For session management and persistent terminal workspaces.
  • jq / yq — Essential for wrangling JSON and YAML without leaving the prompt.

What about you?

  1. What is one tool you’ve discovered recently that you can’t live without?
  2. Are there any TUI-based clients for web services (like Mastodon, GitHub, or RSS) that you recommend?
  3. Do you have a favorite “hidden gem” script or small utility?

Mentions & Groups

@programming
@linux @terminal_u_i@lemmy.ml @selfhosted

Hashtags

#CLI #TUI #Terminal #OpenSource #FOSS #Programming #DevTools #Linux #SysAdmin #Workflow #Python #Backend #ArchLinux #KeyboardDriven #Accessibility #SoftwareDevelopment #TechTalk

  • coreray00 ( coreray00@discuss.online ) 
    link
    fedilink
    arrow-up
    10
    ·
    edit-2
    6 months ago

    I’m on my phone, but here’s what I’m using off the top of my head

    Helix editor

    Yazi - file browser

    Aichat

    Juju - Jutusu Scm

    Ec - conflict resolver

    Mergiraf - ast aware conflict resolver

    Jiq - jq tui

    Radicle - self hosted code forge

    Bat - better cat

    Fish shell

    Nushell

    Sqlit - db browser

    Zoxide - directory changer

    Scooter - find/replace

    Mole - Mac cleaner

    Devenv - per project dependencies and scripts

    Lix - nix client ( largest package manager, great for testing tools too)

    Home-manager

    Television - fuzzy finder with a nixpkgs plugin

  • Novi Sad ( Novocirab@feddit.org ) 
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    6 months ago
    • tldr (aka tealdeer) for quick command usage examples

    • bat (aka batcat) for most uses of less/more/cat

    • difft (aka difftastic) which I’ve just learnt about here/here. Use in git diff by running $ git config --global diff.external difft

    • btm (aka bottom) for viewing processes & system status

    • This code in my .bashrc for colored man output:

    Spoiler
    # Colors for Manpages
    function _colorman() {
      env \
        LESS_TERMCAP_mb=$'\e[1;35m' \
        LESS_TERMCAP_md=$'\e[1;34m' \
        LESS_TERMCAP_me=$'\e[0m' \
        LESS_TERMCAP_se=$'\e[0m' \
        LESS_TERMCAP_so=$'\e[7;40m' \
        LESS_TERMCAP_ue=$'\e[0m' \
        LESS_TERMCAP_us=$'\e[1;33m' \
        LESS_TERMCAP_mr=$(tput rev) \
        LESS_TERMCAP_mh=$(tput dim) \
        LESS_TERMCAP_ZN=$(tput ssubm) \
        LESS_TERMCAP_ZV=$(tput rsubm) \
        LESS_TERMCAP_ZO=$(tput ssupm) \
        LESS_TERMCAP_ZW=$(tput rsupm) \
        GROFF_NO_SGR=1 \
          "$@"
    }
    alias man="LANG=C _colorman man"
    function perldoc() { command perldoc -n less "$@" |man -l -; }
    

    (Not by me, but I forgot from whom I got it.)

  • TehPers ( TehPers@beehaw.org ) 
    link
    fedilink
    English
    arrow-up
    4
    ·
    6 months ago
    • Nushell - because open blah.json | get foo.bar.2 just works. It also just works with yaml and any other formats I want to support (you can define custom commands to support any extension you want).
    • uv/fnm - good tools for Python and JS
    • Starship - nice looking prompt with useful info
    • zoxide/fzf - because z myproject saves enough time and effort to justify using it over cd most of the time
    • Carapace as my default completer for better completions on most common tools
    • Gitui - super nice git tool. I still use git directly a lot, but Gitui’s interface is more convenient for staging changes
  • Aside from vim or emacs text editors I’ll usually try to keep it to the gnu core utils and programs that are included with most installs just to keep things universal and simple aside from a couple shell functions and aliases for backing up files and navigating for convenience.

    Today I used vim, top, ps, grep, du, sort, ls, find, rm, a backup function that suffixes a date to the filename or adds tildes if it already has one, nohup, sudo, cp, tar, unzip off the top of my dome. It’s not the same every day but pretty typical if I’m doing some ops or analysis work.

      • Maiq ( Maiq@piefed.social ) 
        link
        fedilink
        English
        arrow-up
        2
        ·
        6 months ago

        Yeah, it’s pretty spanky! Not to hard to setup, great instructions in the arch wiki. Even has cava visualizer support. Pretty easy to theme as well and there are lots of premade themes on github to use or start from.

  • who ( who@feddit.org ) 
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    6 months ago

    A few handy commands that aren’t in the traditional unix kit…

    $ whatis ffmpeg lsblk mmv nc pv wcurl wrestool xxd
    ffmpeg (1)           - ffmpeg media converter
    lsblk (8)            - list block devices
    mmv (1)              - move/copy/link multiple files by wildcard patterns
    nc (1)               - arbitrary TCP and UDP connections and listens
    pv (1)               - monitor the progress of data through a pipe
    wcurl (1)            - a simple wrapper around curl to easily download files.
    wrestool (1)         - extract resources from Microsoft Windows(R) binaries
    xxd (1)              - make a hex dump or do the reverse.
    
  • @RareBird15 @programming @linux @selfhosted I have been playing with mise to manage all my cli tooling. It starts (for me) by being a better version of Volta for node, doing automatic node version switching whenever you try and run node in a configured project. Except it can also be configured to read configs for other node version managers like nvm, and to act like corepack to use the right npm or yarn version configured in package.json. It does that for other languages, and other tools too!