Yue
vopono
Our great sponsors
Yue | vopono | |
---|---|---|
8 | 34 | |
3,328 | 755 | |
2.6% | - | |
6.8 | 7.5 | |
23 days ago | 14 days ago | |
C++ | Rust | |
GNU Lesser General Public License v3.0 only | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Yue
- This year in Servo: over 1000 pull requests and beyond
- Yue: A library for creating native cross-platform GUI apps
-
So you want to write a GUI framework (2021)
For a recent project I chose Yue (https://libyue.com/), a cross-platform native widget GUI toolkit with C++, JavaScript/Node.js, and Lua. I've only used the Lua interface and macOS backend, but it has worked quite well, despite the very steep learning curve. This was also my first desktop GUI app, so I had to learn many implicit concepts that weren't obvious from the otherwise extensive documentation.
Yue was also the only option that 1) supported macOS, 2) supported Lua, 3) was sufficiently comprehensive to build a non-toy GUI app, 4) and that I could integrate into my (static) build. I couldn't even get the wxWidgets Lua interfaces to compile, and Qt and Fltk had similar stories, whereas reverse-engineering the baroque Yue build (based on Google's internal build systems) was relatively simple. Yue had some sharp edges, but I was able to work around them whilst patiently waiting for patches and fixes upstream.
Immediate mode interfaces were a non-starter for me. For a non-trivial set of otherwise typical controls and window management you have to implement too much yourself, plus being non-native they not only felt wrong (which admittedly is somewhat subjective; the younger crowd seems to think non-native, immediate mode interfaces look more state-of-the-art), but lacked other interfaces for proper desktop integration, like theme change signaling (i.e. notification that a user switch between light and dark modes in the macOS system settings panel).
All-in-all I would highly recommend Yue.
- WxWidgets 3.2.0 Released
- Yue – A library for creating native cross-platform GUI apps
-
Gtk4 Tutorial
I settled for Yue: https://github.com/yue/yue It's been around for several years. The deciding factor for me was that is has well maintained Lua bindings as part of the core project alongside JavaScript (Node.js) and C++.
I didn't have much luck with libui (crashes, missing features, etc), and various immediate mode alternatives just require too many dependencies and other work that made integration too painful. Plus, Lua bindings for all these were always stale. In fact, Lua binding quality is pretty poor all around including for GTK, Qt, WxWidgets, and FLTK.
-
Portal Windows for Electron
There are many more JavaScript developers than C++ developers.
Personally I like Yue, a cross-platform native toolkit library: https://github.com/yue/yue But much of project was already using Lua, so Node.js and Electron were never viable solutions.
-
What is your “I don't care if this succeeds” project?
A native GUI library https://github.com/yue/yue.
It was a disaster when I announced it on Hacker News, and I got numerous harassments from strangers.
But anyway 2 years since then and I'm still working on it.
vopono
-
Ask HN: What are some unpopular technologies you wish people knew more about?
Vopono (https://github.com/jamesmcm/vopono):
"vopono is a tool to run applications through VPN tunnels via temporary network namespaces. This allows you to run only a handful of applications through different VPNs simultaneously, whilst keeping your main connection as normal.
vopono includes built-in killswitches for both Wireguard and OpenVPN."
-
Split-tunnelling on Linux for League of Legends
I think for now on Linux you (still!) have to use external application to do the splitting. Such is vopono
- Using linuxserver/wireguard container. How to set up Wireguard to connect to one of the servers at random?
-
Average not Southern Europe moment
I use vopono to manage it for me with Mullvad though.
-
The Mullvad Browser
you might want to check out vopono, i've gotten it working with firefox and its nice
https://github.com/jamesmcm/vopono
-
Me after renewing Mullvad monthly just so I can keep my low powered computer seeding while I'm at work
I highly recommend using something like vopono with this on Linux that runs only the target application (e.g. Transmission) in a network namespace in the VPN and only forwards the specified ports and only allows traffic via the VPN.
-
More than a decade of doing this and I finally get a letter...
This is why I use vopono - you can run just the torrent client in the VPN on its own and the killswitch keeps it safe.
-
How to get around website blocks?
You can find the option in the settings of windows and android apps. Unfortunately, it's Still not available for Linux. As a workaround for Linux, you can use vopono, which has OpenVPN support for Proton. Or just manually add routing table entries :)
- Vpn with plex
-
Your favourite Rust CLI utilities this year?
I wrote vopono, I use it all the time for quickly spinning up browsers through different VPNs for checking geographical restrictions, etc.
What are some alternatives?
Vaca - C++ Win32 wrapper to develop GUI apps
VimMode.spoon - Adds vim keybindings to all OS X inputs
NanoGUI - Minimalistic GUI library for OpenGL
SDRPlusPlus - Cross-Platform SDR Software
libui - Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.
scraper - Nodejs web scraper. Contains a command line, docker container, terraform module and ansible roles for distributed cloud scraping. Supported databases: SQLite, MySQL, PostgreSQL. Supported headless clients: Puppeteer, Playwright, Cheerio, JSdom.
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
manim - A community-maintained Python framework for creating mathematical animations.
sciter - Sciter: the Embeddable HTML/CSS/JS engine for modern UI development
Arthur - How to build your own AI art installation from scratch [Moved to: https://github.com/maxvfischer/DIY-ai-art]
wxWidgets - Cross-Platform C++ GUI Library
scraper - A scraper for EmulationStation written in Go using hashing