Terminal Emulators

98 readers
1 users here now

A home for discussion of terminal emulators for all platforms.

RULES:

founded 2 months ago
MODERATORS
1
 
 

This is the non-exhausted work-in-progress directory of communities related to terminal emulator.

Name Description Link
Terminal Rice A place to show off amazing terminal configurations, shell prompts, applications, and ricing tips/tricks you might find helpful! [email protected]
Kitty The fast, feature-rich, GPU based terminal emulator [email protected]
Command Line [email protected]
Command Line This is for anything regarding the command line, in any operating system. All questions (including dumb ones), tips, and interesting programs/console applications you've found or made yourself are welcome. Linux / BSD / macOS / Windows CLI apps, questions or comments, we're happy to take them all! [email protected]

Please comment the communities not in the list. General rules (tentative) are

  • communities must be in fediverse
  • communities must be related to terminal emulator, TUI or command line
  • not official site
2
 
 

So even though I was a bit confused by why Ghostty needs to exist at first, I'm now completely sold. And to be completely honest, you should be too.

read details in the post.

p.s. I am not the author.

3
 
 

released on 2024-10-30 with 7 changes/fixes listed. The major change is "the cursor tails"

Show an animated trail when the text cursor makes large jumps making it easy to follow cursor movements. Inspired by the similar feature in neovide, but works with terminal multiplexers and kitty windows as well. See the pull request for a demonstration video. This feature is optional and must be turned on by the cursor_trail option in kitty.conf.

4
 
 

I don't know if anyone could use these, but I thought I'd share two commands I use sometimes while trying out different terminals. In my .bash_aliases file I have:

alias whatterm="ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$)"

example:

$  whatterm
alacritty

and I have the following script saved in my local bin directory as testterm. I don't know how great of a test it is, but it shows the capabilities of different terminals and I like the pretty colors.

#!/bin/sh

echo "# 24-bit (true-color)"
# based on: https://gist.github.com/XVilka/8346728
term_cols="$(tput cols || echo 80)"
cols=$(echo "2^((l($term_cols)/l(2))-1)" | bc -l 2> /dev/null)
rows=$(( cols / 2 ))
awk -v cols="$cols" -v rows="$rows" 'BEGIN{
    s="  ";
        m=cols+rows;
        for (row = 0; row<rows; row++) {
          for (col = 0; col<cols; col++) {
                    i = row+col;
                    r = 255-(i*255/m);
                    g = (i*510/m);
                    b = (i*255/m);
                    if (g>255) g = 510-g;
                                printf "\033[48;2;%d;%d;%dm", r,g,b;
                                          printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
                                          printf "%s\033[0m", substr(s,(col+row)%2+1,1);
                                                }
                                                    printf "\n";
                                                        }
                                                          printf "\n\n";
}'

echo "# text decorations"
echo '\e[1mbold\e[22m'
echo '\e[2mdim\e[22m'
echo '\e[3mitalic\e[23m'
echo '\e[4munderline\e[24m'
echo '\e[4:1mthis is also underline\e[4:0m'
echo '\e[21mdouble underline\e[24m'
echo '\e[4:2mthis is also double underline\e[4:0m'
echo '\e[4:3mcurly underline\e[4:0m'
echo '\e[58;5;10;4mcolored underline\e[59;4:0m'
echo '\e[5mblink\e[25m'
echo '\e[7mreverse\e[27m'
echo '\e[8minvisible\e[28m <- invisible (but copy-pasteable)'
echo '\e[9mstrikethrough\e[29m'
echo '\e[53moverline\e[55m'
echo

echo "# magic string (see https://en.wikipedia.org/wiki/Unicode#Web)"
echo "é Δ Й ק م ๗ あ 叶 葉 말"
echo

echo "# emojis"
echo "😃😱😵"
echo

echo "# right-to-left ('w' symbol should be at right side)"
echo "שרה"
echo

echo "# sixel graphics"
printf '\eP0;0;0q"1;1;64;64#0;2;0;0;0#1;2;100;100;100#1~{wo_!11?@FN^!34~^NB
                                                    @?_ow{~$#0?BFN^!11~}wo_!34?_o{}~^NFB-#1!5~}{o_!12?BF^!25~^NB@??ow{!6~$#0!5?
                                                  @BN^!12~{w_!25?_o{}~~NFB-#1!10~}w_!12?@BN^!15~^NFB@?_w{}!10~$#0!10?@F^!12~}
                                                  {o_!15?_ow{}~^FB@-#1!14~}{o_!11?@BF^!7~^FB??_ow}!15~$#0!14?@BN^!11~}{w_!7?_
                                                  w{~~^NF@-#1!18~}{wo!11?_r^FB@??ow}!20~$#0!18?@BFN!11~^K_w{}~~NF@-#1!23~M!4?
                                                _oWMF@!6?BN^!21~$#0!23?p!4~^Nfpw}!6~{o_-#1!18~^NB@?_ow{}~wo!12?@BFN!17~$#0!
                                              18?_o{}~^NFB@?FN!12~}{wo-#1!13~^NB@??_w{}!9~}{w_!12?BFN^!12~$#0!13?_o{}~~^F
                                            B@!9?@BF^!12~{wo_-#1!8~^NFB@?_w{}!19~{wo_!11?@BN^!8~$#0!8?_ow{}~^FB@!19?BFN
                                          ^!11~}{o_-#1!4~^NB@?_ow{!28~}{o_!12?BF^!4~$#0!4?_o{}~^NFB!28?@BN^!12~{w_-#1
                                        NB@???GM!38NMG!13?@BN$#0?KMNNNF@!38?@F!13NMK-\e\'

___

5
 
 

5 fixes, 5 changes and 5 new additions

6
 
 

17 fixes, 7 changes and 3 additions.

7
5
submitted 3 weeks ago* (last edited 3 weeks ago) by [email protected] to c/[email protected]
 
 

After nearly two years of development and private beta testing1, I’m excited to share that Ghostty 1.0 will be publicly released in December 2024 as an open-source project under the MIT license.

In this blog post, I want to restate the broader goals of the Ghostty project and outline the specific goals for the 1.0 release. I have ambitious plans for Ghostty, but I also want to set clear expectations for what to expect on day one versus what will come in the future.

In short, Ghostty 1.0 aims to be the best drop-in replacement for your current terminal emulator on macOS and Linux. Ghostty will be fast, feature-rich, and have a platform-native GUI while being the most standards-compliant terminal emulator available.

8
 
 

Its main features (many of them unique) over rxvt are:

  • Stores text in Unicode (either UCS-2 or UCS-4).
  • Uses locale-correct input, output and width: as long as your system supports the locale, rxvt-unicode will display correctly.
  • Daemon mode: one daemon can open multiple windows on multiple displays, which improves memory usage and startup time considerably.
  • Embedded perl, for endless customization and improvement opportunities, such as:
    • Tabbed terminal support.
    • Regex-driven customisable selection that can properly select shell arguments, urls etc.
    • Selection-transformation and option popup menus.
    • Automatically transforming the selection once made.
    • Incremental scrollback buffer search.
    • Automatic URL-underlining and launching.
    • Remote pastebin, digital clock, block graphics to ascii filter and whatever you like to implement for yourself.
  • Crash-free. At least I try, but rxvt-unicode certainly crashes much less often than rxvt and its many forks, and reproducible bugs get fixed immediately.
  • Completely flicker-free.
  • Re-wraps long lines instead of splitting or cutting them on resizes.
  • Full combining character support (unlike xterm :).
  • Multiple fonts supported at the same time: No need to choose between nice japanese and ugly latin, or no japanese and nice latin characters :).
  • Supports Xft and core fonts in any combination.
  • Can easily be embedded into other applications.
  • All documentation accessible through manpages.
  • Locale-independent XIM support.
  • Many small improvements, such as improved and corrected terminfo, improved secondary screen modes, italic and bold font support, tinting and shading.
  • Encapsulation of privileged operations in a separate process (improves security).
  • Optimised for local and remote connections.

Homepage

9
 
 

released on Oct 6, 2024

  • Fix flash of white during startup on Microsoft Windows #640.
  • Add DWMWA_CLOAK support on Microsoft Windows.
  • VI Mode now supports search by @orhun.
  • Use max frame per seconds based on the current monitor refresh rate.
  • breaking renderer.max-fps has been changed to renderer.target-fps.
  • Fix background color for underline and beam cursors when using transparent window.
  • Fix IME color for underline and beam cursors.
  • Add default for Style property on Sugarloaf font.

Homepage - Github

10
 
 

How does a terminal emulator work? What are ANSI escape codes? Understanding terminal internals for development, fun and mischief.

The blog post "Anatomy of a Terminal Emulator" on poor.dev provides a broad introduction to terminal emulators, focusing on their components and interactions. It explains the role of the terminal emulator in interpreting data from the shell and displaying it, often using ANSI escape codes for formatting. The post describes the connection between the terminal emulator and the shell through a pseudoterminal (pty), detailing how input and output are handled. It includes Rust code examples to demonstrate these concepts, making it accessible to both new and experienced developers. Additionally, it discusses creating user interfaces in the terminal and touches on responsive design using the SIGWINCH signal.

The summary is created using ChatGPT-4o

11
 
 

tym is a Lua-configurable terminal emulator base on VTE.

  • Lua-configurable: Allows customization using Lua scripts.
  • VTE Based Terminal Emulator: supporting various terminal functionalities provided by VTE
  • Customizable Appearance: Supports theme customization through Lua scripts.
  • Keymap Customization: Ability to set custom keymaps and hooks.
  • D-Bus Communication: Supports interprocess communication using D-Bus.
  • Configuration Options: Various configuration fields for appearance and behavior, such as shell, font, colors, and more.
  • Daemon Mode: Can run as a background process.
  • Hooks and Signals: Offers hooks for various actions and can send/receive D-Bus signals.
  • Scripting Capabilities: Supports executing Lua scripts and handling D-Bus method calls.

The feature list is generated by ChatGPT-4o and edited by me.

Github

12
19
submitted 1 month ago* (last edited 1 month ago) by [email protected] to c/[email protected]
 
 

Julia Evans' blog post "Terminal colours are tricky" discusses the challenges of configuring terminal colors. The key points are:

  • Common Issues: Many users encounter problems like hard-to-read color combinations (e.g., blue on black, bright yellow on white) and inconsistencies across different terminal emulators.

  • ANSI Colors: Terminals typically use 16 ANSI colors, but there's no standard for what these colors look like, leading to variations.

  • Configuration Methods: Users can reconfigure colors either by adjusting settings in their terminal emulator or by using shell scripts. The author prefers shell scripts for consistency across different emulators.

  • Program Compatibility: Issues can arise when programs use 256-color sets or specify their own color schemes, leading to clashes with the terminal's settings.

  • Minimum Contrast Feature: Some terminal emulators have a "minimum contrast" feature that helps ensure text is readable by automatically adjusting colors.

  • Vim Integration: The post highlights the evolution of Vim's color handling, noting that recent versions support 24-bit colors, alleviating some configuration headaches.

  • Recommendations: The author suggests using base16-shell and base16-vim for better theme integration and mentions popular color schemes.

Overall, the post emphasizes the complexities of terminal color configurations and offers insights into potential solutions.

Summary is generated by POE assistant. You can read the original post here.

13
 
 

The blog post "State of the Terminal" by Gregory Anders discusses the evolution of terminal emulators and the challenges they face in adapting to modern needs. It highlights how terminals have remained largely unchanged since the 1970s, still relying on archaic concepts like ASCII control codes and escape sequences. Despite advancements in computing, terminal emulators struggle to keep up with new features like rich text or multimedia support. The author suggests that while the terminal's simplicity is powerful, a reimagining may be needed for it to thrive in modern environments.

You can read the full article here. (20-25 minutes)

Summary generated by ChatGPT-4o

14
 
 

Shell In A Box implements a web server that can export arbitrary command line tools to a web based terminal emulator. This emulator is accessible to any JavaScript and CSS enabled web browser and does not require any additional browser plugins.

Overview

Shell In A Box implements a web server that can export arbitrary command line tools to a web based terminal emulator. This emulator is accessible to any JavaScript and CSS enabled web browser and does not require any additional browser plugins. Most typically, login shells would be exported this way:

shellinaboxd -s /:LOGIN

This command starts a web server at http://localhost:4200 that allows users to login with their username and password and to get access to their login shell.

All client-server communications are encrypted, if SSL/TLS certificates have been installed.

Homepage - Github

15
 
 

Simple terminal emulator for Wayland and X11 with OpenGL rendering and minimal dependencies.

This is roughly alpha quality, expect bugs!

Features

  • Unicode support
  • Text reflow
  • 24-bit colors
  • Dynamic colors
  • All text properties (squiggly underline, blinking, overline etc.)
  • Resizable font
  • Subpixel antialiasing
  • Mouse reporting
  • Scrollback
  • Mouse text selection
  • Clipboard
  • Configurable keybindings
  • Clickable links, OSC 8 links
  • Command history and marks*
  • Terminal image protocol and sixel graphics (experimental)

Limitations

  • UTF8 mode only
  • No Bidi support
  • No font ligatures

Gihub

16
13
submitted 1 month ago* (last edited 1 month ago) by [email protected] to c/[email protected]
 
 

I've been trying to get image previews working in something this week, inside ZelliJ and wasn't able to find anything until a post in a Linux community about Foot.

Foot terminal emulator + ZelliJ + Yazi gives me what I wanted.

Now if only TTY supported SIXEL...

17
 
 

Enhanced terminal for Windows with X11 server, tabbed SSH client, network tools and much more

Home Edition (Free)

  • Full X server and SSH support
  • Remote desktop (RDP, VNC, Xdmcp)
  • Remote terminal (SSH, telnet, rlogin, Mosh)
  • X11-Forwarding
  • Automatic SFTP browser
  • Master password protection
  • Plugins support
  • Portable and installer versions
  • Full documentation
  • Max. 12 sessions
  • Max. 2 SSH tunnels
  • Max. 4 macros
  • Max. 360 seconds for Tftp, Nfs and Cron

Professional Edition (69 USD/49 EURO per person)

  • Every feature from Home Edition +
  • Customize your startup message and logo
  • Modify your profile script
  • Remove unwanted games, screensaver or tools
  • Unlimited number of sessions
  • Unlimited number of tunnels and macros
  • Unlimited run time for network daemons
  • Enhanced security settings
  • 12-months updates included
  • Deployment inside company
  • Lifetime right to use

Homepage

18
 
 

Fluent Terminal by F5 Apps is a terminal emulator that looks strikingly close to the original, yet it comes with a few additional environments. Along with PowerShell and Command Prompt, it also supports WSL, Remote Connect via SSH, and a Quick Launch button.
maketecheasier.com

Features

  • Terminal for PowerShell, CMD, WSL or custom shells
  • Built-in support for SSH and Mosh connections
  • Supports tabs and multiple windows
  • Theming and appearance configuration
  • Import/Export themes
  • Import iTerm themes
  • Fullscreen mode
  • Editable keybindings
  • Search function
  • Configure shell profiles to quickly switch between different shells
  • Explorer context menu integration (Installation script can be found here)

Microsoft App Store - Github

19
 
 

Change log

  • macOS package is now Apple Silicon native
  • Add CoreText font fallback implementation for macOS (#1533)
  • Add Ubuntu-24.04 in github actions (#1460)
  • Add 'early_exit_threshold' config option (#1460)
  • Add AppImage package with Qt6 support (#586)
  • Add ability to customize the indicator statusline through configuration (#687)
  • Add generation of config file from internal state (#1282)
  • Add SGRSAVE and SGRRESTORE VT sequences to save and restore SGR state (They intentionally conflict with XTPUSHSGR and XTPOPSGR)
  • Add extended word selection feature (#1023)
  • Add some more missing vi input motions, such as y$, o$, and many others as initiated by y and o (#1441)
  • Add CPM fallback for the dependencies
  • Add static build
  • Add shell integration for bash shell.
  • Add better bell sound (#1378)
  • Add config entry to configure behaviour on exit from search mode
  • Add config entry to configure font fallback (#225)
  • Add handling of different input commands (#629)
  • Add key bindings disabled indicator for status line (#783)
  • Add support for highlighting matches of the currently selected text area (beyond double click)
  • When switching to normal mode screen will stay in same position (#808)
  • Add customizable per-input-mode default text/background coloring for indicator statusline (#1528)
  • Add option PasteSelection to paste text as a shell input (#1549)
  • Add case-insensitive smart search (#1410)
  • Add OpenBSD support
  • Add new CLI command: contour info config to list missing entries from config file (#1125).
  • Add xdg-terminal-exec support (#1570).
  • Add predefined color palettes (monokai, gruvbox-light/dark, solarized-light/dark, papercolor-light/dark, one-light, one-dark) (#1285).
  • Update of contour.desktop file (#1423)
  • Changed configuration entry values for font_locator down to native and mock only (#1538).
  • Do not export the TERM environment variable on Windows OS (when using ConPTY).
  • Fixes line corruption after resize (#883)
  • Fixes resize of trivial line (#916)
  • Fixes copying of wrapped line
  • Fixes deletion of spaces on resize
  • Fixes forwarding of input while in normal mode (#1468)
  • Fixes OSC-8 link id collision (#1499)
  • Fixed overlap of glyphs for long codepoints (#1349)
  • Fixed too verbose info during ssh session login (#1447)
  • Fixes corruption of sixel image on high resolution (#1049)
  • Fixes bad wording of OS/X to macOS (#1462)
  • Fixes key bindings and search prompt collision (#1472)
  • Fixes CSI 8 ; (COLS) ; (ROWS) t to resize the terminal with respect to High-DPI
  • Fixes screen sampling with multiple monitors (#940)
  • Fixes bell sound in spawned window in same process (#1515)
  • Fixes status line crush (#1511)
  • Fixes application window icon on (KDE) Wayland
  • Fixes missing keymapping for numpad (#1325)
  • Improves handling of constant bell sound spawning
  • Fixes yW (yank WORD) not working properly in normal mode (#1448)
  • Fixes key mapping Shift+Tab (#1578)

released: 2024/09/18

20
10
submitted 1 month ago* (last edited 1 month ago) by [email protected] to c/[email protected]
 
 

A terminal for iOS, with multiple windows

  • Unix-like shell environment (zsh/dash)
  • Supports Python, Lua, JavaScript, and WebAssembly (Wasm) scripting
  • Access to local file system and file management commands
  • Code editing with vim and ed
  • Network tools: curl, ping, nslookup
  • SSH for remote server access and scp for secure file transfers
  • Full Python 3 environment and JavaScript with Node.js-like functionality
  • Package management via pip and npm
  • LaTeX/TeX support for PDF creation and manipulation
  • Web access tools (js, fetch)
  • Built-in man pages and help documentation
  • iOS Shortcuts integration for automation
  • Split View/Slide Over multitasking support on iPad
  • Privacy: all code/data stays on-device unless configured otherwise
  • Free and open source

N.B. feature set summarized by ChatGPT

App Store - Github

21
 
 

Features

  • A terminal emulator running a Linux shell using Alpine Linux.
  • Install and run Linux tools directly on iOS.
  • Basic file system access and package manager (apk).
  • Available on Apple Store and AltStore
  • Free and open source

Homepage - Github

22
 
 

Termux - a terminal emulator application for Android OS extendible by variety of packages.

Feature

  1. Linux Environment on Android
  2. APT Package Management
  3. Bash and Zsh Shell Support
  4. Access to Linux Utilities
  5. Programming Languages Support
  6. SSH Client and Server
  7. File System Access
  8. Git Version Control
  9. Python and Jupyter Notebooks
  10. Customizable Environment
  11. Text Editors (Nano, Vim, Emacs)
  12. Termux API Access
  13. VNC Support
  14. Containerization with Proot
  15. Python and Ruby-based Automation
  16. Compiling Native Code
  17. Networking Tools
  18. Wget and Curl for Downloads
  19. Multi-session Support
  20. Terminal Multiplexing (Tmux)
  21. F-Droid and Google Play Availability
  22. Secure Environment
  23. Persistent Storage
  24. Cross-Platform Portability
  25. Clipboard Integration

Homepage - Github

N.B. Feature set is from ChatGPT-4o

23
4
submitted 2 months ago* (last edited 2 months ago) by [email protected] to c/[email protected]
 
 

Cmder is a software package created out of pure frustration over absence of usable console emulator on Windows. It is based on ConEmu with major config overhaul, comes with a Monokai color scheme, amazing clink (further enhanced by clink-completions) and a custom prompt layout.

The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for USB Sticks or cloud storage. So you can carry your console, aliases and binaries (like wget, curl and git) with you anywhere.

Homepage - Github

24
 
 

The goal of the project is to create a beautiful and extensible experience for command-line interface users, built on open web standards. In the beginning, our focus will be primarily around speed, stability and the development of the correct API for extension authors.

In the future, we anticipate the community will come up with innovative additions to enhance what could be the simplest, most powerful and well-tested interface for productivity.

  • based on xterm.js
  • web based and cross platform
  • plugins support
  • theme support
  • hotkey support

Homepage - Github

25
 
 

Tabby (formerly Terminus) is a highly configurable terminal emulator, SSH and serial client for Windows 10, macOS and Linux

  • Integrated SSH and Telnet client and connection manager
  • Integrated serial terminal
  • Theming and color schemes
  • Fully configurable shortcuts and multi-chord shortcuts
  • Split panes
  • Remembers your tabs
  • PowerShell (and PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder and CMD support
  • Direct file transfer from/to SSH sessions via Zmodem
  • Full Unicode support including double-width characters
  • Doesn't choke on fast-flowing outputs
  • Proper shell experience on Windows including tab completion (via Clink)
  • Integrated encrypted container for SSH secrets and configuration
  • SSH, SFTP and Telnet client available as a web app (also self-hosted).

Homepage - Github

view more: next ›