Introducing The Zebra Launcher

The Zebra team has released an alpha version of the Zebra Launcher, which enables Zebra to be installed and run on common operating systems without a command-line interface (CLI) or any prerequisites other than the operating system itself.

As of Zebra Launcher v0.0.0-alpha.1, there are now installers for Windows, MacOS, and Debian.

The Zebra Launcher bundles the compiled binary from the latest zebrad code on the main branch, as of the March 7th 2024, commit, with the latest changes in zcash_script from Restore Windows support with MSVC building on another hack sprint project for restoring Windows support to Zebra. (Thanks Conrado!❣!) It streams Zebra’s logs to a native desktop application window, displays Zebra’s configuration, and allows for updating the configuration from within the app.

Made with a web-based UI and a Rust backend, it uses Tauri as the application framework for inter-process communication and SolidJS as its UI framework.

SolidJS is a relatively new UI framework with a reactive architecture for managing state and displaying updates that offers a robust developer experience, a minimal memory footprint, and minimal updates to the webview that helps keep the UI quick when it’s displaying lots of data and to keep the project maintainable as it grows.

Using a web-based UI with Tauri and SolidJS allows for embedding other web-based projects, such as Grafana or Zingo-PC, into the Zebra Launcher’s UI, enabling users to access them all in one place.

What’s Next

The Zebra Launcher currently includes checks and example data for displaying previews of its appearance in-browser without the Rust backend, and a CI workflow for deploying those previews on every pull request so that it’s easy to review style changes. However, there aren’t any automated tests checking the states in either the TypeScript frontend or the Rust backend, we would need to add these initial tests to help find and fix bugs, and to ensure that bugs aren’t reintroduced as we add features or make changes.

There are also several low-effort, high-impact fixes and improvements on the horizon:

  • Zebra icons (it currently uses the default Tauri icons)
  • Adding a system-tray menu and keeping the zebrad process running when the Zebra Launcher window is closed.
  • Enabling Tauri’s built-in updater so users are notified when updates are available and so that it’s as easy as possible to download and install those updates.
  • Buttons for starting and stopping zebrad.
  • Bundling external binaries for Prometheus and Grafana, and embedding the Grafana dashboard in the Zebra Launcher UI.

There are other ideas for features that could require more effort and which could be prioritized based on community feedback:

  • Community page for keeping up with the latest updates across ZCash Discord servers, the Community Forum, and the Zebra Github repository, or to inform us about bugs and development opportunities.
  • Validated form for updating Zebra’s configuration
  • A dashboard page and search bar
  • Progress bars based on Prometheus metrics.
  • Embedded desktop wallet in the Zebra Launcher UI such as Zingo-PC.

We want to provide a delightful user-experience for our community, which is what motivated us to work on this project, and we’re excited about the opportunities for making it better.

Please try it out by downloading and running the installer for your operating system and let us know what you think! We would also welcome any improvements to the project in the form of issues, discussions, or PRs on the zebra-launcher Github repository.