Framework-agnostic, native-looking window controls for Electrobun.
One package. No boilerplate. Works with any frontend.
- native-style window controls (macOS, Windows, Linux)
- framework-agnostic DOM API (React, Vue, Svelte, Solid, vanilla)
- built-in Electrobun adapter (auto RPC wiring)
- Bun helper for native window actions
- prebuilt renderer + styles
- titlebar utilities with correct drag regions
npm install electrobun-controlsIf using Electrobun, install it in your host app as well:
npm install electrobunimport { BrowserWindow } from "electrobun/bun";
import { createElectrobunWindowControlsRPC } from "electrobun-controls/bun";
let mainWindow: BrowserWindow;
mainWindow = new BrowserWindow({
title: "My App",
url: "views://mainview/index.html",
titleBarStyle: "hidden",
rpc: createElectrobunWindowControlsRPC(() => mainWindow),
});import "electrobun-controls/style.css";
import { createTitlebar } from "electrobun-controls/dom";
import { createElectrobunAdapter } from "electrobun-controls/electrobun";
const titlebar = createTitlebar({
adapter: createElectrobunAdapter(),
title: "My App",
});
document.body.prepend(titlebar.element);Mount into any framework via a ref or host element:
import "electrobun-controls/style.css";
import { mountWindowControls } from "electrobun-controls/dom";
import { createElectrobunAdapter } from "electrobun-controls/electrobun";
const mounted = mountWindowControls(hostElement, {
adapter: createElectrobunAdapter(),
});
// cleanup
mounted.destroy();- main process exposes window actions via RPC
- renderer adapter connects automatically (no boilerplate)
- DOM renderer handles UI + interaction
- drag regions are applied via Electrobun classes
electrobun-controlselectrobun-controls/domelectrobun-controls/electrobunelectrobun-controls/bunelectrobun-controls/style.css
- OS detection: override β
process.platformβnavigator - Linux uses Ubuntu/Yaru-style controls (v1)
- Electrobun adapter auto-detects webview and sets up RPC
- Bun helper maps to native window APIs (
close,minimize,maximize,setFullScreen)
npm install
npm run dev
npm run build
npm run testMIT
