glidercli 0.3.6 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  <div align="center">
2
2
 
3
- <img src="assets/icons/glider-blue-squircle.webp" alt="glider" width="80" height="80" />
4
- <img src="assets/icons/chrome.webp" alt="chrome" width="80" height="80" />
5
- <img src="assets/icons/claude.webp" alt="claude" width="80" height="80" />
6
- <img src="assets/icons/ralph-wiggum.webp" alt="ralph" width="80" height="80" />
3
+ <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/glider.webp" alt="glider" width="80" height="80" />
4
+ <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chrome.webp" alt="chrome" width="80" height="80" />
5
+ <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/claude.webp" alt="claude" width="80" height="80" />
6
+ <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/ralph-wiggum.webp" alt="ralph" width="80" height="80" />
7
7
 
8
- <h1 align="center">glidercli</h1>
9
- <p align="center"><i><b>Browser automation CLI with autonomous loop execution.</b></i></p>
8
+ <h1 align="center">glider CLI</h1>
9
+ <p align="center"><i><b>Browser automation CLI with autonomous loop execution</b></i></p>
10
10
 
11
- [![Github][github]][github-url]
12
- [![npm][npm]][npm-url]
11
+ <a href="https://github.com/vdutts7/glidercli"><img src="./assets/badges/github.badge.svg" alt="GitHub" height="34" /></a> &nbsp; <a href="https://www.npmjs.com/package/glidercli"><img src="./assets/badges/npm.badge.svg" alt="npm install" height="34" /></a>
13
12
 
14
13
  </div>
15
14
 
@@ -19,7 +18,7 @@
19
18
 
20
19
  | | |
21
20
  |---|---|
22
- | **What** | Control a Chromium-based browser from the terminal via CDP; run YAML tasks; loop until done (Ralph Wiggum pattern). |
21
+ | **What** | Control a **Chromium-based** browser from the terminal via CDP, run YAML tasks, and loop until done (Ralph Wiggum pattern) |
23
22
  | **CDP** | Chrome DevTools Protocol via relay + browser extension |
24
23
  | **Tasks** | Declarative steps: `goto`, `click`, `explore`, `eval`, `screenshot` |
25
24
  | **Loops** | Run until completion marker or max iterations / timeout |
@@ -32,9 +31,9 @@
32
31
  | Step | Action |
33
32
  |------|--------|
34
33
  | **1. CLI** | `npm i -g glidercli` |
35
- | **2. Extension** | [Install Glider from Chrome Web Store](https://chromewebstore.google.com/detail/glider/njbidokkffhgpofcejgcfcgcinmeoalj) (required; bridges relay ↔ tab). |
34
+ | **2. Extension** | [Install Glider from Chrome Web Store](https://chromewebstore.google.com/detail/glider/njbidokkffhgpofcejgcfcgcinmeoalj) in the same browser/profile you will automate (required, bridges relay ↔ tab) |
36
35
  | **3. Daemon** | `glider install` then `glider connect` |
37
- | **4. (Optional) Browser** | Default: Chrome. For Arc/Edge/Brave: [BROWSERS.md](docs/BROWSERS.md) or `export GLIDER_BROWSER=Arc` |
36
+ | **4. Browser (required setup)** | Configure supported browser/profile + extension in the **Browsers** section below. |
38
37
 
39
38
 
40
39
  ## Requirements
@@ -42,7 +41,158 @@
42
41
  | Requirement | Minimum |
43
42
  |-------------|---------|
44
43
  | Node | 18+ |
45
- | Browser | Chromium-based (Chrome, Arc, Edge, Brave, Opera, Vivaldi, DuckDuckGo). No Firefox/Safari → [BROWSERS.md](docs/BROWSERS.md) |
44
+ | Browser | Chromium-based (Chrome, Arc, Edge, Brave, Opera, Vivaldi) with the Glider extension installed/enabled in that browser profile. No Firefox/Safari/DuckDuckGo |
45
+
46
+ ---
47
+
48
+ ## Browsers
49
+
50
+ | | |
51
+ |---|---|
52
+ | **How it works** | Chrome extension → WebSocket relay → CDP. Browser must support that extension (Chromium-based). |
53
+
54
+ ### Browser support
55
+
56
+ **Extension:** Install [Glider](https://chromewebstore.google.com/detail/glider/njbidokkffhgpofcejgcfcgcinmeoalj) from the Chrome Web Store in each browser/profile you plan to automate
57
+
58
+ | | Browser | Config |
59
+ |:---:|--------|--------|
60
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chrome.webp" width="16" alt=""> | Google Chrome | Default for `glider connect`|
61
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/arc.webp" width="16" alt=""> | Arc | [browser.json](config/browser.json.example) (`{ "use": "arc" }`) |
62
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/microsoft/microsoft-edge.webp" width="16" alt=""> | Microsoft Edge | n/a |
63
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/brave.webp" width="16" alt=""> | Brave | n/a |
64
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/operagx.webp" width="16" alt=""> | Opera | n/a |
65
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/vivaldi.webp" width="16" alt=""> | Vivaldi | n/a |
66
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chromium.webp" width="16" alt=""> | Other Chromium | Must support installing extensions from the Chrome Web Store. |
67
+
68
+ ### Future
69
+
70
+ - not supported today
71
+ - Glider needs a **Chromium-based** browser that can install the extension from the **Chrome Web Store**
72
+ - no timeline implied- listed for clarity
73
+
74
+
75
+ | | Browser | Notes |
76
+ |:---:|--------|--------|
77
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/firefox.webp" width="16" alt=""> | Firefox | **Gecko** (Firefox engine). Not Chromium, Glider uses a Chrome Web Store extension + CDP |
78
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/firefox-focus.webp" width="16" alt=""> | Firefox Focus | Gecko- same constraints as Firefox |
79
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/firefox.webp" width="16" alt=""> | Firefox Klar | Gecko (Focus branding in some regions)- same constraints as Firefox |
80
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/librewolf.webp" width="16" alt=""> | LibreWolf | Gecko- same constraints as Firefox |
81
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/waterfox.webp" width="16" alt=""> | Waterfox | Gecko- same constraints as Firefox |
82
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/zen.webp" width="16" alt=""> | Zen | Gecko- same constraints as Firefox |
83
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/floorp.webp" width="16" alt=""> | Floorp | Gecko- same constraints as Firefox |
84
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/tor-browser.webp" width="16" alt=""> | Tor Browser | Gecko- same constraints as Firefox |
85
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/mullvad-browser.webp" width="16" alt=""> | Mullvad Browser | Gecko- same constraints as Firefox |
86
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/icecat.webp" width="16" alt=""> | IceCat | Gecko- same constraints as Firefox |
87
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/safari.webp" width="16" alt=""> | Safari | WebKit (Apple desktop). Not Chromium |
88
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/orion.webp" width="16" alt=""> | Orion | WebKit-based desktop browser. Not Chromium |
89
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chatgpt-atlas.webp" width="16" alt=""> | ChatGPT Atlas | AI-first browser, not in Glider’s supported Chromium + CWS model today |
90
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/perplexity-comet.webp" width="16" alt=""> | Perplexity Comet | AI-first browser, not in Glider’s supported Chromium + CWS model today |
91
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/bromite.webp" width="16" alt=""> | Bromite | Chromium-derived, no practical Chrome Web Store path for Glider |
92
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chromium.webp" width="16" alt=""> | Chromite | Chromium-derived, no practical Chrome Web Store path for Glider |
93
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/grapheneos.webp" width="16" alt=""> | Vanadium | Chromium-derived (GrapheneOS), no practical Chrome Web Store path for Glider |
94
+ | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/duckduckgo.webp" width="16" alt=""> | DuckDuckGo | No practical Chrome Web Store extension install path for Glider |
95
+
96
+ ### Configuring the browser
97
+
98
+ **Priority (highest first):** config file -> default `Google Chrome`
99
+
100
+ #### Config file: `$HOME/.glider/config/browser.json`
101
+
102
+ Use a **registry key** or explicit name/path in the file
103
+
104
+ **Option A- Registry key (recommended):**
105
+
106
+ Set browser by key from the browsers registry. Run `glider use <key>` to write this.
107
+
108
+ ```json
109
+ {
110
+ "use": "arc"
111
+ }
112
+ ```
113
+
114
+ Registry is loaded from (first found): `$HOME/.cursor/registry/browsers.json`, `$HOME/.glider/config/browsers-registry.json`. Keys are predefined (e.g. `arc`, `brave`, `chrome`, `edge`, `opera`, `vivaldi`, `chromium`). Edit the registry to add or change paths
115
+
116
+ **Option B- Explicit name/path:**
117
+
118
+ | Field | Required | Description |
119
+ |-------|:--------:|-------------|
120
+ | `name` | Yes* | App name for `open -a` / AppleScript. Must match system (e.g. `Arc`, `Google Chrome`). |
121
+ | `path` | No | If set, use `open "<path>"` instead of `open -a "<name>"`. For non-default install location. |
122
+ | `processName` | No | For `pgrep -x`. Defaults to `name`. |
123
+
124
+ \* Omit `name` when using `use` (registry key).
125
+
126
+ **Example:**
127
+
128
+ ```json
129
+ {
130
+ "name": "Arc",
131
+ "path": "/Applications/Arc.app",
132
+ "processName": "Arc"
133
+ }
134
+ ```
135
+
136
+ **By browser:**
137
+
138
+ | Browser | `name` | `path` (optional) | `processName` (optional) |
139
+ |---------|--------|-------------------|---------------------------|
140
+ | Arc | `Arc` | `/Applications/Arc.app` | `Arc` |
141
+ | Edge | `Microsoft Edge` | n/a | `Microsoft Edge` |
142
+ | Chrome (custom) | `Google Chrome` | `/Users/me/Applications/Google Chrome.app` | `Google Chrome` |
143
+
144
+ Check app name in Finder/Spotlight, process name: `ps aux | grep -i <name>`
145
+
146
+ ### Browser registry (keymap)
147
+
148
+ A single registry file can define all Chromium browsers, Glider picks one by **key**
149
+
150
+ **Registry location (first found):**
151
+
152
+ - `$HOME/.cursor/registry/browsers.json`
153
+ - `$HOME/.glider/config/browsers-registry.json`
154
+
155
+ **Registry format:**
156
+
157
+ ```json
158
+ {
159
+ "version": "1.0",
160
+ "registry": {
161
+ "arc": { "name": "Arc", "path": "/Applications/Arc.app", "processName": "Arc" },
162
+ "brave": { "name": "Brave Browser", "path": "/Applications/Brave Browser.app", "processName": "Brave Browser" },
163
+ "chrome": { "name": "Google Chrome", "path": "/Applications/Google Chrome.app", "processName": "Google Chrome" },
164
+ "edge": { "name": "Microsoft Edge", "path": "/Applications/Microsoft Edge.app", "processName": "Microsoft Edge" }
165
+ }
166
+ }
167
+ ```
168
+
169
+ **Commands:**
170
+
171
+ | Command | Effect |
172
+ |---------|--------|
173
+ | `glider use arc` | Set `$HOME/.glider/config/browser.json` to `{ "use": "arc" }` (resolved from registry). |
174
+ | `glider use brave` | Switch to Brave. |
175
+ | `glider use` | Show current key and list of registry keys. |
176
+ | `glider browser` | Show resolved name, path, processName (and `use` key if set). |
177
+
178
+ Add or edit entries in the registry to match your machine (e.g. custom install paths). Keys are stable, point Glider at one by name.
179
+
180
+ ### Platform
181
+
182
+ | Platform | Behavior |
183
+ |----------|----------|
184
+ | macOS | `open -a "<name>"` or `open "<path>"`, AppleScript for tab/window. `name` = exact app name |
185
+ | Linux / Windows | Not fully implemented. Future: `path` may be executable. |
186
+
187
+ ### Browser summary
188
+
189
+ | Topic | Detail |
190
+ |-------|--------|
191
+ | Supported | Chromium-based + Chrome Web Store extension (see table above). |
192
+ | Not supported | See **Future** in this README. |
193
+ | Configure | `$HOME/.glider/config/browser.json` (use key or name/path). Registry: `$HOME/.cursor/registry/browsers.json` or `$HOME/.glider/config/browsers-registry.json` |
194
+ | Switch | `glider use <key>` (e.g. `glider use arc`, `glider use brave`). |
195
+ | Path | Optional, use when app is not in default location |
46
196
 
47
197
  ---
48
198
 
@@ -68,10 +218,10 @@ glider loop task.yaml -n 50
68
218
  ```yaml
69
219
  name: "Reddit"
70
220
  steps:
71
- - goto: "https://reddit.com"
72
- - wait: 2
73
- - eval: "document.title"
74
- - screenshot: "/tmp/out.png"
221
+ - goto: "https://reddit.com"
222
+ - wait: 2
223
+ - eval: "document.title"
224
+ - screenshot: "/tmp/out.png"
75
225
  ```
76
226
 
77
227
  ---
@@ -93,7 +243,7 @@ steps:
93
243
  | `glider run <file>` | Run YAML task |
94
244
  | `glider loop <file> [-n N]` | Loop until done or limit |
95
245
 
96
- Full list: `glider --help`.
246
+ Full list: `glider --help`
97
247
 
98
248
  ---
99
249
 
@@ -101,28 +251,21 @@ Full list: `glider --help`.
101
251
 
102
252
  | Doc | Contents |
103
253
  |-----|----------|
104
- | This README | Install, usage, commands |
105
- | [docs/BROWSERS.md](docs/BROWSERS.md) | Which browsers work; browser name/path (env or `~/.glider/config/browser.json`) |
254
+ | This README | Install, usage, commands, full browser support/config |
106
255
  | [config/browser.json.example](config/browser.json.example) | Example browser config |
107
256
 
108
257
  ---
109
258
 
110
259
  ## Roadmap
111
260
 
112
- | Status | Area |
113
- |--------|------|
114
- | Done | CDP relay + extension, YAML tasks, loop, daemon, multi-tab |
115
- | Todo | Linux / Windows, headless, task chaining, scraping templates |
261
+ - [x] CDP relay + extension, YAML tasks, loop, daemon, multi-tab
262
+ - [ ] Linux / Windows
263
+ - [ ] headless (cloud)
264
+ - [ ] task chaining
265
+ - [ ] crawling templates
116
266
 
117
267
  ---
118
268
 
119
269
  ## Contact
120
270
 
121
271
  <a href="https://vd7.io"><img src="https://res.cloudinary.com/ddyc1es5v/image/upload/v1773910810/readme-badges/readme-badge-vd7.png" alt="vd7.io" height="40" /></a> &nbsp; <a href="https://x.com/vdutts7"><img src="https://res.cloudinary.com/ddyc1es5v/image/upload/v1773910817/readme-badges/readme-badge-x.png" alt="/vdutts7" height="40" /></a>
122
-
123
-
124
- <!-- BADGES -->
125
- [github]: https://img.shields.io/badge/glidercli-000000?style=for-the-badge&logo=github
126
- [github-url]: https://github.com/vdutts7/glidercli
127
- [npm]: https://img.shields.io/badge/npm%20i%20--g%20glidercli-CB3837?style=for-the-badge&logo=npm
128
- [npm-url]: https://www.npmjs.com/package/glidercli
package/bin/glider.js CHANGED
@@ -65,7 +65,7 @@ for (const cfgPath of DOMAIN_CONFIG_PATHS) {
65
65
  }
66
66
  }
67
67
 
68
- // Browser config - which browser to launch/use (must be Chromium-based, see docs/BROWSERS.md)
68
+ // Browser config- which browser to launch/use (must be Chromium-based, see README.md#Browsers)
69
69
  const BROWSER_CONFIG_PATHS = [
70
70
  path.join(os.homedir(), '.glider', 'config', 'browser.json'),
71
71
  path.join(os.homedir(), '.glider', 'browser.json'),
@@ -82,7 +82,6 @@ for (const cfgPath of BROWSER_CONFIG_PATHS) {
82
82
 
83
83
  // Browsers registry - key → { name, path, processName }. Used when browser.json has "use": "<key>"
84
84
  const BROWSERS_REGISTRY_PATHS = [
85
- process.env.GLIDER_BROWSERS_REGISTRY,
86
85
  path.join(os.homedir(), '.cursor', 'registry', 'browsers.json'),
87
86
  path.join(os.homedir(), '.glider', 'config', 'browsers-registry.json'),
88
87
  ].filter(Boolean);
@@ -98,9 +97,9 @@ for (const regPath of BROWSERS_REGISTRY_PATHS) {
98
97
  }
99
98
 
100
99
  function getBrowserConfig() {
101
- let name = process.env.GLIDER_BROWSER || BROWSER_CONFIG.name;
102
- let pathOrNull = process.env.GLIDER_BROWSER_PATH || BROWSER_CONFIG.path || null;
103
- let processName = process.env.GLIDER_BROWSER_PROCESS || BROWSER_CONFIG.processName;
100
+ let name = BROWSER_CONFIG.name || null;
101
+ let pathOrNull = BROWSER_CONFIG.path || null;
102
+ let processName = BROWSER_CONFIG.processName || null;
104
103
 
105
104
  // Key-based lookup: browser.json has { "use": "arc" } → resolve from registry
106
105
  if (!name && BROWSER_CONFIG.use && BROWSERS_REGISTRY[BROWSER_CONFIG.use]) {
@@ -679,7 +678,7 @@ async function cmdConnect() {
679
678
  await new Promise(r => setTimeout(r, 1000));
680
679
  }
681
680
 
682
- // 2. Ensure browser is running (see getBrowserConfig + docs/BROWSERS.md)
681
+ // 2. Ensure browser is running (see getBrowserConfig + README.md#Browsers)
683
682
  const browser = getBrowserConfig();
684
683
  try {
685
684
  execSync(`pgrep -x "${browser.processName}"`, { stdio: 'ignore' });
@@ -701,7 +700,7 @@ async function cmdConnect() {
701
700
 
702
701
  if (!await checkExtension()) {
703
702
  log.fail('Extension not connected to relay');
704
- log.info(`Make sure Glider extension is installed in ${browser.name} (Chromium-based only; see glider docs/BROWSERS.md)`);
703
+ log.info(`Make sure Glider extension is installed in ${browser.name} (Chromium-based only; see glider README.md#Browsers)`);
705
704
  process.exit(1);
706
705
  }
707
706
  log.ok('Extension connected');
@@ -809,9 +808,9 @@ function cmdBrowser() {
809
808
  console.log(` use: ${BROWSER_CONFIG.use} ${DIM}(from registry)${NC}`);
810
809
  }
811
810
  console.log('');
812
- console.log('Source: GLIDER_BROWSER* env → ~/.glider/config/browser.json { "use": "<key>" } or { name, path } → default "Google Chrome"');
813
- console.log('Registry: GLIDER_BROWSERS_REGISTRY or ~/.cursor/registry/browsers.json. Keys: ' + Object.keys(BROWSERS_REGISTRY).join(', ') || '(none loaded)');
814
- console.log('See docs/BROWSERS.md for compatibility and examples.');
811
+ console.log('Source: ~/.glider/config/browser.json { "use": "<key>" } or { name, path } → default "Google Chrome"');
812
+ console.log('Registry: ~/.cursor/registry/browsers.json or ~/.glider/config/browsers-registry.json. Keys: ' + (Object.keys(BROWSERS_REGISTRY).join(', ') || '(none loaded)'));
813
+ console.log('See README.md#browsers for compatibility and examples.');
815
814
  }
816
815
 
817
816
  function cmdUse(key) {
package/docs/setup.json CHANGED
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "requirements": {
12
12
  "node": ">=18",
13
- "browser": "Chromium-based (Chrome, Arc, Edge, Brave, etc.); see docs/BROWSERS.md",
13
+ "browser": "Chromium-based (Chrome, Arc, Edge, Brave, etc.); see README Browsers section",
14
14
  "os": "macOS (tested), Linux (untested), Windows (untested)"
15
15
  },
16
16
  "install": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "glidercli",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "Browser automation CLI. Control Chrome from terminal via CDP, run YAML task files, autonomous loops until completion.",
5
5
  "main": "index.js",
6
6
  "bin": {
package/docs/BROWSERS.md DELETED
@@ -1,185 +0,0 @@
1
- # Glider browser support and configuration
2
-
3
- | | |
4
- |---|---|
5
- | **Install / usage** | [README](../README.md) |
6
- | **How it works** | Chrome extension → WebSocket relay → CDP. Browser must support that extension (Chromium-based). |
7
-
8
- ---
9
-
10
- ## Browser support
11
-
12
- Icons: `https://raw.githubusercontent.com/vdutts7/squircle/main/webp/{slug}.webp` ([squircle](https://github.com/vdutts7/squircle)).
13
-
14
- **Extension:** Install [Glider](https://chromewebstore.google.com/detail/glider/njbidokkffhgpofcejgcfcgcinmeoalj) from the Chrome Web Store — same for every browser in this table.
15
-
16
- | | Browser | Config |
17
- |:---:|--------|--------|
18
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chrome.webp" width="16" alt=""> | Google Chrome | Default for `glider connect`. |
19
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/arc.webp" width="16" alt=""> | Arc | `GLIDER_BROWSER=Arc` or [browser.json](../config/browser.json.example). |
20
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/microsoft/microsoft-edge.webp" width="16" alt=""> | Microsoft Edge | — |
21
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/brave.webp" width="16" alt=""> | Brave | — |
22
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/opera-gx.webp" width="16" alt=""> | Opera | — |
23
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/vivaldi.webp" width="16" alt=""> | Vivaldi | — |
24
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/duckduckgo.webp" width="16" alt=""> | DuckDuckGo Desktop | — |
25
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chromium.webp" width="16" alt=""> | Other Chromium | Must support installing extensions from the Chrome Web Store. |
26
-
27
- See **[Future](#future)** for browsers not supported today.
28
-
29
- ---
30
-
31
- ## Future
32
-
33
- Not supported today: Glider needs a **Chromium-based** browser that can install the extension from the **Chrome Web Store**. No timeline implied; listed for clarity.
34
-
35
- Same icon base as above: `https://raw.githubusercontent.com/vdutts7/squircle/main/webp/{slug}.webp`.
36
-
37
- | | Browser | Notes |
38
- |:---:|--------|--------|
39
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/firefox.webp" width="16" alt=""> | Firefox | **Gecko** (Firefox engine). Not Chromium; Glider uses a Chrome Web Store extension + CDP. |
40
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/librewolf.webp" width="16" alt=""> | LibreWolf | Gecko — same constraints as Firefox. |
41
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/waterfox.webp" width="16" alt=""> | Waterfox | Gecko — same constraints as Firefox. |
42
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/zen.webp" width="16" alt=""> | Zen | Gecko — same constraints as Firefox. |
43
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/floorp.webp" width="16" alt=""> | Floorp | Gecko — same constraints as Firefox. |
44
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/tor-browser.webp" width="16" alt=""> | Tor Browser | Gecko — same constraints as Firefox. |
45
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/mullvad-browser.webp" width="16" alt=""> | Mullvad Browser | Gecko — same constraints as Firefox. |
46
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/icecat.webp" width="16" alt=""> | IceCat | Gecko — same constraints as Firefox. |
47
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/firefox-focus.webp" width="16" alt=""> | Firefox Focus | Gecko — same constraints as Firefox. |
48
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/firefox.webp" width="16" alt=""> | Firefox Klar | Gecko (Focus branding in some regions) — same constraints as Firefox. |
49
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/safari.webp" width="16" alt=""> | Safari | WebKit (Apple desktop). Not Chromium. |
50
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/orion.webp" width="16" alt=""> | Orion | WebKit-based desktop browser. Not Chromium. |
51
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chatgpt-atlas.webp" width="16" alt=""> | ChatGPT Atlas | AI-first browser; not in Glider’s supported Chromium + CWS model today. |
52
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/perplexity-comet.webp" width="16" alt=""> | Perplexity Comet | AI-first browser; not in Glider’s supported Chromium + CWS model today. |
53
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/bromite.webp" width="16" alt=""> | Bromite | Chromium-derived; no practical Chrome Web Store path for Glider. |
54
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/chromium.webp" width="16" alt=""> | Chromite | Chromium-derived; no practical Chrome Web Store path for Glider. |
55
- | <img src="https://raw.githubusercontent.com/vdutts7/squircle/main/webp/grapheneos.webp" width="16" alt=""> | Vanadium | Chromium-derived (GrapheneOS); no practical Chrome Web Store path for Glider. |
56
-
57
- ---
58
-
59
- ## Configuring the browser
60
-
61
- **Priority (highest first):** env vars → config file → default `Google Chrome`.
62
-
63
- ### Environment variables
64
-
65
- | Variable | Purpose | Example |
66
- |----------|---------|---------|
67
- | `GLIDER_BROWSER` | App name (`open -a`, AppleScript) | `Arc`, `Google Chrome`, `Microsoft Edge` |
68
- | `GLIDER_BROWSER_PATH` | (Optional) Path to app bundle | `/Applications/My Apps/Chrome.app` |
69
- | `GLIDER_BROWSER_PROCESS` | (Optional) Process name for `pgrep` | Defaults to same as `GLIDER_BROWSER` |
70
-
71
- **Examples:**
72
-
73
- | Use case | Command |
74
- |----------|---------|
75
- | Arc | `export GLIDER_BROWSER=Arc` then `glider connect` |
76
- | Custom Chrome path | `export GLIDER_BROWSER="Google Chrome"` and `export GLIDER_BROWSER_PATH="/Applications/My Apps/Google Chrome.app"` |
77
-
78
- ### Config file: `$HOME/.glider/config/browser.json`
79
-
80
- Same keys as env, or use a **registry key**. Env overrides file.
81
-
82
- **Option A — Registry key (recommended):**
83
-
84
- Set browser by key from the browsers registry. Run `glider use <key>` to write this.
85
-
86
- ```json
87
- {
88
- "use": "arc"
89
- }
90
- ```
91
-
92
- Registry is loaded from (first found): `GLIDER_BROWSERS_REGISTRY` env, `$HOME/.cursor/registry/browsers.json`, `$HOME/.glider/config/browsers-registry.json`. Keys are predefined (e.g. `arc`, `brave`, `chrome`, `edge`, `opera`, `vivaldi`, `duckduckgo`, `chromium`). Edit the registry to add or change paths.
93
-
94
- **Option B — Explicit name/path:**
95
-
96
- | Field | Required | Description |
97
- |-------|:--------:|-------------|
98
- | `name` | Yes* | App name for `open -a` / AppleScript. Must match system (e.g. `Arc`, `Google Chrome`). |
99
- | `path` | No | If set, use `open "<path>"` instead of `open -a "<name>"`. For non-default install location. |
100
- | `processName` | No | For `pgrep -x`. Defaults to `name`. |
101
-
102
- \* Omit `name` when using `use` (registry key).
103
-
104
- **Example:**
105
-
106
- ```json
107
- {
108
- "name": "Arc",
109
- "path": "/Applications/Arc.app",
110
- "processName": "Arc"
111
- }
112
- ```
113
-
114
- **By browser:**
115
-
116
- | Browser | `name` | `path` (optional) | `processName` (optional) |
117
- |---------|--------|-------------------|---------------------------|
118
- | Arc | `Arc` | `/Applications/Arc.app` | `Arc` |
119
- | Edge | `Microsoft Edge` | — | `Microsoft Edge` |
120
- | Chrome (custom) | `Google Chrome` | `/Users/me/Applications/Google Chrome.app` | `Google Chrome` |
121
- | DuckDuckGo | `DuckDuckGo` | — | `DuckDuckGo` |
122
-
123
- Check app name in Finder/Spotlight; process name: `ps aux | grep -i <name>`.
124
-
125
- ---
126
-
127
- ## Browser registry (keymap)
128
-
129
- A single registry file can define all Chromium browsers; Glider picks one by key.
130
-
131
- **Registry location (first found):**
132
-
133
- - `GLIDER_BROWSERS_REGISTRY` (env, path to JSON file)
134
- - `$HOME/.cursor/registry/browsers.json`
135
- - `$HOME/.glider/config/browsers-registry.json`
136
-
137
- **Registry format:**
138
-
139
- ```json
140
- {
141
- "version": "1.0",
142
- "registry": {
143
- "arc": { "name": "Arc", "path": "/Applications/Arc.app", "processName": "Arc" },
144
- "brave": { "name": "Brave Browser", "path": "/Applications/Brave Browser.app", "processName": "Brave Browser" },
145
- "chrome": { "name": "Google Chrome", "path": "/Applications/Google Chrome.app", "processName": "Google Chrome" },
146
- "edge": { "name": "Microsoft Edge", "path": "/Applications/Microsoft Edge.app", "processName": "Microsoft Edge" }
147
- }
148
- }
149
- ```
150
-
151
- **Commands:**
152
-
153
- | Command | Effect |
154
- |---------|--------|
155
- | `glider use arc` | Set `$HOME/.glider/config/browser.json` to `{ "use": "arc" }` (resolved from registry). |
156
- | `glider use brave` | Switch to Brave. |
157
- | `glider use` | Show current key and list of registry keys. |
158
- | `glider browser` | Show resolved name, path, processName (and `use` key if set). |
159
-
160
- Add or edit entries in the registry to match your machine (e.g. custom install paths). Keys are stable; point Glider at one by name.
161
-
162
- ---
163
-
164
- ## Platform
165
-
166
- | Platform | Behavior |
167
- |----------|----------|
168
- | macOS | `open -a "<name>"` or `open "<path>"`; AppleScript for tab/window. `name` = exact app name. |
169
- | Linux / Windows | Not fully implemented. Future: `path` may be executable. |
170
-
171
- ---
172
-
173
- ## Summary
174
-
175
- | Topic | Detail |
176
- |-------|--------|
177
- | Supported | Chromium-based + Chrome Web Store extension (see table above). |
178
- | Not supported | See [Future](#future). |
179
- | Configure | `$HOME/.glider/config/browser.json` (use key or name/path) and/or `GLIDER_BROWSER*`. Registry: `$HOME/.cursor/registry/browsers.json` or `GLIDER_BROWSERS_REGISTRY`. |
180
- | Switch | `glider use <key>` (e.g. `glider use arc`, `glider use brave`). |
181
- | Path | Optional; use when app is not in default location. |
182
-
183
- ---
184
-
185
- [← README](../README.md)