Run any GUI app in the terminal.
GitHub Repo

Run any GUI app in the terminal.

@the_ospsPost Author

Project Description

View on GitHub

Run Any GUI App Right in Your Terminal

Ever found yourself context-switching between your terminal and a bunch of GUI windows? Maybe you're SSH'd into a remote machine and need to quickly check a graph, or you just prefer the keyboard-centric flow of the terminal but still need visual tools. What if you could launch a browser, an image viewer, or even a code editor without ever leaving your shell?

A new tool called term.everything is making this possible. It lets you run graphical applications and have their output rendered directly in your terminal. It’s one of those ideas that feels obvious in hindsight but is pretty wild to see in action.

What It Does

In simple terms, term.everything is a tool that acts as a middleman. You tell it to launch a GUI application—like Firefox, GIMP, or LibreOffice—and instead of opening in a separate window on your desktop, it captures the application's graphical output, converts it to ANSI/Unicode characters, and streams it back to your terminal. It effectively turns your terminal emulator into a minimal, text-based desktop environment.

Why It’s Cool

The immediate reaction might be "why would I want a pixelated version of a GUI app?" but the use cases are surprisingly compelling.

  • Remote Development & Debugging: This is a game-changer for working on headless remote servers or via SSH. You can run a GUI-based debugger or profiling tool on a remote machine and interact with it directly in your local terminal session. No more complicated X11 forwarding setups.
  • Terminal-Centric Workflows: For developers who live in the terminal, this minimizes context switching. You can keep your focus on one window instead of alt-tabbing around your desktop.
  • It’s Just Clever: The implementation is technically impressive. It’s not doing simple screenshots; it’s providing a real, interactive view of the application. The project leverages Xvfb (a virtual framebuffer) to run the app headlessly and then uses a custom renderer to translate the graphical output for the terminal.

How to Try It

Ready to give it a spin? The project is open source on GitHub.

  1. Clone the repo:

    git clone https://github.com/mmulet/term.everything
    cd term.everything
    
  2. The project includes a Dockerfile, which is the easiest way to get a working environment with all dependencies. Build the image:

    docker build -t term.everything .
    
  3. Run the container, making sure to forward the TERM environment variable and disable TTY allocation for proper rendering:

    docker run -e TERM=$TERM --rm -it term.everything
    

Once inside the container, you can start experimenting with commands. The repo's README has examples, but the basic syntax is term.everything [your-command]. Try launching xeyes or xclock to see the magic happen.

Final Thoughts

Is term.everything going to replace your desktop? Absolutely not, and it’s not meant to. The experience is naturally a bit slower and lower fidelity than a native window. But as a practical tool for specific scenarios—especially remote work—it’s incredibly useful. It’s one of those projects that pushes the boundaries of what we think a terminal can do, and that’s always exciting to see. It’s definitely worth a few minutes of your time to clone it and run xeyes just for the novelty alone.

Found this interesting? Follow @githubprojects for more cool projects from the community.

Back to Projects
Project ID: 1966252912759501136Last updated: September 11, 2025 at 09:30 PM