Skip to content

Links From Other Apps

rgdevment edited this page Oct 10, 2026 · 1 revision

Links from other apps

Any application can hand a link to LinkUnbound through its own address, linkunbound://, even when LinkUnbound is not the default browser. The link goes through the same rules and the same picker as a click.

It's meant for developers who want their app to respect the user's browser choices, and for power users with scripts, launchers or automation tools.

The address

linkunbound://open?url=<the whole link, encoded as one component>

For example, to open https://example.com/a?b=1:

linkunbound://open?url=https%3A%2F%2Fexample.com%2Fa%3Fb%3D1

The link must be encoded as a single component: every :, /, ?, &, =, #, % and + has to be escaped. An unescaped & or # cuts the link short, and an unescaped + arrives as a space.

Language How
JavaScript "linkunbound://open?url=" + encodeURIComponent(link)
Rust utf8_percent_encode(link, NON_ALPHANUMERIC) from the percent-encoding crate
Python "linkunbound://open?url=" + urllib.parse.quote(link, safe="")

From a terminal:

# Windows
Start-Process "linkunbound://open?url=https%3A%2F%2Fexample.com"
# macOS
open "linkunbound://open?url=https%3A%2F%2Fexample.com"

What it accepts

  • Only http and https links. A file, a script, javascript: or anything else is dropped before it's shown or opened.
  • Nothing is sent back. The application that sent the link can't learn which browser opened it, whether a rule decided, or what the rules are. It can't tell whether the user cancelled either.
  • The address is held in memory while it's routed, like any other link. See Privacy.

Checking that LinkUnbound is installed

Ask the system whether the scheme exists before using it, and open the plain link when nothing answers.

Windows: call AssocQueryStringW(ASSOCF_IS_PROTOCOL, …, L"linkunbound", L"open", …) twice:

  • with ASSOCSTR_EXECUTABLE, which answers for the downloaded copy;
  • with ASSOCSTR_APPID, which answers for the Microsoft Store copy, since it has no executable to name.

If the answer is OpenWith.exe, treat it as not installed: that's Windows offering to choose an app.

macOS: NSWorkspace.shared.urlForApplication(toOpen: URL(string: "linkunbound:")!) is not nil while the app is installed.

Notes

  • The scheme is registered by the installer on Windows, and declared by the app itself on a Mac, so it goes away when LinkUnbound is uninstalled. Remove LinkUnbound from Windows in Settings › Maintenance removes it too.
  • The origin shown in the picker is still the app that was in front, as for any link.

Clone this wiki locally