finds.dev

domenic/opener

Opens stuff, like webpages and files and executables, cross-platform

View on GitHub

★ 311JavaScriptNOASSERTIONupdated Oct 2026

// the take

A tiny cross-platform wrapper that shells out to whatever the OS uses to open things with their default app — `start` on Windows, `open` on macOS, `xdg-out` on Linux. Useful for CLI scripts or test runners that need to pop open a browser, file, or app without caring what platform they're on.

Does exactly one thing and nothing more — no bloat, no dependency tree to speak of. The API returns the spawned child process so callers can `unref()` it and let their own process exit while the opened window stays up, which is a small but genuinely useful design choice most 'just open this' libraries skip. It's old and boring in the good sense — used as a transitive dependency by a huge number of npm packages, so the happy path is well-exercised.

It shells out with whatever string you give it, and the README examples (`opener("npm run lint")`) encourage passing arbitrary command strings — if any of that input comes from outside your own code, you've got a command injection vector, and there's no sanitization or escaping documented anywhere. On Linux it's entirely dependent on `xdg-open` existing, which it often doesn't in minimal containers or headless CI images, with no fallback and a failure mode that's just 'nothing happens or the child process errors.' There's no retry or detection logic if the target app isn't installed (e.g. no browser on a server), so errors surface as raw child-process failures rather than anything actionable. Development has basically stopped — it works because the problem hasn't changed, not because anyone's actively maintaining it.

We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →

// at a glance

Stars
311
Forks
27
Language
JavaScript
License
NOASSERTION
Last commit
6 Oct 2026

// nearby

If opener isn't quite it.

All repos →