Loading video...

Video Failed to Load

Go Home

OpenTUI Keymap is a host agnostic key/cmd engine for DOM like apps. It allows extreme customisation of a generic core, from key stroke syntax parsing to to command resolution and dispatch behaviour. It composes layers of bindings and commands into a single adaptive dispatch model. Demo link in the...

91,447 views • 5 months ago •via X (Twitter)

35 Comments

kmdr's profile picture
kmdr5 months ago

Here is the HTML adapter demo, which is also in the OpenTUI repository along with demos for core/react/solid. Full docs are on the opentui website.

Igor bedesqui's profile picture
Igor bedesqui5 months ago

what the fuck why are you guys casually building some of the coolest primitives??? like, stop making me want to build for the terminal wtfff

kmdr's profile picture
kmdr5 months ago

Come to the terminal side harhar!

Ola's profile picture
Ola5 months ago

Attention to detail on another level! This is sick!

Roman's profile picture
Roman5 months ago

Art!

Ben Vinegar's profile picture
Ben Vinegar1 month ago

this ever get released? would love to use it

kmdr's profile picture
kmdr1 month ago

yep it's here and maintained, used by opencode as well

Anthony Shew's profile picture
Anthony Shew5 months ago

wen rust bindings for opentui Hint: The right answer is “wen u make them nerd”

kmdr's profile picture
kmdr5 months ago

We'll just rewrite the native core in rust anyway.

Anthony Shew's profile picture
Anthony Shew5 months ago

Like actually orrrrrr…? I’m trying to rewrite the Turborepo TUI, what’s a young man to do?

kmdr's profile picture
kmdr5 months ago

Eventually. Opentui has a proper CLI mode now, courtesy of @simonklee. Many other improvements on the way over the coming weeks.

Tanay Karnik's profile picture
Tanay Karnik5 months ago

this looks amazing. can we implement app-level modes with this too? like insert/normal? or do we have keep that state separately and manually update the keymapper state? im on my phone, will take a look at the source in a bit.

Shivaraj's profile picture
Shivaraj5 months ago

Will this work on opentui/core ?

kmdr's profile picture
kmdr5 months ago

The demo in the video is core only. Works with opentui core, solid, and react.

Shivaraj's profile picture
Shivaraj5 months ago

Lfg I was looking for exactly this tbh. Been building this from weeks and was running outta keybinds... seems like this is a perfect fit!!

Alan North's profile picture
Alan North5 months ago

Not exactly the same but I've been working on this issue for a while. Interesting to see a different approach though.

kmdr's profile picture
kmdr5 months ago

Cool stuff, I like that it can also bind mouse events.

Berend de Boer's profile picture
Berend de Boer5 months ago

We'll know if it is really extensible if I can make Emacs keystrokes work 🙂

kmdr's profile picture
kmdr5 months ago

I have experimented with that, there is a sample addon to for emacs chords. It's far from complete, but should be possible to do everything needed to make it complete as addon.

Rafael Mendiola's profile picture
Rafael Mendiola5 months ago

As someone who's also coming from Vim and has implemented keyboard shortcuts in my apps, this is lovely.

Alexi | raycast fan ⭕'s profile picture
Alexi | raycast fan ⭕5 months ago

love the animation! 🖤

lifcc's profile picture
lifcc5 months ago

Plugin layer composition is clean in theory — two plugins shadowing the same key is where dispatch state matters. Claude Code runs every matched hook and you trade it for double-firing footguns.

Kirill Kirillov's profile picture
Kirill Kirillov5 months ago

track name?

kmdr's profile picture
kmdr5 months ago

Atlas - Camo & Krooked & Christian Kolonovits - Red Bull Symphonic Johann Strauss 2025 Edition

Kirill Kirillov's profile picture
Kirill Kirillov5 months ago

ah, it was familiar somehow. loved that show. thanks

Rey Neill's profile picture
Rey Neill5 months ago

Cool

Mayfield Reynolds's profile picture
Mayfield Reynolds5 months ago

very cool! bug report: if you press e.g. "space h" while typing in a text box, it triggers the global binding. hopefully that's an easy fix since that's plagued me in opentui before

kmdr's profile picture
kmdr5 months ago

I actually kept it like that in the demo to test and show fall through when a keystroke cancels a pending sequence, so pressing space twice inserts the space. I can see the confusion though. A production app would not do that and it can be easily controlled.

Mayfield Reynolds's profile picture
Mayfield Reynolds5 months ago

Ahh gotcha! Ideally there'd be a different way to showcase that since the spacebar acting normally in a text box is a pretty fundamental interaction. Glad to hear it's easily controlled though!

Noam Lewis's profile picture
Noam Lewis5 months ago

How do you deal with so many different terminals eating random keys? Unified user experience across all that wild west?

Guillermo Rauch's profile picture
Guillermo Rauch5 months ago

very cool of you my guy

Roger's profile picture
Roger5 months ago

wen rust?

ieattableware ',:^)'s profile picture
ieattableware ',:^)5 months ago

I wonder how do use graphics protocol in open tui? Didn't see any example on GitHub. Did you use sixel or other technology in this demo?

kmdr's profile picture
kmdr5 months ago

The first part of the demo is html in the browser, the second part only uses the renderable tree and some block chars and bg/fg colors, no actual graphics involved.

Glometron's profile picture
Glometron5 months ago

Nice colors

Related Videos

📢 LIES!! Donald Trump Has NO Plans To Leave The White House!! The White House Ballroom is a command center for a president who is trying to have dictatorial power. A hardened command center that expands several stories into the ground, and is impenetrable from the outside world including ballistic and drone strikes, is exactly the type of structure that could guarantee his "rule of law" indefinitely. Giving Trump the White House Ballroom is absolutely the last key to establishing long-term power for an authoritarian dictatorial rulership. From the White House Command Center, Trump will be able to issue strikes around the world with executive authority and no checks and balances. Through the building of this infrastructure he will be able to create a new power dynamic that has never been seen in this country... For the first time ever, Donald Trump will be able to use a domestic drone force against the population of the American people. This ballroom is the command center for those new operations. I am the first person in the world to call this out. Charlie Kirk was the first person to be assassinated by a drone on US soil. I have been warning people for the last 7 months that they are building a new domestic apparatus than none of us can defeat. This is why Israel is helping Erika Kirk and Donald Trump. This is why Donald Trump gave Erika Kirk a federal appointment to the USAF BoV. This is why Lindsey Graham is speaking on behalf of Israel. This is Israel's ballroom. Or should we say Israel's Baal Room? The smallest part at the top, will be dual purpose for ceremonial practices... i.e. a temple. The command center underneath will control all of the federally owned and distributed AI, crypto, digital IDs, and autonomous drones from the most secure and sophisticated infrastructure meant to protect the people who are trying to bring down the United States of America. WE ARE BEING SUBVERTED. I keep screaming this from the top of my lungs! No one is listening! If you are reading this, be that person to tell other people what is happening! I worked next to General Abrams about 23 years ago. I was a facilitator for TS calls around the globe with all of the major players and installations. And because I worked for General Abrams, we were the lead installation in the talks. Guess what we talked about... Drones. That was shortly after 9/11. There's so much more that I don't have the space to write in this post, but just know that I will be releasing more over the course of the upcoming weeks. Donald Trump has no plans on leaving the White House. He is making it his home. Donald Trump does not travel outside of his properties if he does not have to. No one will ever tell you that about him. Donald Trump is VERY PRIVATE by nature. If the environment is not tailored to his fitting he does not want to be there and will avoid it. Why do you think he spends so much time in Mar-A-Lago instead of the White House? This is a deep insecurity that is always been inside of Donald. He never fit in, but he always knew how to build spaces to make you come to him. And all of these spaces have made him feel secure because they branded his identity. He is doing exactly the same thing with the White House. This is a command center for Israel, Donald Trump, Erika Kirk, and anyone that decides to help them take down the United States of America. The White House Command Center is literally treason. If this command center is built we will lose our Constitutional rights overnight. If this command center is built, Donald Trump will not leave office. If this command center is built, the Republicans know that they can suspend the 2028 elections. They know that they are losing the information battle, and this command center is their way to solidify their power without needing elections. ⚠️ Lindsey Graham is advocating for it on behalf of Israel, & Donald Trump already guaranteed the end of voting...

WeAreNotGoingToMars

26,402 views • 5 months ago

So...I just killed my software HYROS... (+$20k contest) And the team at HYROS and I are damn proud of it. For the last year we optimized HYROS's tracking to be vibe coded with. Today we released a FULL app powered by our data that you can add or build ANY tracking feature into in a few prompts. The app has the full functionality of HYROS EXCEPT it's fully yours to vibe build on top of. The MD/way it's built is specifically so LLMs like Claude can easily add/remove/create any tracking or attribution feature you want with zero coding or dev experience. We handle the hard part : The tracking, data management, infrastructure. We then power YOUR custom app with our data/tracking. You get to use/construct/apply the however you damn please whenever you damn well want. There's no point to using any tracking software anymore just for its UI features. You can have a full suite of features CUSTOM to you on command today fully powered by the most accurate tracking online (Hyros AI swarm data) It's so flexible you could even build your own affiliate tracking platform on top of it if you wanted. The era of logging into one-size-fits-all analytics apps and waiting months for features is dead. Now every HYROS user can have an attribution system and models that are 1-to-1 custom to them, with any feature they want, in a matter of minutes. FYI we are doing a $20k contest/giveaway for whoever builds the coolest apps and features with this, in our HYROS Skool group. Just Google "HYROS Skool" to find it. Links to set up docs/our git for this app are there as well.

Alex Becker 🍊🏆🥇

144,052 views • 12 days ago

🧵1/ I’m back from a short trip on a social network with photographs and videos from Gaza, with some brief personal conclusions. First, it is quite clear that there are those in Gaza who know how to make extensive use of the networks and social media for the purposes of emotional extortion and also false propaganda, exactly like they live streamed the October 7 massacre and somehow turned it into “justified resistance”, they use quite a few Western buzzwords such as “genocide”, “occupation”, “oppression” and “Zionism”- and this is the simplest way to distinguish between Hamas propaganda posts and authentic people in Gaza, whom I’ve known all my life, who use much simpler words and not this indoctrinated manipulation bullshit. I was looking for THESE authentic people - the real voices. And I think I found a few. So first of all, what do I think there is NOT happening in Gaza? There is no genocide and no famine. Yes, there is quite a lot of suffering, shortages in some places and lack of decent shelter etc. And there’s a lot of cynical exploitation of it for propaganda purposes. I’m saying it because you can see children are getting payed for it, you can see the absolute control of distribution and you can see how basic needs and the way out is blocked with money- Israel is not taking money for any of it, the West is sending free aid, so the money is demanded by those who want to control the suffering and use it. You should know, that before the war - there was already quite a lot of very poor population in Gaza, but now the economic difficulty has greatly increased for two main reasons: one, the war damaged many sources of livelihood and the second - a major source of livelihood was working in Israel and this option was closed for a long time now, since October 7, and is now much less operational. So in fact the main source of income is donations and funding from Hamas for control purposes of course. This is how, among other things, Hamas uses the population to "work for them", and also to smile or cry for the cameras on demand. Now on the issue of claimed famine- famine is when there’s NO food and water, enough for the population. As I said, my personal conclusion is that there is no shortage of food and water in Gaza at all. The problem is that the food is not distributed equally, it is controlled by those who are powerful (usually Hamas operatives) and then sold at high costs to the population without them having sources of livelihood. Food that should be distributed for #free is actually sold at a high price, the shelter tents are also paid for and the exit from Gaza is particularly expensive (5000$ that are paid to the transporters). There are quite a few who refer to Gaza as a "prison" but Gaza is not a prison, Hamas has simply created a situation where it is very expensive to leave it - and thus the poor and the new poor are completely dependent on Hamas and other clans (Hamulas) in everything to do with food, shelter and exit, and they play with them as pawns. If Gaza is a prison - then it’s because Hamas are imprisoning it. All the suffering in Gaza started because of #Hamas it continues and increases because of #Hamas, but the main point is that #Hamas is also the one factor that can stop it. If Hamas surrendered unconditionally and released the Israeli hostages, as done in any war in which you are forced to admit defeat - they would truly liberate Palestine. Remember- this is a war that #Hamas started, a war that on Oct. 7 was celebrated in the streets of Gaza. But #Hamas prefers to keep the Palestinians captive so that it can showcase suffering (which they create) and use it as a tool for financial donations, manipulation of the West and a messianic jihadist war that will never end for them. If the West doesn’t wake up to this ongoing manipulation- they will never help the Palestinians in Gaza or in general, and they will bring this jihadist chaos to their doorstep From Gaza >

Gal G., Adv 🇮🇱

2,695,827 views • 2 years ago

Rick Rubin tells Andrew Huberman how he deals with creative or writer’s block. He treats his work like a diary entry (and doesn’t worry about internal or external judgment): ➡️ “What's the cause of the block? The block is usually something that's either personal ("I'm not good enough") or it can be a confidence issue ("I don't have anything to say") or it could be...thinking about someone else ("nobody's going to like what I make"). Do you know what I'm saying? So, it's either fear of self-judgment or external judgment. If you're making something with a freedom of "this is something I'm making for myself for now", that is all [you have to do]. It is a diary entry. Everything I make is a diary entry. The beauty of a diary entry is that I can write my diary entry and you can't tell me that my diary entry wasn't good enough. Or that [the diary entry] is not what I experienced. Of course it's what I experienced: I'm writing a personal diary for myself and no one else can judge if it is my experience of my life. Everything we make can be that: a personal reflection of who we are in that moment of time. It doesn't have to be the greatest you could ever do. It doesn't have to have any expectation that it's going to change the world. It doesn't have to sell a certain number of copies for any reason. It doesn't have any of those things at all. It is "I'm making this thing for me and I want to do it to the best of my ability and to where I feel good about it". [The work] is honest of where I'm at and if you're living in this world of just being honest to where you're at, there's nothing blocking you. There are no blocks. The blocks are all based on dealing with a different force or a different perception that is made up.” ⬅️

Trung Phan

1,652,628 views • 2 years ago

Why did so many languages copy async/await from C#? Anders Hejlsberg(Anders Hejlsberg) - creator of TypeScript, C# & Turbo Pascal - on what they got right with the design: #1 - async/await was designed to solve a common problem in the event-loop model: "A lot of languages are built around cooperative multitasking in the sense that they have an event loop that sits and dispatches events. Then you handle the event and then you yield back to the event handler loop. And it all runs in a single thread cooperatively. The problem with that is if you then want to do some long running work: how do I stop in the middle of this piece of long running work and yield back to the event loop cooperatively? And then when my result is ready, I can come back and continue executing here." #2 - state machines are the solution, but hard to build: "Well, in order to do that in an inverted architecture like that, you have to build a state machine. State machines are notoriously hard for people to implement because you've got to move all of your state off of the stack into objects. And then you have this big case statement that envelopes your entire logic. It's a nightmare to figure out. But, the transformation from serially executing code into a state machine, its continuation-passing-style translation is actually one that you can do in a machine-based fashion." #3 - compilers are good at writing state machines: "You can have the compiler write the state machine if you introduce syntax that allows you to indicate where you want to yield. And that's what await is. Await is basically saying, I want to yield here, and I want to yield this promise, and then when the promise completes, I want you to come back here and continue executing. Then the compiler writes a state machine around it and it actually turns it into this big switch statement and moves all of the state that survives across the await into something that's heap allocated. So it can be brought back. And doing all of that work is something that compilers are great at. And so that was sort of the idea that we have this new style of programming where we're using promises or the equivalent of promises and the ability to yield and then we have callbacks. But trying to write your program in that style, that's also what JavaScript suffered from a lot. It's like all this callback style stuff. With Async and Await, you get the illusion that you're just writing normal sequential code and then the compiler does the painful transformation for you. That turns out to be really useful."

The Pragmatic Engineer

13,258 views • 3 months ago

YOKO ONO: ONOCHORD, VENICE, 2004 Yoko: The world is divided in two industries. One is the War Industry and the other is the Peace Industry. The people in the War Industry are totally together. They don't have to talk to each other, even. They know exactly what they want to do. They want to go out there, kill and make money. But the people in the Peace Industry, which are us - we are so idealistic that each one of us criticises the other Peace Person in the Peace Industry. And we are always just arguing and we are wasting our energies doing that. So let's just forgive each other and see that we are in the Peace Industry and that's all that counts. Even if you are not marching for peace, just be yourself, being a florist, being a merchant, being a talior, anything. That way you're contributing to the Peace Industry. People are just concentrating on fear, confusion and anger. And therefore just for a moment, I'd like us to think about Love. In a very magical, straight way, John and I met in London and from then on we stood for Peace and Love. And when I do this kind of event. Well it is... I was inspired to do it, but I still think that I'm still with John in spirit. John and I created the country called Nutopia. Not Utopia, because there was Utopia as a concept already. And we wanted to create a new concept, so we just added N on it - Nutopia - and as a country. Well, that is the concept of a country. And we all are citizens of that country. And in my apartment in the Dakota Building, we put a little plaque on the back door, the kitchen door. It says 'Nutopian Embassy' and even now we have that. (laughs). Nutopia exists in our minds. And because of that, some people want to rebel against it. The reason some want to rebel against it is a good proof that it exists. I think that it was a terrible thing that happened in Chechnya. But we have to still keep our hopes up. And instead of giving up, we have to keep on sending the message of Love to each other. You say that I am the Ambassador of Peace. We are all Ambassadors of Peace. You are too. Everybody in this room are Ambassadors of Peace. Just the fact that we are not participating in War. The fact that we are here, and we are what we are, means that we are in the Peace Industry. All of us. John and I used to say that our apartment in the Dakota is a conceptual monastry, just for the two of us. And when we go out of the Dakota, we get so many people communicating with us, so it's very important that we had silence and quietness. And my apartment is a very small space compared to the world. And I need that for my peace of mind. You should be kind to each other. You should come together, hug each other, love each other, express our love to each other and we should make it work. We should finally create a world that is a totally an Earth for Us. So let's do it. Yoko Ono, OpenAsia Press Conference, whilst exhibiting Onochord, 2004 by Yoko Ono (Nutopia) at the Venice Biennale: OpenAsia 2004, Lido Di Venezia, Venice, Italy, 9 September 2004.

Yoko Ono

35,208 views • 2 years ago

Now that I am home and have access to my files I decided to do a quick test with one of my Vtubing avatars. It works way better with my larger iPad Pro (less crashing/more memory and more screen space) compared to the mini so I did want to bring that up. Importing the file over as GLB was more stable than just OBJ plus it kept the color info from the previous texture. I texture all my avatars on substance painter but have been looking at an alternative when I am out and about that is not on the computer and this actually hits all the right "wants". Adding a quick video of the way the app works for me. I like that it has layers, I can alter my brushes and even add stabilization when I am drawing (which I use that extensively on procreate so that was a huge plus). The stamp tools will come in handy as well but did not show it on this video. The file itself is imported as "one mesh" but each part is treated as their own separate piece which I show in the video. I do the same thing on substance painter making it really easy for me to texture. The app then exports the texture out for each object which is the same way I do so on substance. Overall I am extremely impressed with the work Sparseal has done on this application and see how useful this will be for my current work flow of texturing. I for one love the ability to be "portable" which is a big reason I sculpt so much with Nomad Sculpt on the iPad. Having the freedom to do your work away from a desk and if you feel like doing it outside is probable why I yearn for iPad apps so much like so. Give this app a look, it is free to try on the App Store (It is $19 to be able to export, but a one time buy). It is called "Wafer" for the iPad. I already use CozyBlanket from the same creator to do re topology so I expected this level of fantastic with this current app.

Val / LatinVixen ➡️ Megaplex

17,469 views • 7 months ago