mirror of
https://github.com/alyraffauf/switchyard.git
synced 2026-06-04 06:46:52 +00:00
Modern rules-based browser launcher and link redirector ready to replace your default browser.
https://switchyard.aly.codes/
- Go 83.2%
- Python 7.9%
- Just 3.1%
- TypeScript 2.3%
- Nix 2%
- Other 1.5%
| .github | ||
| browser-setup | ||
| data | ||
| docs | ||
| flake | ||
| flatpak | ||
| scripts | ||
| src | ||
| vendor | ||
| webextension | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| justfile | ||
| LICENSE.md | ||
| README.md | ||
Switchyard
A rules-based browser launcher for Linux.
Features
- Browser rules: Automatically open links in specific browsers based on conditions you define.
- Link redirections: Clean up links before they open—remove tracking parameters, swap domains, and more.
- Quick launcher: When no rule matches, choose a browser with a click or keyboard shortcut.
- Lightweight: Runs only when you click a link. No background processes.
- GTK4 + libadwaita: Native GNOME look and feel.
Installation
Flatpak (Recommended)
Switchyard is available on Flathub:
flatpak install flathub io.github.alyraffauf.Switchyard
Nix Flake
nix run github:alyraffauf/switchyard
Building from Source
For non-Flatpak builds, requires Go 1.24+, GTK4/libadwaita development libraries, and just.
just install-deps # For Fedora
just build
sudo just install # To /usr/local
Building Flatpak
just flatpak # Build and install
Documentation
- Using - Set as default browser, usage examples.
- Configuration - Config file format, rules, and settings.
- URI Scheme - Custom
switchyard://URLs for specifying browser preferences. - Bowser Extension - Extensions for Firefox and Chrome.
- Prior Art - Similar tools that inspired Switchyard.
Notes
Flaktpak on NixOS: host browsers are not detected
On NixOS, browser desktop files live in /run/current-system/sw/share/applications, which is not visible inside Flatpak by default.
To expose them to Switchyard, add the path to the XDG application search path:
flatpak override --user io.github.alyraffauf.Switchyard \
--filesystem=/run/current-system/sw/share:ro \
--env=XDG_DATA_DIRS=/app/share:/usr/share:/run/current-system/sw/share