stablyai/orca · error · Error
The native IBus Hangul E2E runner requires Linux/X11
Error message
The native IBus Hangul E2E runner requires Linux/X11
What it means
runOuter() is the entry point of the native IBus Hangul E2E runner. The very first guard rejects non-Linux hosts because the entire flow depends on X11, IBus, gsettings, xfwm4, and xvfb-run — none of which are available on macOS/Windows. Failing fast prevents confusing downstream spawn errors.
Source
Thrown at config/scripts/run-terminal-ibus-hangul-e2e.mjs:247
)
}
if (evidence.ibusGroupAfterCleanup.length > 0) {
throw new Error(
`Owned IBus processes survived cleanup: ${evidence.ibusGroupAfterCleanup.join('; ')}`
)
}
if (evidence.windowManagerGroupAfterCleanup.length > 0) {
throw new Error(
`Owned window-manager processes survived cleanup: ${evidence.windowManagerGroupAfterCleanup.join('; ')}`
)
}
return testExitCode
}
async function runOuter() {
if (process.platform !== 'linux') {
throw new Error('The native IBus Hangul E2E runner requires Linux/X11')
}
const evidenceDir = mkdtempSync(path.join(os.tmpdir(), 'orca-terminal-ime-e2e-'))
const runtimeDir = path.join(evidenceDir, 'runtime')
mkdirSync(runtimeDir, { mode: 0o700 })
mkdirSync(path.join(evidenceDir, 'config'))
mkdirSync(path.join(evidenceDir, 'cache'))
console.error(`[terminal-ime] evidence directory: ${evidenceDir}`)
const sessionProcess = spawn(
'xvfb-run',
[
'--auto-servernum',
'dbus-run-session',
'--',
process.execPath,
scriptPath,
insideSessionFlag,View on GitHub (pinned to 1136503c6a)
Solutions
- Run only on Linux: use a Linux CI runner, or guard the package.json script with a platform check.
- If developing on another OS, run the test inside a Linux container/VM.
- Wire the runner behind a `uname`/platform gate in the calling task so it is skipped on non-Linux.
Example fix
// package.json
"test:e2e:terminal-ibus-hangul-native": "node -e "process.platform==='linux' && require('child_process').execSync('node config/scripts/run-terminal-ibus-hangul-e2e.mjs',{stdio:'inherit'})"" Defensive patterns
Strategy: validation
Validate before calling
if (process.platform !== 'linux') {
console.error('Skipping native IBus Hangul E2E: requires Linux/X11')
process.exit(0) // skip, not fail
} Type guard
function isLinux(platform: string): platform is 'linux' {
return platform === 'linux'
} Prevention
- Guard the package.json script with a platform check so non-Linux runners skip cleanly.
- Document the Linux-only requirement in CI matrix leg names.
- Use a container/VM for cross-OS development.
When it happens
Trigger: Invoking the native IBus Hangul E2E script on macOS or Windows (process.platform === 'darwin' or 'win32').
Common situations: A developer on macOS runs the wrong pnpm task; CI matrix lacks a linux leg guard; the universal test script dispatches this runner on every OS.
Related errors
- This repro harness is intentionally Windows-only.
- Failed to configure IBus Hangul ${key}: ${result.stderr.trim
- ibus-daemon exited early with code ${ibusProcess.exitCode}
- Timed out while selecting the IBus Hangul engine
- xfwm4 did not return a PID
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/8ec3645df6f333ec.
Report an issue: GitHub.