Google Meet viewer for the terminal.
termeet uses Playwright to open Google Meet in a persistent browser profile, captures frames from visible <video> elements, and renders them in the terminal with Kitty graphics or an ANSI half-block fallback.
This is an MVP. It can:
- keep a dedicated browser profile and reuse login state
- run environment diagnostics with
doctor - open a login session with
login - capture a single frame from a meeting with
dump-frame - render one visible video source live in the terminal with
view - cycle visible sources from the keyboard
It does not currently provide audio playback, mic/camera publishing, or a finished Sixel backend.
- Python 3.12+
uv- Playwright browser binaries:
uv run playwright install chromium - A terminal with either Kitty graphics support or good ANSI color support
Chrome is preferred when available. If not, termeet falls back to Playwright’s Chromium path.
uv sync
uv run playwright install chromiumuv run termeet doctor
uv run termeet login
uv run termeet render-test path/to/image.jpg
uv run termeet dump-frame https://meet.google.com/abc-defg-hij
uv run termeet view https://meet.google.com/abc-defg-hijUseful flags:
--renderer kitty|halfblock|sixel--headless--low-power--max-size 320x180--fps 10--jpeg-quality 0.65
- Run
uv run termeet doctor. - Run
uv run termeet loginand finish Google auth in the browser window. - Run
uv run termeet view <meet-url>.
If you want to debug capture without the live UI, use dump-frame first.
While view is running:
q: quitnor right arrow: next sourcepor left arrow: previous sourcer: switch renderer for debuggingd: dump the current frame to the cache directory?: toggle help text
- Kitty is preferred when the terminal looks like Kitty or Ghostty.
- Half-block is the universal fallback.
- Sixel is still experimental and not a reliable user path yet.
termeet uses app-specific directories via platformdirs for profile, cache, and logs. Join failures dump artifacts such as screenshots, HTML, and metadata into the cache directory so Meet selector breakage is easier to diagnose.
uv run pytest -qThe automated tests use local fixtures and a synthetic video page. Real Google Meet is not part of the test suite.