Some terminal applications are positively deluxe. Completely decked out. Here are some examples (these are all screenshots from my terminal emulator):

!

So my question is: how do I design a terminal application to look like that?

    • a_gee_dizzle@lemmy.caOP
      link
      fedilink
      arrow-up
      3
      ·
      7 hours ago

      Dealing with all the interaction options

      Yeah. Is it even possible to have adapt if a user changes the size of their window? Window resizing often seems to break these graphics

      Making it all discoverable for your users

      Why do you consider this an issue specifically?

      • BartyDeCanter@piefed.social
        link
        fedilink
        English
        arrow-up
        3
        ·
        7 hours ago

        Generally, yes, adapting to the size of the window is pretty easy. Most of those libraries have a layout engine, so you define the size of things relative to the size of the window and each other, then the layout engine takes care of the rest.

        As for discoverability, well, it’s a hard issue in all UI schemes, and tends to be particularly difficult in CLI/TUI applications due to layout and input constraints. In a GUI application users can click on buttons, scroll, and generally figure things out. For a tui, there are probably going to be a large number of (possibly reconfigurable) keyboard shortcuts and maybe some sort of command system. How you let the user know about all of them without having to memorize a giant table can be difficult. The common options I’ve seen are a “?” popup (lazygit), a context-aware small popup during multi-key commands (helix), a command palette with search (lots), a top menu bar with accelerator keys (old school WordPerfect), or a bottom bar with context available options (lots). They all have their respective tradeoffs, and can make something go from “useable after hours of practice and reading” to “oh, this is intuitive!”.

  • e0qdk@reddthat.com
    link
    fedilink
    arrow-up
    13
    ·
    8 hours ago

    I have only the most basic experience digging into that stuff – from quite a while ago – but the keywords I think you need to search for to find out more info about this are: escape codes, TUI (i.e. Text User Interface), and curses.

    The last is an old library for implementing TUIs. There’s successors like ncurses as well. I don’t know what people actually use currently though.