• nick__m 12 hours ago

    That's awesomely useless, it straddles the line between programming and art.

    I am sure it was a great and fun learning experience.

    Well done !

    • GTP 9 hours ago

      Well, not 100% useless: I can see its use for applications running inside Docker containers. Yes, there are ways to have GUI applications rendered from the inside of a container, but maybe this is easier than getting the Dockerfile right.

      EDIT: nevermind, doing this with Docker seems much easier than I expected [0]. I'll try it tomorrow, I'm curious to see if the proposed solution works on Windows as well.

      [0] https://medium.com/@priyamsanodiya340/running-gui-applicatio...

      • actsasbuffoon 12 hours ago

        Yeah, I can’t explain why this project makes me so happy because I struggle to think of any time where I’d need this, but it puts a big, dumb grin on my face.

        • dmayle 7 hours ago

          Definitely not useless!

          I run a ttyd server to get terminal over https, and I have used carbonyl over that to get work done. That's limited to a web browser (to get access to resources not exposed via the public internet), so having full GUI support is very useful

        • shonku 2 hours ago

          Absolutely love the energy here. You really terminally outdid yourself here. Consider me officially shell-shocked.

          • reactordev 10 hours ago

            This is one of those things that pushes the boundaries to nowhere, yet everywhere at the same time whilst being incredibly awesome and something you can show off ad infinitum. Outstanding! Not sure how we’ll implement vdi now! Gives ghost in the shell a whole new meaning.

            But can it run doom?

            • mmulet 8 hours ago

              Ask and ye shall receive: Running doom: https://github.com/mmulet/term.everything/blob/main/resource...

              I had the change a couple of line to make it work because term.everything takes input only from stdin (this way it works of ssh and is pretty broadly compatible across terminals).

              1. I had to remap another key to the control key (which is usually used to send signals like sigterm)

              2. Then I had to change the timeout in which keys are pressed. When using stdin, you get a keydown event, but you don't get a key up event (ever). So I have to guess when you want to key up. Most of the time, I can send key up right away. But, it looks like doom has some sort of key debounce, so I had to wait 50-100 ms for keyup. Then there is the problem of if you want to walk forward in games you usually hold down up arrow, but now you have to rapidly press it! Not ideal, but it does work, and it it playable.

              • anthk 9 hours ago

                aaquake ran under ASCII terminals before this ever existed.

              • roughly 2 hours ago

                This is the exact kind of unhinged that belongs on HN. Naturally, it's written in typescript.

                • marcodiego 8 hours ago

                  This is interesting, but there was something that was even more impressive many years ago: a GTK theme that rendered all decoration and widgets using text chars and a GDK backend that rendered to text. Combine both and you could run any GTK app on a terminal with legible text and a beautiful TUI.

                  http://zemljanka.sourceforge.net/cursed/screenshots/

                • tri2820 a day ago

                  This is such a cool project. Personally, I think there are so many interesting use cases that can be built on top of Wayland, like https://github.com/udevbe/greenfield and this

                  • warwren 11 hours ago

                    I remember the carbonyl project to run chromium in the terminal that got me really excited (https://github.com/fathyb/carbonyl) but it eventually became unmaintained.

                    This is pretty much that but supercharged. Definitely really cool to see. Good work!

                    • Guestmodinfo 5 hours ago

                      I like it. I always want to run things in a terminal. Because 1. I used to think that's more secure than X 2. I always seem to get better audio of the videos that I run in tty and my mouse is much smoother in the tty. Yes I can move mouse in tty.

                      Also someone mentioned a cool project like carbonyl. They also mentioned brow.sh which I have heard but they described it in detail so that's another plus when term.everything kind of projects come they drag other cool projects to he foreground

                      Point 1 of mine may be pure superstition.

                      How term.everything works on tty I don't know maybe it will be horriblebecause of the resolution thing but still it's a nice direction.

                      • user3939382 3 hours ago

                        I've been working on the same thing but with a totally different approach. Good work! Keep it up.

                        • fzorb 13 hours ago

                          I remember seeing something similar named Carbonyl a while back. What a coincidence lol.

                          https://github.com/fathyb/carbonyl

                          P.S. This is very cool btw.

                          • patcon 12 hours ago

                            I truly appreciate the relational thinking and pointing out other projects that might interest ppl who are excited about this :) Having said that, term.everything seems to be much larger in scope than a browser, unless I'm mistaken

                            • dodslaser 12 hours ago

                              Awrit is also similar.

                              https://github.com/chase/awrit

                            • IshKebab 7 hours ago

                              I started working on this with the Kitty image protocol, but unfortunately that protocol is really unsuited to this sort of thing. Performance will be awful.

                              The protocol is sort of:

                              1. I'd like you to display this PNG. Here's the data: ...

                              2. Ok I've got the data.

                              3. Ok now display it at this position.

                              4. Ok now remove it from the screen.

                              We're talking motion-PNG here. Just think about how awful that is.

                              I wish someone would add some kind of AV1-over-terminal protocol. That would be actually useful.

                              The other thing I was going to try was a custom GUI that used normal terminal text for the text of widgets, but Kitty images for the rest. It's quite a hard problem though.

                              • f33d5173 2 hours ago

                                What you're describing is a graphical shell. If you want it over the network, we have a protocol for that, it's called X. Misusing a terminal for this is fundamentally pointless.

                                • ranger_danger 7 hours ago
                                • tracker1 12 hours ago

                                  This is pretty cool, I can see this being useful when I need to run a one-off remotely. Not sure about attaching a running program then detaching again, or mirroring... I wouldn't mind being able to SSH to my desktop and manipulate say the running Discord client, or similar.

                                  Another similar thing that I'd been meaning to look into is the RDP remote apps stuff.

                                  • anthk 9 hours ago

                                    Just use a CLI discord client, or fire up an IRC client against some Bitlbee server.

                                  • Forgret 2 days ago

                                    I wish you success in further development, don't stop!

                                    • mmulet 2 days ago

                                      Thanks!

                                    • kposehn 11 hours ago

                                      Wow. I love this! I actually have a specific, esoteric use for this: VSCode on iPad

                                      Hopefully supports iPadOS one day.

                                      • lights0123 9 hours ago

                                        I tend to use https://github.com/coder/code-server#code-server for my remote development needs.

                                        • chamomeal 2 hours ago

                                          Oohh wow you’re right, that’s crazy!!

                                          • mmulet 10 hours ago

                                            I know there are ssh clients for iPad. So it should work. I’m going to try it right now!

                                          • ugh123 10 hours ago

                                            This could be used on build machines I own where I occasionally need to interact with the desktop and/or browser on the machine and vnc or other desktop sharing is impractical or exposes security issues.

                                            • teknopaul 9 hours ago

                                              Someone needs to make bash_completion really trivial to write.

                                              It isn't: and even copy paste is hard. Clever people write apps that are bash_completion friendly.

                                              If first main arg is bash friendly

                                              mycli myfunc ...

                                              Myour whole cliapp becomes "discoverable" with one tab keystroke that you probably already typed hopefully anyway.

                                              Never need to advertise a new feature.

                                              Deprecate by removing from completion without breaking scripts.

                                              Then _everything_ already is in your cli, because someone already did it.

                                              • mathfailure 5 hours ago

                                                Does running something via Term.everything consume more or less resources, than running that something directly?

                                                • mmulet 5 hours ago

                                                  Depends on what resolution your terminal is set to. (Not the resolution of the GUI app you use, just the resolution you display it). At low resolution (640x480) it’s pretty performant, but at 4K I can hear my fans going full blast.

                                                • beckthompson 12 hours ago

                                                  Super cool! I also really am glad you added videos and examples in your github repo its nice to get an overview

                                                  • rc_kas 4 hours ago

                                                    WHAT THE FUACK!? You internet people are genius sometimes

                                                    • serbuvlad 7 hours ago

                                                      We got Wayland over vt100 escape codes over ssh over tcp before we got a headless Wayland VNC/RDP solution.

                                                      • watersb 8 hours ago

                                                        I love this.

                                                        I would go for weeks just in a large framebuffer terminal, no GUI running. And I still run some servers that way.

                                                        Terminally insanely great!

                                                        • xiphias2 11 hours ago

                                                          - Can you run a compositor inside a compositor? I'd love to just ssh to a server and run hyprland

                                                          - doesTerm.everything run inside tmux with automatic window resizing? I guess not, but it would be cool

                                                          • mmulet 8 hours ago

                                                            1. Yes, but it depends on your compositor because your compositor needs to be able to run as a nested Wayland client. I think there is support for this in wlroots based Wayland compositors, but I'm not sure if hyperland supports it.

                                                            2. I think it will work, but I haven't tried. I redraw the terminal window every time the "termed" window updates. So, if you are playing a video for example and you dynamically resize the window, it should update the size automatically. If you are viewing a static window it might not.

                                                          • christophilus 12 hours ago

                                                            Wow. This is amazing. I have started running a lot of stuff in containers by default for a whole host of reasons, and this may make my workflow even better on the occasions when I want to run a graphical app.

                                                            • maxglute 11 hours ago

                                                              Stupid, love it. Occasionally I'll use shaderglass ascii shader on oled screen to play videos with pixel ratio that makes UI unreadable, but it's charming experience.

                                                              • lazyfanatic42 12 hours ago

                                                                It is funny but this is what I wished things did when I first started using Linux back in the day. '98-'99 timeframe, then I "learned" better that there was Xorg/X11,etc.

                                                                • impoppy 14 hours ago

                                                                  Can it run Doom?

                                                                • chaps 13 hours ago

                                                                  Neat! I did a similar project many years ago just to see if I could with ANSI color stuff to animate video in my terminal. Worked really well, but it looked like absolute butt (unlike this project).

                                                                  Nicely done!

                                                                  • nixpulvis 12 hours ago

                                                                    This is one of those things I'm going to keep in my back pocket for a very specific time I need it for a weird reason.

                                                                    I love it.

                                                                    • alkh 14 hours ago

                                                                      This is so cool, thanks for sharing! Having this on a Mac would be great but I understand that this might be a huge undertaking :)

                                                                      • mmulet 14 hours ago

                                                                        I definitely want to make a macOS version, but I haven’t even looked into it yet. So, I don’t know the level of hacking required. It definitely doesn’t sound like anything Apple would have an api for, so it would probably be a vnc or accessibility api trick.

                                                                      • Koshkin 9 hours ago

                                                                        > in the terminal

                                                                        A note to myself: this won't work in the text mode.

                                                                        • SkidanovAlex 9 hours ago

                                                                          Isn't the first example (with the cartoon) in text mode?

                                                                        • igorhvr 5 hours ago

                                                                          This is so cool - thank you! I have a very (ahem) useful purpose for this: I use a command line application that calls back to a browser during authentication and that alone prevented me from doing what I needed/wanted from an ssh terminal... I will now happily laugh my ass off as it launches firefox from inside my terminal every time I use it.

                                                                          • riddley 10 hours ago

                                                                            Do I need to be using wayland to try this? I'm still on x11.

                                                                            • mmulet 10 hours ago

                                                                              No you do not. It works on x11 and Wayland host systems. I built the Wayland compositor from scratch and it does not have any dependencies on libwayland. So, you don’t have to install Wayland at all.

                                                                            • xarope 6 hours ago

                                                                              one is required to ask about Gwerm, and why he is not moving... :-P

                                                                              • mmulet 5 hours ago

                                                                                But really, in the last 24 hours term.everything has accumulated 1500 stars, 600 upvotes on HN, 185 upvotes on lobsters (the highest upvoted `show` tag of all time), but despite all of that, you, my friend, are the first to ask about Gwerm.

                                                                                That means you win the secret prize! A custom Gwerm T-shirt! I’ll send the details to the Gmail you have linked to your account.

                                                                                • mmulet 6 hours ago

                                                                                  He is doing okay. Thanks for asking.

                                                                                • didip 13 hours ago

                                                                                  I was about to asked about X11, but ended up learning about Wayland.

                                                                                  Thanks for sharing!

                                                                                  • lxe 12 hours ago

                                                                                    This is absolutely unhinged and I love everything about it

                                                                                    • OhMeadhbh 11 hours ago

                                                                                      This will be very useful when it exits beta.

                                                                                      • NewUser49 12 hours ago

                                                                                        Outstanding project! Keep it up. If it ever gets renamed, consider - Terminal.All, T.All, or TAll.

                                                                                        • FergusArgyll 11 hours ago

                                                                                          Termin-all was right there

                                                                                        • komali2 11 hours ago

                                                                                          This is an incredibly cool project and you should be proud for building it.

                                                                                          • pancsta 7 hours ago

                                                                                            Another custom wayland compositor, this one not written in a scripting language.

                                                                                            https://github.com/wayland-transpositor/wprs

                                                                                            • quotemstr 12 hours ago

                                                                                              Great job! If you tug on this thread long and hard enough, you develop this enough and you get RDP (which you can try via xrdp, GNOME's remoting thing, etc.).

                                                                                              The reason the terminal ecosystem doesn't get much more sophisticated over time isn't just the herd-of-cats fragmentation, but also evaporative cooling: people who do really cool things with terminal come to realize that what they really want is remote desktop (perhaps rootless) and leave terminal stuff as-is while they invest in more sophisticated systems instead.

                                                                                              • rochak 11 hours ago

                                                                                                Wow this is incredible

                                                                                                • QuiCasseRien 10 hours ago

                                                                                                  insane ! but i still wonder for the use case ^^

                                                                                                  • toomim 2 hours ago

                                                                                                    A replacement for X11 window forwarding which has been lost with wayland.

                                                                                                  • howyesno 10 hours ago

                                                                                                    "I feel like every single day I hear about another terminal file viewer. I say, stop making terminal file viewers because you can just use the file viewer you already have! In your terminal!" LMAO

                                                                                                    • babypuncher 11 hours ago

                                                                                                      Combine this with desktop-tui[1] and say goodbye to graphical desktop managers forever!

                                                                                                      1: https://github.com/Julien-cpsn/desktop-tui

                                                                                                      • sreenathmenon 12 hours ago

                                                                                                        Love it :)

                                                                                                        • mmulet 8 hours ago

                                                                                                          <3

                                                                                                        • dartharva 12 hours ago

                                                                                                          Love it!

                                                                                                          • mmulet 8 hours ago

                                                                                                            <3

                                                                                                          • 20after4 12 hours ago

                                                                                                            You could use a terminal graphics protocol to render real graphics. But there is already waypipe¹ to do that kind of remoting. Without using an actual terminal.

                                                                                                            1. https://gitlab.freedesktop.org/mstoeckl/waypipe

                                                                                                            • vidarh 12 hours ago

                                                                                                              > You could use a terminal graphics protocol to render real graphics.

                                                                                                              It already does that[1].

                                                                                                              > But there is already waypipe¹ to do that kind of remoting.

                                                                                                              That requires Wayland on the client side, doesn't it? I don't expect this to be super-practical anyway, but it's fun to see how far you can push a terminal.

                                                                                                              [1] "If your terminal supports images (like kitty or iterm2) you can render windows at full resolution (performance may degrade)."