mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 13:00:44 +00:00
fix(browser): fall back to headless on Linux without display
This commit is contained in:
@@ -67,6 +67,10 @@ Notes:
|
||||
OpenClaw did not launch the browser process itself.
|
||||
- For local managed profiles, `openclaw browser stop` stops the spawned browser
|
||||
process.
|
||||
- On Linux hosts without `DISPLAY` or `WAYLAND_DISPLAY`, local managed profiles
|
||||
run headless automatically unless `OPENCLAW_BROWSER_HEADLESS=0`,
|
||||
`browser.headless=false`, or `browser.profiles.<name>.headless=false`
|
||||
explicitly requests a visible browser.
|
||||
|
||||
## If the command is missing
|
||||
|
||||
|
||||
@@ -31,9 +31,13 @@ Other common Linux launch failures:
|
||||
found stale `Singleton*` lock files in the managed profile directory. OpenClaw
|
||||
removes those locks and retries once when the lock points at a dead or
|
||||
different-host process.
|
||||
- `Missing X server or $DISPLAY` means OpenClaw is trying to launch a visible
|
||||
browser on a host without a desktop session. Use `browser.headless: true`,
|
||||
start `Xvfb`, or run OpenClaw in a real desktop session.
|
||||
- `Missing X server or $DISPLAY` means a visible browser was explicitly
|
||||
requested on a host without a desktop session. By default, local managed
|
||||
profiles now fall back to headless mode on Linux when `DISPLAY` and
|
||||
`WAYLAND_DISPLAY` are both unset. If you set `OPENCLAW_BROWSER_HEADLESS=0`,
|
||||
`browser.headless: false`, or `browser.profiles.<name>.headless: false`,
|
||||
remove that headed override, set `OPENCLAW_BROWSER_HEADLESS=1`, start `Xvfb`,
|
||||
or run OpenClaw in a real desktop session.
|
||||
|
||||
### Solution 1: Install Google Chrome (Recommended)
|
||||
|
||||
@@ -120,14 +124,15 @@ curl -s http://127.0.0.1:18791/tabs
|
||||
|
||||
### Config Reference
|
||||
|
||||
| Option | Description | Default |
|
||||
| ------------------------ | -------------------------------------------------------------------- | ----------------------------------------------------------- |
|
||||
| `browser.enabled` | Enable browser control | `true` |
|
||||
| `browser.executablePath` | Path to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium) | auto-detected (prefers default browser when Chromium-based) |
|
||||
| `browser.headless` | Run without GUI | `false` |
|
||||
| `browser.noSandbox` | Add `--no-sandbox` flag (needed for some Linux setups) | `false` |
|
||||
| `browser.attachOnly` | Don't launch browser, only attach to existing | `false` |
|
||||
| `browser.cdpPort` | Chrome DevTools Protocol port | `18800` |
|
||||
| Option | Description | Default |
|
||||
| --------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------- |
|
||||
| `browser.enabled` | Enable browser control | `true` |
|
||||
| `browser.executablePath` | Path to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium) | auto-detected (prefers default browser when Chromium-based) |
|
||||
| `browser.headless` | Run without GUI | `false` |
|
||||
| `OPENCLAW_BROWSER_HEADLESS` | Per-process override for local managed browser headless mode | unset |
|
||||
| `browser.noSandbox` | Add `--no-sandbox` flag (needed for some Linux setups) | `false` |
|
||||
| `browser.attachOnly` | Don't launch browser, only attach to existing | `false` |
|
||||
| `browser.cdpPort` | Chrome DevTools Protocol port | `18800` |
|
||||
|
||||
### Problem: "No Chrome tabs found for profile=\"user\""
|
||||
|
||||
|
||||
@@ -194,6 +194,14 @@ Browser settings live in `~/.openclaw/openclaw.json`.
|
||||
|
||||
- `attachOnly: true` means never launch a local browser; only attach if one is already running.
|
||||
- `headless` can be set globally or per local managed profile. Per-profile values override `browser.headless`, so one locally launched profile can stay headless while another remains visible.
|
||||
- On Linux hosts without `DISPLAY` or `WAYLAND_DISPLAY`, local managed profiles
|
||||
default to headless automatically when neither the environment nor profile/global
|
||||
config explicitly chooses headed mode. `openclaw browser status --json`
|
||||
reports `headlessSource` as `env`, `profile`, `config`,
|
||||
`linux-display-fallback`, or `default`.
|
||||
- `OPENCLAW_BROWSER_HEADLESS=1` forces local managed launches headless for the
|
||||
current process. `OPENCLAW_BROWSER_HEADLESS=0` forces headed mode and returns
|
||||
an actionable error on Linux hosts without a display server.
|
||||
- `executablePath` can be set globally or per local managed profile. Per-profile values override `browser.executablePath`, so different managed profiles can launch different Chromium-based browsers.
|
||||
- `color` (top-level and per-profile) tints the browser UI so you can see which profile is active.
|
||||
- Default profile is `openclaw` (managed standalone). Use `defaultProfile: "user"` to opt into the signed-in user browser.
|
||||
|
||||
Reference in New Issue
Block a user