Desktop URL router and browser profile picker for Windows and macOS, built with .NET and Avalonia UI.
Linkwise routes web links to different browsers or browser profiles based on configurable URL rules.
For example:
- open company resources in a dedicated Chrome Work profile;
- open GitHub links in a development profile;
- route selected domains to Firefox;
- ask which browser profile to use when no rule matches;
- use a fallback browser for all remaining links.
Linkwise can register itself as the default HTTP and HTTPS handler on Windows and macOS.
Note
Linkwise is currently under active development. Configuration formats and platform integration may change.
- Cross-platform desktop application built with Avalonia UI
- URL routing by domain and configurable matching rules
- Multiple browser and browser-profile targets
- Browser profile auto-discovery
- Fallback browser configuration
- System tray integration
- HTTP and HTTPS default-handler registration
- Per-user Windows registration without administrator privileges
- Native macOS URL-handler integration
Linkwise can discover existing local profiles from:
- Google Chrome
- Chromium
- Mozilla Firefox
- Brave
- Vivaldi
- Opera
- Opera GX
- Yandex Browser
Note
Microsoft Edge is not currently imported because it provides its own profile selection for links.
Important
The profile importer never creates targets automatically. A browser must be installed and contain at least one existing local profile before it can appear in the import window.
Linkwise is currently intended to be built from source. Use the Windows or macOS packaging instructions below to create a local application package.
For development without packaging, see Development.
On the first launch, Linkwise creates an empty configuration file in the platform-specific application data directory.
| Platform | Configuration path |
|---|---|
| macOS | ~/Library/Application Support/Linkwise/config.json |
| Windows | %APPDATA%\Linkwise\config.json |
To add browser profiles:
- Open the Browser Targets tab.
- Select Import profiles.
- Review the detected browsers and profiles.
- Select the targets you want to add.
- Save the configuration.
After browser targets have been configured, create URL rules and select a fallback target.
src/
├── Linkwise.Core/
├── Linkwise.Desktop/
├── Linkwise.Platforms.Mac/
└── Linkwise.Platforms.Windows/
Platform-independent application logic:
- configuration models;
- JSON configuration storage;
- URL rule evaluation;
- incoming URL parsing;
- process-based browser launching.
Avalonia desktop application:
- settings interface;
- system tray icon and menu;
- configuration editing;
- browser-profile import;
- route preview;
- test URL launching.
macOS-specific integration:
- default-handler registration;
- native Swift helper;
- HTTP and HTTPS URL scheme handling.
Windows-specific integration:
- per-user URL-handler registration;
- Default Apps integration;
- HTTP and HTTPS protocol registration.
Default-handler registration requires macOS 12 or later and a packaged .app bundle.
Build a bundle for the current Apple Silicon Mac:
./build/macos/package.shBuild for an Intel Mac:
./build/macos/package.sh osx-x64The resulting application bundle is written to:
artifacts/macos/<rid>/Linkwise.app
After packaging:
- Open
Linkwise.app. - Configure and save a valid fallback browser target.
- Open the Fallback tab.
- Select Use Linkwise for Web Links.
- Confirm the HTTP and HTTPS handler changes if requested by macOS.
The packaging script:
- publishes the Avalonia application;
- compiles the native
Linkwise.DefaultHandlerhelper usingswiftc; - registers the HTTP and HTTPS schemes in
Info.plist; - applies an ad-hoc signature for local development.
A regular project build remains cross-platform and does not invoke Swift.
Incoming macOS open-URL events are handled through Avalonia's activatable lifetime. Command-line URL invocation remains available for local development.
The packaged Windows application requires the .NET 10 Runtime.
Build a framework-dependent Windows x64 package from PowerShell:
.\build\windows\package.ps1Build for Windows on ARM:
.\build\windows\package.ps1 -RuntimeIdentifier win-arm64The resulting application directory is written to:
artifacts\windows\<rid>\Linkwise
Keep this directory at a stable location before registering Linkwise as a URL handler.
After packaging:
- Run
Linkwise.Desktop.exe. - Configure and save a valid fallback browser target.
- Open the Fallback tab.
- Select Use Linkwise for Web Links.
- In Windows Default Apps, assign Linkwise to both HTTP and HTTPS.
Linkwise registers itself under HKEY_CURRENT_USER, so administrator privileges are not required.
Windows does not allow desktop applications to silently replace the user's HTTP and HTTPS handler selections. The final assignment must be confirmed through the Windows Settings application.
- .NET 10 SDK
- Windows or macOS
- Xcode Command Line Tools when packaging for macOS
Open the settings window:
dotnet run --project src/Linkwise.Desktop/Linkwise.Desktop.csprojSimulate an invocation from the operating system with a URL:
dotnet run \
--project src/Linkwise.Desktop/Linkwise.Desktop.csproj \
-- https://gitlab.company.local/projectBuild the desktop application and its dependencies:
dotnet build src/Linkwise.Desktop/Linkwise.Desktop.csprojPotential future improvements include:
- Linux default-handler integration;
- signed distributable packages;
- import and export of routing configurations;
- automatic update support;
- localization.
Issues and pull requests are welcome.
When reporting a platform-integration problem, include:
- operating system and version;
- Linkwise version or commit;
- affected browser;
- browser installation type;
- relevant application logs.
Linkwise is available under the MIT License.
Third-party components and their licenses are listed in THIRD-PARTY-NOTICES.md.
