#binary #multiplexer #service #fast #configurable

app bunbun

Re-implementation of bunny1 in Rust

14 releases (7 breaking)

0.8.0 Sep 28, 2020
0.7.0 Jul 5, 2020
0.6.2 Apr 17, 2020
0.6.0 Jan 1, 2020
0.5.0 Dec 27, 2019

48 downloads per month

AGPL-3.0

47KB
1K SLoC

Rust 1K SLoC // 0.0% comments Handlebars 142 SLoC

bunbun

Self-hostable, easy-to-configure, fast search/jump multiplexer service.

bunbun is a pure-Rust implementation of bunny1, providing a customizable search engine and quick-jump tool in one small binary.

After adding it to your web-browser and setting it as your default search engine, you'll gain the ability to quick-jump to a specific page or search from a specific engine:

g hello world   // Searches "hello world" in google
r anime         // Goes to reddit.com/r/anime
ls              // Lists all available commands and aliases
foo bar         // If foo is a defined command, do something with bar
                // Alternatively, if a default route is set, use the entire
                // query for the default route

Reasons to use bunbun

  • Convenient: bunbun watches for config changes and refreshes its routes automatically, allowing for rapid development.
  • Extensible: supports simple route substitution or execution of arbitrary programs for complex route resolution.
  • Portable: bunbun runs off a single binary and config file.
  • Small: binary is 1.3MB (after running strip and upx --lzma on the release binary).
  • Memory-safe: Built with Rust.

Installation

If you have cargo, you can simply run cargo install bunbun.

Once installed, simply run it. A default config file will be created if one does not exist.

If you're looking to run this as a daemon (as most would do), you should put the binary in /usr/bin and copy aux/systemd/bunbun.service into your preferred systemd system folder. Then you may run systemctl enable bunbun --now to start a daemon instance of bunbun.

If running Arch Linux, you may use the provided PKGBUILD to install bunbun. Run makepkg followed by sudo pacman -U bunbun.<version>.tar.gz. This installs the systemd service for you. Run systemctl enable bunbun --now to start bunbun as a daemon.

Building for production

If you're looking to build a release binary, here are the steps I use:

  1. cargo build --release
  2. strip target/release/bunbun
  3. upx --lzma target/release/bunbun

LZMA provides the best level of compress for Rust binaries; it performs at the same level as upx --ultra-brute without the time cost and without breaking the binary.

Configuration

If configuring for development, no further configuration is required. If running this for production, you should edit the public_address field.

the config file is watched, so updates are immediate unless invalid, or if you're using certain programs such as nvim, which performs updating a file via swapping rather than directly updating the file.

Adding bunbun as a search engine

bunbun supports the OpenSearch Description Format. Visit the root page of your desired instance of bunbun to learn more.

Dependencies

~25MB
~562K SLoC