API Docs

Module for discovering and interacting with camera devices.

This module lets you enumerate cameras, capture still images, and react to device connect/disconnect events in real time.

Camera access requires user permission. Call hs.permissions.requestCamera() before using captureImage() or reading isInUse.

Enumerating cameras

const cameras = hs.camera.all()
cameras.forEach(cam => {
    console.log(cam.name + " — " + (cam.isInUse ? "in use" : "idle"))
})

Finding a specific camera

const cam = hs.camera.findByName("FaceTime HD Camera")
if (cam) {
    cam.captureImage()
        .then(img => img.saveToFile("/tmp/snapshot.png"))
        .catch(err => console.error("Capture error: " + err))
}

Watching for connect / disconnect events

const handler = (event, camera) => {
    if (event === "connected")    console.log("Camera connected: " + camera.name)
    if (event === "disconnected") console.log("Camera disconnected: " + camera.name)
}
hs.camera.addWatcher(handler)
// Later…
hs.camera.removeWatcher(handler)

Watching a camera's in-use state

const cam = hs.camera.all()[0]
cam.addWatcher((isInUse) => {
    console.log(cam.name + " is now " + (isInUse ? "in use" : "idle"))
})

Types

This module provides the following types:

Properties

This module has no properties.

Methods

hs.camera.all() -> HSCamera[]

All video camera devices currently connected to the system.
hs.camera.all() -> HSCamera[]
HSCamera[]
An array of `HSCamera` objects
hs.camera.all().forEach(c => console.log(c.name))

hs.camera.findByName(name) -> HSCamera

Find the first camera whose name matches the given string.
hs.camera.findByName(name) -> HSCamera
Name Type Description
name string The device name to search for (exact match)
HSCamera
An `HSCamera` if found, `null` otherwise
const cam = hs.camera.findByName("FaceTime HD Camera")

hs.camera.findByUID(uid) -> HSCamera

Find the camera with the given unique identifier.
hs.camera.findByUID(uid) -> HSCamera
Name Type Description
uid string The device UID to search for
HSCamera
An `HSCamera` if found, `null` otherwise
const cam = hs.camera.findByUID("CC26C0000082005")

hs.camera.addWatcher(listener) -> None

Register a listener for camera device connect/disconnect events.
hs.camera.addWatcher(listener) -> None
Name Type Description
listener JSValue A JavaScript function receiving `(event: string, camera: HSCamera)`
None
hs.camera.addWatcher((event, camera) => {
    console.log(event + ": " + camera.name)
})

hs.camera.removeWatcher(listener) -> None

Remove a previously registered module-level event listener.
hs.camera.removeWatcher(listener) -> None
Name Type Description
listener JSValue The function originally passed to ``addWatcher(_:)``
None
hs.camera.removeWatcher(myHandler)

hs.camera._makeCameraEmitter() -> None

SKIP_DOCS
hs.camera._makeCameraEmitter() -> None
None