flybrain/infra/config/chromium-flags
acamilo 660c3cf00d
Some checks failed
ci / node 22 (test + typecheck) (push) Has been cancelled
ci / rust stable (cargo test --workspace --release) (push) Has been cancelled
ci / infra/tests/lint.sh (push) Has been cancelled
ci / playwright apps/stage (allowed to fail) (push) Has been cancelled
flybrain v0.4.0: public tree (history retained privately)
2026-09-21 15:09:46 +00:00

64 lines
2.2 KiB
Text

# infra/config/chromium-flags — pushed to /etc/fly/chromium-flags, one flag
# per line, read by infra/bin/flystage-launch (flystage.service's
# ExecStart). Comment and blank lines are stripped there, which is a small
# deviation from the raw `cat | tr` in docs/design/infra.md section 3 —
# kept because the design's own flag table has a "why" for every single
# flag and losing that at the one place ops actually reads is a bad trade
# for saving one grep. See docs/design/infra.md section 3 for the full
# rationale table this mirrors, and stage-bridge.md section 0 for the two
# corrections (no --mute-audio, no SwiftShader flags) already applied here.
--kiosk
--window-position=0,0
--window-size=1920,1080
# one window filling the root, no browser chrome in frame
--user-data-dir=/var/lib/fly/chrome
# writable profile outside a nologin home, survives restarts
--no-first-run
--no-default-browser-check
--disable-search-engine-choice-screen
# no first-run UI on stream
--noerrdialogs
--disable-session-crashed-bubble
--disable-infobars
--hide-scrollbars
# nothing modal can appear over the broadcast
--autoplay-policy=no-user-gesture-required
# page-played audio has no click to wait for (decision 8: page plays audio, no --mute-audio)
--disable-background-timer-throttling
# Chromium throttles background timers to ~1 Hz
--disable-backgrounding-occluded-windows
# an occluded window must not be treated as background
--disable-renderer-backgrounding
# keep renderer priority
--disable-ipc-flooding-protection
# a 30 Hz feed plus canvas draws exceeds the default 10/s/frame cap
--disable-gpu
--disable-software-rasterizer
# 2D canvas only, Skia CPU raster, no SwiftShader cost (decision 3: 2D canvas, not WebGL)
--force-device-scale-factor=1
--force-color-profile=srgb
# deterministic pixels into x264
--disable-lcd-text
# subpixel antialiasing becomes colour fringing after 4:2:0 subsampling
--password-store=basic
--use-mock-keychain
# no gnome-keyring in the container
--disable-features=Translate,MediaRouter,OptimizationHints,CalculateNativeWinOcclusion
# fewer background subsystems; occlusion calculation is meaningless on Xvfb
--remote-debugging-port=9222
# loopback by default; needed for the P0 measurements and the CDP fallback watchdog