agent-browser viewport sizing
The default agent-browser viewport (1280x720) is too short for many
real-world web apps, causing elements to overlap or scroll unexpectedly.
This skill sizes the agent-browser Chromium window to fill its current
screen, leaving a configurable bottom margin for the desktop panel /
status bar.
Usage
.agents/skills/agent-browser-viewport/scripts/fit-viewport.py # default 50px bottom margin
.agents/skills/agent-browser-viewport/scripts/fit-viewport.py 80 # larger panel
Takes effect immediately on the current agent-browser session — no reload needed. Run once before starting automation. Re-run if the window has been moved to a different physical monitor.
Why a script, not a fixed -N fudge
agent-browser set viewport <w> <h> sets the outer Chromium window
size, but Chromium then adds its tab strip + URL bar on top, so the
actual window ends up larger than the value you pass. The overhead
varies by Chromium version, theme, devicePixelRatio and window manager
— no fixed -120 constant is reliable across machines.
How the script works
It derives Chromium's chrome overhead directly from the existing window state (no probe / resize loop, so the page layout isn't disturbed mid-fit):
- horizontal overhead =
outerWidth - innerWidth × devicePixelRatio - vertical overhead =
outerHeight - innerHeight × devicePixelRatio
innerWidth / innerHeight are CSS pixels; outerWidth /
outerHeight are device pixels. Multiplying inner by DPR brings them
into the same unit, and the difference is the chrome (tab strip + URL
bar + window border) in device pixels — exactly what set viewport
needs as its correction.
The script then:
- Reads the screen the agent-browser window is currently on via
window-screen-info -n .agent-browser-data(device pixels). Works correctly on multi-monitor setups. - Reads the in-page
innerWidth/innerHeight/outerWidth/outerHeight/devicePixelRatioviaagent-browser eval. - Computes overhead as above.
- Issues one
agent-browser set viewport (screen_width - over_w, screen_height - bottom_margin - over_h)call.
The final outer window matches screen_width × (screen_height - bottom_margin) exactly (modulo half-pixel rounding at non-integer
DPR).
Notes
- The script identifies the agent-browser window by its WM_CLASS
instance
.agent-browser-data— Chromium sets this from the--user-data-dirpath that agent-browser passes. - Reported screen dimensions are device pixels.
agent-browser set viewportalso takes device pixels, so values pass through directly. AtdevicePixelRatio > 1the in-pageinnerWidth/innerHeightwill be smaller (CSS pixels = device pixels ÷ DPR), which is expected. - If you need a different bottom margin (e.g. taller panel, multi-row taskbar), pass it as the first argument.