The best Hacker News stories from Show from the past day
Latest posts:
Show HN: Term.everything – Run any GUI app in the terminal
I made a built-from scratch Wayland Compositor to display any GUI app* in the terminal! I think there is a lot of unexplored potential in custom Wayland compositors, a lot of really cool things you can embed existing applications into! So, I started with embedding apps into the terminal because that is the easiest input/output (output is just utf-8 and I use the great `chafa` library for that, and I just read from stdin for the input).<p>If you have any other ideas for cool Wayland compositors, let me know. I purposedly wrote 80% the app in Typescript to appeal to the most developers and attract cool contributions (I do all drawing with the familiar Canvas2D api, so if there is interest, I can also fork this out into a cool Terminal canvas, let me know!)<p>I have a blog post here about how I did it, but it’s pretty high level and non technical, so please ask if you have any questions.<p>[How I Did It](<<a href="https://github.com/mmulet/term.everything/blob/main/resources/HowIDidIt.md" rel="nofollow">https://github.com/mmulet/term.everything/blob/main/resource...</a>>)<p>*technically only Wayland apps and x11 apps with Xwayland. But on Linux that’s mostly everything.
Show HN: Term.everything – Run any GUI app in the terminal
I made a built-from scratch Wayland Compositor to display any GUI app* in the terminal! I think there is a lot of unexplored potential in custom Wayland compositors, a lot of really cool things you can embed existing applications into! So, I started with embedding apps into the terminal because that is the easiest input/output (output is just utf-8 and I use the great `chafa` library for that, and I just read from stdin for the input).<p>If you have any other ideas for cool Wayland compositors, let me know. I purposedly wrote 80% the app in Typescript to appeal to the most developers and attract cool contributions (I do all drawing with the familiar Canvas2D api, so if there is interest, I can also fork this out into a cool Terminal canvas, let me know!)<p>I have a blog post here about how I did it, but it’s pretty high level and non technical, so please ask if you have any questions.<p>[How I Did It](<<a href="https://github.com/mmulet/term.everything/blob/main/resources/HowIDidIt.md" rel="nofollow">https://github.com/mmulet/term.everything/blob/main/resource...</a>>)<p>*technically only Wayland apps and x11 apps with Xwayland. But on Linux that’s mostly everything.
Show HN: Term.everything – Run any GUI app in the terminal
I made a built-from scratch Wayland Compositor to display any GUI app* in the terminal! I think there is a lot of unexplored potential in custom Wayland compositors, a lot of really cool things you can embed existing applications into! So, I started with embedding apps into the terminal because that is the easiest input/output (output is just utf-8 and I use the great `chafa` library for that, and I just read from stdin for the input).<p>If you have any other ideas for cool Wayland compositors, let me know. I purposedly wrote 80% the app in Typescript to appeal to the most developers and attract cool contributions (I do all drawing with the familiar Canvas2D api, so if there is interest, I can also fork this out into a cool Terminal canvas, let me know!)<p>I have a blog post here about how I did it, but it’s pretty high level and non technical, so please ask if you have any questions.<p>[How I Did It](<<a href="https://github.com/mmulet/term.everything/blob/main/resources/HowIDidIt.md" rel="nofollow">https://github.com/mmulet/term.everything/blob/main/resource...</a>>)<p>*technically only Wayland apps and x11 apps with Xwayland. But on Linux that’s mostly everything.
Show HN: Term.everything – Run any GUI app in the terminal
I made a built-from scratch Wayland Compositor to display any GUI app* in the terminal! I think there is a lot of unexplored potential in custom Wayland compositors, a lot of really cool things you can embed existing applications into! So, I started with embedding apps into the terminal because that is the easiest input/output (output is just utf-8 and I use the great `chafa` library for that, and I just read from stdin for the input).<p>If you have any other ideas for cool Wayland compositors, let me know. I purposedly wrote 80% the app in Typescript to appeal to the most developers and attract cool contributions (I do all drawing with the familiar Canvas2D api, so if there is interest, I can also fork this out into a cool Terminal canvas, let me know!)<p>I have a blog post here about how I did it, but it’s pretty high level and non technical, so please ask if you have any questions.<p>[How I Did It](<<a href="https://github.com/mmulet/term.everything/blob/main/resources/HowIDidIt.md" rel="nofollow">https://github.com/mmulet/term.everything/blob/main/resource...</a>>)<p>*technically only Wayland apps and x11 apps with Xwayland. But on Linux that’s mostly everything.
Show HN: Term.everything – Run any GUI app in the terminal
I made a built-from scratch Wayland Compositor to display any GUI app* in the terminal! I think there is a lot of unexplored potential in custom Wayland compositors, a lot of really cool things you can embed existing applications into! So, I started with embedding apps into the terminal because that is the easiest input/output (output is just utf-8 and I use the great `chafa` library for that, and I just read from stdin for the input).<p>If you have any other ideas for cool Wayland compositors, let me know. I purposedly wrote 80% the app in Typescript to appeal to the most developers and attract cool contributions (I do all drawing with the familiar Canvas2D api, so if there is interest, I can also fork this out into a cool Terminal canvas, let me know!)<p>I have a blog post here about how I did it, but it’s pretty high level and non technical, so please ask if you have any questions.<p>[How I Did It](<<a href="https://github.com/mmulet/term.everything/blob/main/resources/HowIDidIt.md" rel="nofollow">https://github.com/mmulet/term.everything/blob/main/resource...</a>>)<p>*technically only Wayland apps and x11 apps with Xwayland. But on Linux that’s mostly everything.
Show HN: OpenCV over WebRTC (in Go)
Show HN: Vicinae – A native, Raycast-compatible launcher for Linux
Hi HN!<p>I’ve always been a fan of application launchers, and I was impressed by the approach the Raycast team took — especially their extension system. About six months ago I started building something similar for Linux, aiming to integrate deeply at the OS level and give extensions a lot of power.<p>Vicinae is written in C++ with Qt Widgets. I chose Widgets over QML for more imperative control of the UI, especially around extension handling. So far that’s worked well — modern C++ is great.<p>To support my goals I built a number of custom widgets, including a fully virtualized list that can efficiently render tens of thousands of items. That gave me a lot of respect for Qt — it’s a powerful framework that mostly stayed out of my way.<p>A key feature is support for Raycast extensions (React + TypeScript), most of which can be installed and used directly inside the launcher (though not all features are implemented yet). There’s also a native API package (@vicinae/api) for writing Vicinae-specific extensions with additional capabilities. This required writing a custom React reconciler — surprisingly straightforward, though still unpolished.<p>Like Raycast, Vicinae ships with powerful built-in modules, but the goal isn’t to make a clone. I want it to grow into its own project that fits the FOSS model better, while staying compatible with the Raycast ecosystem. I also plan to bring it to other OSes eventually.<p>I’d love feedback on the technical approach, and suggestions for what would make this useful to you. Contributions are very welcome — I’ve already been pleasantly surprised by how quickly people started helping.<p>Docs: <a href="https://docs.vicinae.com" rel="nofollow">https://docs.vicinae.com</a>
Repo: <a href="https://github.com/vicinaehq/vicinae" rel="nofollow">https://github.com/vicinaehq/vicinae</a>
Show HN: Vicinae – A native, Raycast-compatible launcher for Linux
Hi HN!<p>I’ve always been a fan of application launchers, and I was impressed by the approach the Raycast team took — especially their extension system. About six months ago I started building something similar for Linux, aiming to integrate deeply at the OS level and give extensions a lot of power.<p>Vicinae is written in C++ with Qt Widgets. I chose Widgets over QML for more imperative control of the UI, especially around extension handling. So far that’s worked well — modern C++ is great.<p>To support my goals I built a number of custom widgets, including a fully virtualized list that can efficiently render tens of thousands of items. That gave me a lot of respect for Qt — it’s a powerful framework that mostly stayed out of my way.<p>A key feature is support for Raycast extensions (React + TypeScript), most of which can be installed and used directly inside the launcher (though not all features are implemented yet). There’s also a native API package (@vicinae/api) for writing Vicinae-specific extensions with additional capabilities. This required writing a custom React reconciler — surprisingly straightforward, though still unpolished.<p>Like Raycast, Vicinae ships with powerful built-in modules, but the goal isn’t to make a clone. I want it to grow into its own project that fits the FOSS model better, while staying compatible with the Raycast ecosystem. I also plan to bring it to other OSes eventually.<p>I’d love feedback on the technical approach, and suggestions for what would make this useful to you. Contributions are very welcome — I’ve already been pleasantly surprised by how quickly people started helping.<p>Docs: <a href="https://docs.vicinae.com" rel="nofollow">https://docs.vicinae.com</a>
Repo: <a href="https://github.com/vicinaehq/vicinae" rel="nofollow">https://github.com/vicinaehq/vicinae</a>
Show HN: Vicinae – A native, Raycast-compatible launcher for Linux
Hi HN!<p>I’ve always been a fan of application launchers, and I was impressed by the approach the Raycast team took — especially their extension system. About six months ago I started building something similar for Linux, aiming to integrate deeply at the OS level and give extensions a lot of power.<p>Vicinae is written in C++ with Qt Widgets. I chose Widgets over QML for more imperative control of the UI, especially around extension handling. So far that’s worked well — modern C++ is great.<p>To support my goals I built a number of custom widgets, including a fully virtualized list that can efficiently render tens of thousands of items. That gave me a lot of respect for Qt — it’s a powerful framework that mostly stayed out of my way.<p>A key feature is support for Raycast extensions (React + TypeScript), most of which can be installed and used directly inside the launcher (though not all features are implemented yet). There’s also a native API package (@vicinae/api) for writing Vicinae-specific extensions with additional capabilities. This required writing a custom React reconciler — surprisingly straightforward, though still unpolished.<p>Like Raycast, Vicinae ships with powerful built-in modules, but the goal isn’t to make a clone. I want it to grow into its own project that fits the FOSS model better, while staying compatible with the Raycast ecosystem. I also plan to bring it to other OSes eventually.<p>I’d love feedback on the technical approach, and suggestions for what would make this useful to you. Contributions are very welcome — I’ve already been pleasantly surprised by how quickly people started helping.<p>Docs: <a href="https://docs.vicinae.com" rel="nofollow">https://docs.vicinae.com</a>
Repo: <a href="https://github.com/vicinaehq/vicinae" rel="nofollow">https://github.com/vicinaehq/vicinae</a>
Show HN: Vicinae – A native, Raycast-compatible launcher for Linux
Hi HN!<p>I’ve always been a fan of application launchers, and I was impressed by the approach the Raycast team took — especially their extension system. About six months ago I started building something similar for Linux, aiming to integrate deeply at the OS level and give extensions a lot of power.<p>Vicinae is written in C++ with Qt Widgets. I chose Widgets over QML for more imperative control of the UI, especially around extension handling. So far that’s worked well — modern C++ is great.<p>To support my goals I built a number of custom widgets, including a fully virtualized list that can efficiently render tens of thousands of items. That gave me a lot of respect for Qt — it’s a powerful framework that mostly stayed out of my way.<p>A key feature is support for Raycast extensions (React + TypeScript), most of which can be installed and used directly inside the launcher (though not all features are implemented yet). There’s also a native API package (@vicinae/api) for writing Vicinae-specific extensions with additional capabilities. This required writing a custom React reconciler — surprisingly straightforward, though still unpolished.<p>Like Raycast, Vicinae ships with powerful built-in modules, but the goal isn’t to make a clone. I want it to grow into its own project that fits the FOSS model better, while staying compatible with the Raycast ecosystem. I also plan to bring it to other OSes eventually.<p>I’d love feedback on the technical approach, and suggestions for what would make this useful to you. Contributions are very welcome — I’ve already been pleasantly surprised by how quickly people started helping.<p>Docs: <a href="https://docs.vicinae.com" rel="nofollow">https://docs.vicinae.com</a>
Repo: <a href="https://github.com/vicinaehq/vicinae" rel="nofollow">https://github.com/vicinaehq/vicinae</a>
Show HN: Vicinae – A native, Raycast-compatible launcher for Linux
Hi HN!<p>I’ve always been a fan of application launchers, and I was impressed by the approach the Raycast team took — especially their extension system. About six months ago I started building something similar for Linux, aiming to integrate deeply at the OS level and give extensions a lot of power.<p>Vicinae is written in C++ with Qt Widgets. I chose Widgets over QML for more imperative control of the UI, especially around extension handling. So far that’s worked well — modern C++ is great.<p>To support my goals I built a number of custom widgets, including a fully virtualized list that can efficiently render tens of thousands of items. That gave me a lot of respect for Qt — it’s a powerful framework that mostly stayed out of my way.<p>A key feature is support for Raycast extensions (React + TypeScript), most of which can be installed and used directly inside the launcher (though not all features are implemented yet). There’s also a native API package (@vicinae/api) for writing Vicinae-specific extensions with additional capabilities. This required writing a custom React reconciler — surprisingly straightforward, though still unpolished.<p>Like Raycast, Vicinae ships with powerful built-in modules, but the goal isn’t to make a clone. I want it to grow into its own project that fits the FOSS model better, while staying compatible with the Raycast ecosystem. I also plan to bring it to other OSes eventually.<p>I’d love feedback on the technical approach, and suggestions for what would make this useful to you. Contributions are very welcome — I’ve already been pleasantly surprised by how quickly people started helping.<p>Docs: <a href="https://docs.vicinae.com" rel="nofollow">https://docs.vicinae.com</a>
Repo: <a href="https://github.com/vicinaehq/vicinae" rel="nofollow">https://github.com/vicinaehq/vicinae</a>
Show HN: Attempt – A CLI for retrying fallible commands
Hi HN,<p>Here's a tool I wrote for retrying fallible commands. Nothing groundbreaking here, this is a tool that's been made many times (and several have been submitted to Show HN). Though this one does have a more comprehensive feature set than most. I hope one or two people will find it useful.<p>I wrote `attempt` for two reasons:<p>- To have a more featureful alternative to `wait-for-it.sh` for use in Docker Compose. Specifically to apply migration scripts to a database that may not be up yet. I wanted to be able to inspect the error messages from my migration tool & retry on connection errors.<p>- To test a hypothesis I had that a good way to make a CLI was to copy the API of a good library (in this case, `tenacity`). I want to write a blog post at some point to discuss this at length, but the tl;dr is that I believe it was a success.<p>Here are some usage examples: <a href="https://maxbondabe.github.io/attempt/usage.html" rel="nofollow">https://maxbondabe.github.io/attempt/usage.html</a><p>There may not be much to discuss for such a small tool, but I am open to all feedback and am happy to answer any questions.<p>Cheers,<p>Max
Show HN: Attempt – A CLI for retrying fallible commands
Hi HN,<p>Here's a tool I wrote for retrying fallible commands. Nothing groundbreaking here, this is a tool that's been made many times (and several have been submitted to Show HN). Though this one does have a more comprehensive feature set than most. I hope one or two people will find it useful.<p>I wrote `attempt` for two reasons:<p>- To have a more featureful alternative to `wait-for-it.sh` for use in Docker Compose. Specifically to apply migration scripts to a database that may not be up yet. I wanted to be able to inspect the error messages from my migration tool & retry on connection errors.<p>- To test a hypothesis I had that a good way to make a CLI was to copy the API of a good library (in this case, `tenacity`). I want to write a blog post at some point to discuss this at length, but the tl;dr is that I believe it was a success.<p>Here are some usage examples: <a href="https://maxbondabe.github.io/attempt/usage.html" rel="nofollow">https://maxbondabe.github.io/attempt/usage.html</a><p>There may not be much to discuss for such a small tool, but I am open to all feedback and am happy to answer any questions.<p>Cheers,<p>Max
Show HN: Bottlefire – Build single-executable microVMs from Docker images
Show HN: Bottlefire – Build single-executable microVMs from Docker images
Show HN: Bottlefire – Build single-executable microVMs from Docker images
Show HN: ZeroFS, the Filesystem That Makes S3 Your Primary Storage
Show HN: ZeroFS, the Filesystem That Makes S3 Your Primary Storage
Show HN: ZeroFS, the Filesystem That Makes S3 Your Primary Storage
Show HN: Veena Chromatic Tuner
We're happy to present Veena Chromatic Tuner, an app we've developed for musicians, instrument makers, and ethnomusicologists who need more than just a standard chromatic tuner. Our goal was to create a tool that not only supports pitch detection but also provides deep support for diverse musical intonation systems and offers intuitive visual feedback.<p>The Problem We're Solving:
Many tuners are good for Equal Temperament, but has limited support when it comes to the Just Intonation, microtonal music, or the specific requirements of instruments like the Veena where fret positions are determined by precise ratios.<p>Oscilloscope-like Visual Feedback:
Instead of just a needle, you get a dynamic, oscilloscope-like waveform display.<p>In Tune: The waveform appears stabilized, giving you an immediate, confirmation of perfect pitch.
Sharp: The waveform rotates right.
Flat: The waveform rotates left.<p>This dynamic visual feedback, akin to a digital oscilloscope's trigger synchronization, offers immediate, precise adjustment cues that go far beyond what a static needle can provide, allowing for incredibly fine-tuned adjustments.<p>Unmatched Intonation Flexibility:
We understand that music isn't just 12-TET.<p>Just Intonation Support: Perfect for Indian classical music, early music, and any tradition that relies on pure harmonic relationships between notes. This is crucial for achieving the rich, resonant chords and melodic purity that Equal Temperament can't always deliver.<p>Custom Temperaments: Go beyond presets! Create, save, and manage your own unique temperaments with personalized ratio settings. This empowers composers, researchers, and performers to explore microtonal scales and historical tunings with ease.<p>Dedicated Veena Instrument Mode: It allows users to play and tune notes across 24 fret positions, specifically highlighting how note positions on the fretboard vary relative to each other when pure intonation is applied. This feature is invaluable for instrument makers and those studying the physics of string instruments.<p>Other Key Features:<p>Multicultural Note Naming: Display notes in Western, Indian classical (Carnatic/Hindustani), and Solfege, with support for multiple Indian language scripts (Tamil, Devanagari, Telugu, Kannada, Malayalam).<p>Adjustable Reference Pitch: Customize A4 frequency from 440Hz to 432Hz or anything in between.<p>Transposition Support: Easily transpose notes for different instruments.<p>This app is would be useful for string players (veena, violin, guitar, sitar, etc.), wind instrument musicians, vocalists, music teachers, students, ethnomusicologists, and especially instrument makers and tuners who need to work with precise intonation and fret setting. Anyone exploring microtonal music will also find it incredibly useful.<p>We're actively developing the app, continuously adding features and improvements. While pitch detection is resource-intensive, we strive for broad device compatibility.<p>Check it out on Google Play: [<a href="https://play.google.com/store/apps/details?id=in.magima.digitaltuner&utm_source=hnews">https://play.google.com/store/apps/details?id=in.magima.digi...</a>]<p>We welcome your feedback, questions, and thoughts!