Devcontainer voor dagelijks ontwikkelwerk — AI-first, reproduceerbaar, direct bruikbaar.
- Base: Debian bookworm-slim,
amd64+arm64 - Shell: bash, starship, zoxide, eza, fzf, bat, fd, ripgrep, jq
- Editor: Neovim + LazyVim
- Git: lazygit, gh, delta
- Data: csvlens
- AI: claude, opencode, org-skills via
cedanl/.github - Python: uv
- Node: LTS
- Media & automatisering: ffmpeg, Playwright headless Chromium
- Open in VS Code →
Dev Containers: Reopen in Container - Wacht op post-create
- Voer
gh auth logineenmalig uit - Aan de slag met
nvim .oftdl claude
tdl <ai> [tweede_ai] # editor + AI-venster(s) + terminal
tdlm <ai> [tweede_ai] # één venster per submap
tsl <n> <commando> # commando parallel over n vensters
De container bevat ffmpeg en de systeembibliotheken voor Playwright headless Chromium, zodat je zonder displayserver screenshots en animaties kunt genereren.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://example.com")
page.screenshot(path="screenshot.png", full_page=True)
browser.close()Installeer de Playwright-bibliotheek en de Chromium-binary:
uv add playwright
playwright install chromiumDe vereiste systeembibliotheken zijn al ingebakken in het image —
playwright install-depsis niet nodig.
page.pdf(path="rapport.pdf", format="A4")# Reeks PNG-screenshots → geanimeerde GIF
ffmpeg -framerate 2 -pattern_type glob -i 'screenshot_*.png' \
-vf "scale=1280:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
demo.gifimport subprocess
from pathlib import Path
from playwright.sync_api import sync_playwright
out = Path("frames")
out.mkdir(exist_ok=True)
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page(viewport={"width": 1280, "height": 720})
page.goto("https://example.com")
for i in range(10):
page.screenshot(path=out / f"frame_{i:03d}.png")
page.evaluate("window.scrollBy(0, 200)")
browser.close()
subprocess.run([
"ffmpeg", "-y", "-framerate", "5",
"-pattern_type", "glob", "-i", "frames/frame_*.png",
"-vf", "scale=1280:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse",
"demo.gif"
], check=True)# MP4 van een reeks frames
ffmpeg -framerate 24 -pattern_type glob -i 'frames/frame_*.png' \
-c:v libx264 -pix_fmt yuv420p output.mp4Gepubliceerd op ghcr.io/cedanl/dev-dots:latest — gebouwd voor amd64 en arm64.
Uitgebreide documentatie en sneltoetsen: zie de projectdocumentatie.