Files
browser-dispatcher/index.ts
T
2026-07-26 10:35:21 +05:30

45 lines
1.0 KiB
TypeScript
Executable File

#!/home/silicoflare/.bun/bin/bun
import { spawn } from "bun";
import { workDomains, directWorkURLs } from "./data";
const url = process.argv[2] ?? "";
const WORK_BROWSER = "firefox";
const PERSONAL_BROWSER = "/home/silicoflare/Programs/waterfox/waterfox";
if (!workDomains || !directWorkURLs) {
console.error("Data is not loaded");
process.exit(1);
}
function getBrowser(url: string) {
const parsed = new URL(url);
// query param based
const queryParams = parsed.searchParams;
if (queryParams.has("work")) {
return WORK_BROWSER;
}
// domain based
const domain = parsed.hostname;
if (workDomains.some(workDomain => domain.includes(workDomain))) {
return WORK_BROWSER;
}
// direct URL based
if (directWorkURLs.some(directWorkURL => url.includes(directWorkURL))) {
return WORK_BROWSER;
}
return PERSONAL_BROWSER;
}
if (!url) {
// open personal browser if no URL is provided
spawn([PERSONAL_BROWSER]);
}
const browser = getBrowser(url);
spawn([browser, url]);