Fix webcam resize controls and placement

This commit is contained in:
David Heinemeier Hansson
2026-07-17 18:28:44 -07:00
parent 1174f2a70b
commit ca0cf8bff9
4 changed files with 34 additions and 9 deletions
+1 -2
View File
@@ -86,11 +86,10 @@ start_webcam_overlay() {
--profile=low-latency --untimed --no-cache \
--demuxer-lavf-o="$capture_options" \
'--vf=lavfi=[crop=ih*8/9:ih]' \
--title="WebcamOverlay" \
--title="WebcamOverlay" --wayland-app-id="WebcamOverlay-$WEBCAM_SIZE" \
--no-border --no-audio --no-osc --osd-level=0 \
--really-quiet &>/dev/null &
sleep 1
omarchy-capture-webcam-resize "$WEBCAM_SIZE"
}
cleanup_webcam() {
+17 -3
View File
@@ -1,10 +1,24 @@
-- Webcam overlay window.
o.window({ title = "WebcamOverlay" }, {
-- Initial sizes mirror the live presets in omarchy-capture-webcam-resize.
o.window("^WebcamOverlay-small$", {
size = { 240, 270 },
move = { "(monitor_w-240-40)", "(monitor_h-270-40)" },
})
o.window("^WebcamOverlay-medium$", {
size = { 360, 405 },
move = { "(monitor_w-360-40)", "(monitor_h-405-40)" },
})
o.window("^WebcamOverlay-large$", {
size = { 480, 540 },
move = { "(monitor_w-480-40)", "(monitor_h-540-40)" },
})
-- The dedicated app id keeps this out of mpv's generic centered floating rules,
-- so the camera appears at its final corner position.
o.window({ class = "^WebcamOverlay-(small|medium|large)$", title = "^WebcamOverlay$" }, {
tag = "-default-opacity",
float = true,
pin = true,
no_initial_focus = true,
no_dim = true,
opacity = "1 1",
move = { "(monitor_w-window_w-40)", "(monitor_h-window_h-40)" },
})
+2 -2
View File
@@ -38,8 +38,8 @@ o.bind("switch:off:Lid Switch", nil, "omarchy-hyprland-monitor-clamshell", { loc
o.bind("PRINT", "Screenshot", "omarchy-capture-screenshot")
o.bind("ALT + PRINT", "Screenrecording", "omarchy-capture-screenrecording --stop-recording || omarchy-menu toggle trigger.capture.screenrecord")
o.bind("SUPER + ALT + code:26", "Make webcam overlay smaller", "omarchy-capture-webcam-resize smaller")
o.bind("SUPER + ALT + code:27", "Make webcam overlay larger", "omarchy-capture-webcam-resize larger")
o.bind("SUPER + ALT + code:34", "Make webcam overlay smaller", "omarchy-capture-webcam-resize smaller")
o.bind("SUPER + ALT + code:35", "Make webcam overlay larger", "omarchy-capture-webcam-resize larger")
o.bind("SUPER + PRINT", "Color picker", "pkill hyprpicker || hyprpicker -a")
o.bind("SUPER + CTRL + PRINT", "Extract text (OCR) from screenshot", "omarchy-capture-text")
+14 -2
View File
@@ -119,8 +119,20 @@ if [[ -s $OMARCHY_TEST_HYPRCTL_ARGS ]]; then
fi
pass "webcam resize ignores other windows"
grep -F 'o.bind("SUPER + ALT + code:26", "Make webcam overlay smaller", "omarchy-capture-webcam-resize smaller")' \
grep -F 'o.bind("SUPER + ALT + code:34", "Make webcam overlay smaller", "omarchy-capture-webcam-resize smaller")' \
"$ROOT/default/hypr/bindings/utilities.lua" >/dev/null || fail "webcam smaller hotkey is configured"
grep -F 'o.bind("SUPER + ALT + code:27", "Make webcam overlay larger", "omarchy-capture-webcam-resize larger")' \
grep -F 'o.bind("SUPER + ALT + code:35", "Make webcam overlay larger", "omarchy-capture-webcam-resize larger")' \
"$ROOT/default/hypr/bindings/utilities.lua" >/dev/null || fail "webcam larger hotkey is configured"
pass "webcam resize hotkeys are configured"
grep -F -- '--wayland-app-id="WebcamOverlay-$WEBCAM_SIZE"' \
"$ROOT/bin/omarchy-capture-screenrecording" >/dev/null || fail "webcam uses a dedicated size-specific app id"
webcam_rules="$ROOT/default/hypr/apps/webcam-overlay.lua"
grep -F 'move = { "(monitor_w-240-40)", "(monitor_h-270-40)" }' "$webcam_rules" >/dev/null || \
fail "small webcam starts at its final corner position"
grep -F 'move = { "(monitor_w-360-40)", "(monitor_h-405-40)" }' "$webcam_rules" >/dev/null || \
fail "medium webcam starts at its final corner position"
grep -F 'move = { "(monitor_w-480-40)", "(monitor_h-540-40)" }' "$webcam_rules" >/dev/null || \
fail "large webcam starts at its final corner position"
pass "webcam size rules place the initial window in its final corner"