Skip to main content
Glama
windows.js2.22 kB
import {promisify} from 'node:util'; import {execFile} from 'node:child_process'; const execFileAsync = promisify(execFile); // TODO: Fix the casing of bundle identifiers in the next major version. // Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake // ones that look real and match the macOS/Linux versions for cross-platform apps. const windowsBrowserProgIds = { MSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // The missing `L` is correct. MSEdgeBHTML: {name: 'Edge Beta', id: 'com.microsoft.edge.beta'}, MSEdgeDHTML: {name: 'Edge Dev', id: 'com.microsoft.edge.dev'}, AppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'}, ChromeHTML: {name: 'Chrome', id: 'com.google.chrome'}, ChromeBHTML: {name: 'Chrome Beta', id: 'com.google.chrome.beta'}, ChromeDHTML: {name: 'Chrome Dev', id: 'com.google.chrome.dev'}, ChromiumHTM: {name: 'Chromium', id: 'org.chromium.Chromium'}, BraveHTML: {name: 'Brave', id: 'com.brave.Browser'}, BraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'}, BraveDHTML: {name: 'Brave Dev', id: 'com.brave.Browser.dev'}, BraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'}, FirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'}, OperaStable: {name: 'Opera', id: 'com.operasoftware.Opera'}, VivaldiHTM: {name: 'Vivaldi', id: 'com.vivaldi.Vivaldi'}, 'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'}, }; export const _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds)); export class UnknownBrowserError extends Error {} export default async function defaultBrowser(_execFileAsync = execFileAsync) { const {stdout} = await _execFileAsync('reg', [ 'QUERY', ' HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice', '/v', 'ProgId', ]); const match = /ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(stdout); if (!match) { throw new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`); } const {id} = match.groups; const browser = windowsBrowserProgIds[id]; if (!browser) { throw new UnknownBrowserError(`Unknown browser ID: ${id}`); } return browser; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kkShrihari/miEAA3_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server