Omahub
← All plugins
K

Webcam Controls

by Kristofer Lund

Control any V4L2 webcam from the Omarchy bar with a live preview and automatic device-specific settings.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
6772b78
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

None
AI risk level
None
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
6772b78
Reviewed
1 month ago

Manual review found no dangerous behavior. The webcamctl helper validates device paths, control names, and value formats before invoking v4l2-ctl, and the QML side uses it only for enumeration, state, and user-initiated settings changes. There is no hidden persistence, network access, credential handling, or destructive install-time behavior.

How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/kristoferlund/omarchy-webcam --enable
Hardware #bar #quickshell #media

Webcam Controls for Omarchy

Control any V4L2 webcam directly from the Omarchy bar. Webcam Controls gives you a live preview and automatically builds the right settings panel for each camera, from exposure and focus to color and framing.

Features

  • Live preview while the panel is open
  • Capture-device picker
  • Automatic detection of V4L2 capture devices
  • Controls generated from each device's reported V4L2 controls
  • Exposure, image, color, focus, framing, and device-specific groups
  • Sliders, toggles, menus, action buttons, and raw value fields
  • Read-only, inactive, grabbed, private, and compound controls
  • Camera-reported default values
  • Persistent device selection

Metadata-only /dev/videoN nodes are excluded. Multiple capture nodes from the same physical device remain available because they may provide different capabilities.

Requirements

  • Omarchy 4.0 or newer
  • Qt Multimedia (qt6-multimedia)
  • v4l2-ctl from v4l-utils
  • A Linux V4L2 capture device

Install

omarchy plugin add https://github.com/kristoferlund/omarchy-webcam.git --enable

Bar Position

Move the widget to the left bar section:

omarchy bar move io.github.kristoferlund.webcam --section left

Usage

  • Left-click the camera icon to open or close the panel.
  • Middle-click the icon to refresh devices and settings.
  • Select a camera from the device menu.
  • Double-click a slider's displayed value to restore its reported default.
  • Press Escape to close the panel.

The preview stays at the top of the panel. The settings area grows to the available screen height and scrolls when necessary. Closing the panel stops the preview and releases the camera.

Controls

The interface follows the type and flags reported by the camera:

V4L2 control Interface
Boolean or integer range 0..1 Toggle
Menu or integer menu Dropdown
Writable integer range Slider
Button or write-only operation Action button
Writable integer64, string, or bitmask Value field
Read-only control Value row
Compound or unsupported payload Read-only value row

Inactive and grabbed controls are disabled. Complex payloads are shown but cannot be edited generically through v4l2-ctl.

Defaults

Default values come from the camera driver. A reset is available only when the control is writable, active, scalar, and has a reported default.

Control Dependencies

The panel reads control flags again after pending changes have been applied. Controls marked inactive or grabbed by the driver are disabled.

Some cameras ignore controls in certain modes without reporting a dependency. Those controls remain enabled because V4L2 does not provide a general dependency graph.

Device Selection

The selected /dev/videoN path is stored in the widget's entry in ~/.config/omarchy/shell.json. Example entry:

{
  "id": "io.github.kristoferlund.webcam",
  "device": "/dev/video2"
}

Device numbers can change after reconnecting hardware. Select the device again if its path changes.

Development

Inspect available devices and controls:

./webcamctl devices
./webcamctl state
./webcamctl state /dev/video2

Run validation:

omarchy plugin validate .
qmllint -I "$OMARCHY_PATH/shell" BarWidget.qml Panel.qml tests/tst_model.qml
qmltestrunner -input tests -import "$OMARCHY_PATH/shell" -o -,txt
bash -n webcamctl

Security

Webcam Controls runs with user permissions inside omarchy-shell. webcamctl restricts device arguments to /dev/videoN, validates control names and values, and invokes v4l2-ctl without eval, sh -c, elevated privileges, network access, or background services.

Remove

omarchy plugin remove io.github.kristoferlund.webcam

License

MIT