<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>OpenTUI on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/opentui/</link>
        <description>Recent content in OpenTUI on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Fri, 07 Nov 2025 15:29:19 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/opentui/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>opentui</title>
        <link>https://producthunt.programnotes.cn/en/p/opentui/</link>
        <pubDate>Fri, 07 Nov 2025 15:29:19 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/opentui/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1730578725261-0138f9a0da41?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NjI1MDA1MTV8&amp;ixlib=rb-4.1.0" alt="Featured image of post opentui" /&gt;&lt;h1 id=&#34;sstopentui&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/sst/opentui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;sst/opentui&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;opentui&#34;&gt;OpenTUI
&lt;/h1&gt;&lt;div align=&#34;center&#34;&gt;
    &lt;a href=&#34;https://www.npmjs.com/package/@opentui/core&#34;&gt;&lt;img alt=&#34;npm&#34; src=&#34;https://img.shields.io/npm/v/@opentui/core?style=flat-square&#34; /&gt;&lt;/a&gt;
    &lt;a href=&#34;https://github.com/sst/opentui/actions/workflows/build-core.yml&#34;&gt;&lt;img alt=&#34;Build status&#34; src=&#34;https://img.shields.io/github/actions/workflow/status/sst/opentui/build-core.yml?style=flat-square&amp;branch=main&#34; /&gt;&lt;/a&gt;
    &lt;a href=&#34;https://github.com/msmps/awesome-opentui&#34;&gt;&lt;img alt=&#34;awesome opentui list&#34; src=&#34;https://awesome.re/badge-flat.svg&#34; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;OpenTUI is a TypeScript library for building terminal user interfaces (TUIs). It is currently in
development and is not ready for production use. It will be the foundational TUI framework for both
&lt;a class=&#34;link&#34; href=&#34;https://opencode.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;opencode&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://terminal.shop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;terminaldotshop&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Quick start with &lt;a class=&#34;link&#34; href=&#34;https://bun.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bun&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/msmps/create-tui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;create-tui&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun create tui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This monorepo contains the following packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;packages/core&#34; &gt;&lt;code&gt;@opentui/core&lt;/code&gt;&lt;/a&gt; - The core library works completely standalone, providing an imperative API and all the primitives.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;packages/solid&#34; &gt;&lt;code&gt;@opentui/solid&lt;/code&gt;&lt;/a&gt; - The SolidJS reconciler for OpenTUI.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;packages/react&#34; &gt;&lt;code&gt;@opentui/react&lt;/code&gt;&lt;/a&gt; - The React reconciler for OpenTUI.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;packages/vue&#34; &gt;&lt;code&gt;@opentui/vue&lt;/code&gt;&lt;/a&gt; - The Vue reconciler (unmaintained)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;packages/go&#34; &gt;&lt;code&gt;@opentui/go&lt;/code&gt;&lt;/a&gt; - Go bindings (unmaintained)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;install&#34;&gt;Install
&lt;/h2&gt;&lt;p&gt;NOTE: You must have &lt;a class=&#34;link&#34; href=&#34;https://ziglang.org/learn/getting-started/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zig&lt;/a&gt; installed on your system to build the packages.&lt;/p&gt;
&lt;h3 id=&#34;typescriptjavascript&#34;&gt;TypeScript/JavaScript
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install @opentui/core
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;running-examples-from-the-repo-root&#34;&gt;Running Examples (from the repo root)
&lt;/h2&gt;&lt;h3 id=&#34;typescript-examples&#34;&gt;TypeScript Examples
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; packages/core
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run src/examples/index.ts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;development&#34;&gt;Development
&lt;/h2&gt;&lt;h3 id=&#34;local-development-linking&#34;&gt;Local Development Linking
&lt;/h3&gt;&lt;p&gt;When developing OpenTUI, you may want to test your changes in another project without publishing. The &lt;code&gt;link-opentui-dev.sh&lt;/code&gt; script makes this easy by creating symlinks (or copies) from your OpenTUI workspace to another project&amp;rsquo;s &lt;code&gt;node_modules&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Basic usage:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/link-opentui-dev.sh /path/to/your/project
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This will link &lt;code&gt;@opentui/core&lt;/code&gt; to your target project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Options:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--react&lt;/code&gt; - Also link &lt;code&gt;@opentui/react&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--solid&lt;/code&gt; - Also link &lt;code&gt;@opentui/solid&lt;/code&gt; and &lt;code&gt;solid-js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--dist&lt;/code&gt; - Link the built &lt;code&gt;dist&lt;/code&gt; directories instead of source packages&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--copy&lt;/code&gt; - Copy the dist directories instead of symlinking (requires &lt;code&gt;--dist&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Link only core (default)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/link-opentui-dev.sh /path/to/your/project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Link core and solid&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/link-opentui-dev.sh /path/to/your/project --solid
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Link core and react, using dist directories&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/link-opentui-dev.sh /path/to/your/project --react --dist
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Copy dist directories (useful for environments where symlinks don&amp;#39;t work)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/link-opentui-dev.sh /path/to/your/project --dist --copy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The target project must have already run &lt;code&gt;bun install&lt;/code&gt; (or &lt;code&gt;npm install&lt;/code&gt;) to have a &lt;code&gt;node_modules&lt;/code&gt; directory&lt;/li&gt;
&lt;li&gt;By default, the script links to the source packages, allowing hot-reloading of changes&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;--dist&lt;/code&gt; when you need to test the built artifacts&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;--copy&lt;/code&gt; mode when working in environments that don&amp;rsquo;t support symlinks well (e.g., Docker containers, Windows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;showcase&#34;&gt;Showcase
&lt;/h2&gt;&lt;p&gt;Consider showcasing your work on the &lt;a class=&#34;link&#34; href=&#34;https://github.com/msmps/awesome-opentui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;awesome-opentui&lt;/a&gt; list. A curated list of awesome resources and terminal user interfaces built with OpenTUI.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
