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 +173 -30
- package/bin/glider.js +9 -10
- package/docs/setup.json +1 -1
- package/package.json +1 -1
- package/docs/BROWSERS.md +0 -185
package/README.md
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
<img src="
|
|
4
|
-
<img src="
|
|
5
|
-
<img src="
|
|
6
|
-
<img src="
|
|
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">
|
|
9
|
-
<p align="center"><i><b>Browser automation CLI with autonomous loop execution
|
|
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
|
-
|
|
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> <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
|
|
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
|
|
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. (
|
|
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
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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> <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
|
|
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 =
|
|
102
|
-
let pathOrNull =
|
|
103
|
-
let 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 +
|
|
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
|
|
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:
|
|
813
|
-
console.log('Registry:
|
|
814
|
-
console.log('See
|
|
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
|
|
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
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)
|