diff --git a/electron/native/pipewire-capture/src/main.rs b/electron/native/pipewire-capture/src/main.rs index 48110c5a1..04283e732 100644 --- a/electron/native/pipewire-capture/src/main.rs +++ b/electron/native/pipewire-capture/src/main.rs @@ -317,8 +317,9 @@ fn main() { { let _ = emitter.emit(&Event::Warning { code: "click-capture-unavailable".to_owned(), - message: "no readable /dev/input pointer device — add this user to the 'input' \ - group to record click telemetry; cursor samples will otherwise all be moves" + message: "no readable /dev/input pointer device — grant this user access (a udev \ + uaccess rule for mice, or the 'input' group) to record click telemetry; \ + cursor samples will otherwise all be moves" .to_owned(), }); } diff --git a/website/docs/installation.md b/website/docs/installation.md index bd934eb32..55f638909 100644 --- a/website/docs/installation.md +++ b/website/docs/installation.md @@ -27,7 +27,7 @@ On Windows, the recommended route is the [Microsoft Store](#windows). Everywhere |---|---|---| | **Windows** | Windows 10 version 1903 (build 18362) or later, x64, Intel 8th Gen / AMD Ryzen 2000 series or newer. Native capture needs Windows 10 version 2004 (build 19041) or later; older builds record through the [browser-capture fallback](#platform-differences) | Windows 11, Intel 12th Gen / AMD Ryzen 4000 series or newer | | **macOS** | macOS 13 (Ventura) — required by ScreenCaptureKit for capture. Recording the microphone needs macOS 15 or later | macOS 15.2 or later | -| **Linux** | x64. `xdg-desktop-portal` and PipeWire, which recording needs: the native capture helper goes through them, and a failure there is reported as an error. The [browser-capture fallback](#platform-differences) only takes over when a build is missing the helper itself. System audio additionally needs PipeWire as the sound server (the default on [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) and [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Recording mouse clicks on Wayland needs your user in the `input` group — see [Mouse clicks on Wayland](#mouse-clicks-on-wayland) | Same, kept up to date | +| **Linux** | x64. `xdg-desktop-portal` and PipeWire, which recording needs: the native capture helper goes through them, and a failure there is reported as an error. The [browser-capture fallback](#platform-differences) only takes over when a build is missing the helper itself. System audio additionally needs PipeWire as the sound server (the default on [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) and [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Recording mouse clicks on Wayland needs read access to mouse evdev devices — see [Mouse clicks on Wayland](#mouse-clicks-on-wayland) | Same, kept up to date | | **RAM** | 8 GB | 16 GB | :::note Older integrated graphics on Windows @@ -129,18 +129,49 @@ You may need to grant screen-recording permission depending on your desktop envi ### Mouse clicks on Wayland -Wayland exposes no portal for input events, so OpenScreen reads left-button presses straight from the kernel's evdev interface (`/dev/input/event*`) instead. Those device nodes are owned by `root:input`, so a recording only distinguishes a click from ordinary cursor movement when your user is in the `input` group: +Wayland exposes no portal for input events, so OpenScreen reads left-button presses straight from the kernel's evdev interface (`/dev/input/event*`) instead. By default, those device nodes are restricted to `root:input`, so a recording only distinguishes a click from ordinary cursor movement when your user has read access to them. + +Nothing breaks without this access — recording works exactly as it did before, and every cursor sample is simply recorded as a move. + +The scope is deliberately narrow: click capture uses only left-button presses (`BTN_LEFT`) and ignores every other event, so keystrokes are never recorded. To turn the reader off entirely even where the permission exists, set `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` in the environment OpenScreen is launched from. + +#### Recommended: udev rule (least privilege) + +On systems where systemd-logind manages the local desktop seat, the safer approach is to grant that seat access (`TAG+="uaccess"`) exclusively to pointer devices (mice and touchpads) while explicitly excluding keyboards. This requires udev's `uaccess` support and ensures that only the actively logged-in seat user has access, without exposing your keyboard: + +1. Create a udev rule file at `/etc/udev/rules.d/70-openscreen-mouse.rules` (the `70-` prefix is important so it runs before systemd's seat rules): ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. Reload and apply the rules: + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -Log out and back in for the new group to take effect. Nothing breaks without it — recording works exactly as it did before, and every cursor sample is simply recorded as a move. +You can verify that your user has access to mouse evdev nodes (e.g. `user::rw-`) with: + +```bash +getfacl /dev/input/event* +``` + +#### Alternative: `input` group + +Alternatively, you can add your user to the `input` group: + +```bash +sudo usermod -aG input $USER +``` -The scope is deliberately narrow: only the left mouse button (`BTN_LEFT`) is ever read, never keystrokes. To turn the reader off entirely even where the permission exists, set `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` in the environment OpenScreen is launched from. +Log out and back in for the new group to take effect. -:::caution -The `input` group is not limited to OpenScreen: every program running as your user can then read every input device, keyboard included. Add yourself only if you accept that on this machine. +:::caution Security consideration +Adding your user to the `input` group grants all programs running under your user account ambient read access to **every** input device on the system, including keyboards (acting as an unprivileged keylogger). Using the udev rule above is recommended instead. ::: **Touchpads:** only a physical click — pressing the pad down until it depresses — is recorded. **Tap-to-click is not**, because your compositor's input stack (libinput) synthesises those taps for its own use and never writes them back to the kernel device that OpenScreen reads, so there is nothing at the evdev layer to see. A mouse, or a touchpad with tap-to-click turned off, records every click. @@ -152,7 +183,7 @@ The editing tools are the same everywhere — zooms, backgrounds, crop/trim/spee | | macOS | Windows | Linux | |---|---|---|---| | Capture pipeline | Native (ScreenCaptureKit) | Native (Windows Graphics Capture) on build 19041 and later; browser fallback on older builds or without the helper | Native (PipeWire via the ScreenCast portal); browser fallback without the helper, losing hardware encode and cursor telemetry | -| Custom cursor / click effects | ✅ — clicks and cursor shape need the Accessibility permission | ✅ | ✅ on Wayland — click capture needs the `input` group ([details](#mouse-clicks-on-wayland)) | +| Custom cursor / click effects | ✅ — clicks and cursor shape need the Accessibility permission | ✅ | ✅ on Wayland — click capture needs mouse evdev permissions ([details](#mouse-clicks-on-wayland)) | | Webcam | Browser capture, saved as a separate file (still works as PiP) | Native capture, saved as a separate file | Browser capture, saved as a separate file (still works as PiP) | | System audio | Works out of the box; its own permission prompt on macOS 15.2+, covered by Screen Recording on older versions | Works out of the box | Needs PipeWire as the sound server (default on Ubuntu 22.10+, Fedora 34+) | | MP4 export | ✅ | ✅ | ✅ — H.264 on the GPU through VAAPI when the GPU stack allows it (see the note below), software otherwise | diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current/installation.md b/website/i18n/de/docusaurus-plugin-content-docs/current/installation.md index 69467a4ce..2dd35f5a3 100644 --- a/website/i18n/de/docusaurus-plugin-content-docs/current/installation.md +++ b/website/i18n/de/docusaurus-plugin-content-docs/current/installation.md @@ -27,7 +27,7 @@ Unter Windows ist der [Microsoft Store](#windows) der empfohlene Weg. Auf allen |---|---|---| | **Windows** | Windows 10 Version 1903 (Build 18362) oder neuer, x64, Intel ab 8. Generation / AMD Ryzen ab Serie 2000. Die native Aufnahme braucht Windows 10 Version 2004 (Build 19041) oder neuer; ältere Builds nehmen über die [Browser-Aufnahme als Fallback](#platform-differences) auf | Windows 11, Intel ab 12. Generation / AMD Ryzen ab Serie 4000 | | **macOS** | macOS 13 (Ventura), das ScreenCaptureKit für die Aufnahme voraussetzt. Die Mikrofonaufnahme braucht macOS 15 oder neuer | macOS 15.2 oder neuer | -| **Linux** | x64. `xdg-desktop-portal` und PipeWire, die die Aufnahme braucht: Das native Aufnahme-Hilfsprogramm läuft über sie, und schlägt dort etwas fehl, wird das als Fehler gemeldet. Die [Browser-Aufnahme als Fallback](#platform-differences) springt nur ein, wenn einem Build das Hilfsprogramm selbst fehlt. Systemaudio braucht zusätzlich PipeWire als Soundserver (Standard ab [Ubuntu 22.10](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) und [Fedora 34](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Damit unter Wayland Mausklicks aufgenommen werden, muss dein Benutzer in der Gruppe `input` sein, siehe [Mausklicks unter Wayland](#mouse-clicks-on-wayland) | Wie Minimum, jeweils aktuell | +| **Linux** | x64. `xdg-desktop-portal` und PipeWire, die die Aufnahme braucht: Das native Aufnahme-Hilfsprogramm läuft über sie, und schlägt dort etwas fehl, wird das als Fehler gemeldet. Die [Browser-Aufnahme als Fallback](#platform-differences) springt nur ein, wenn einem Build das Hilfsprogramm selbst fehlt. Systemaudio braucht zusätzlich PipeWire als Soundserver (Standard ab [Ubuntu 22.10](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) und [Fedora 34](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Damit unter Wayland Mausklicks aufgenommen werden, braucht dein Benutzer Lesezugriff auf die evdev-Geräte der Maus, siehe [Mausklicks unter Wayland](#mouse-clicks-on-wayland) | Wie Minimum, jeweils aktuell | | **RAM** | 8 GB | 16 GB | :::note Ältere integrierte Grafik unter Windows @@ -129,18 +129,49 @@ Je nach Desktop-Umgebung musst du eventuell eine Berechtigung zur Bildschirmaufn ### Mausklicks unter Wayland {#mouse-clicks-on-wayland} -Wayland bietet kein Portal für Eingabeereignisse. OpenScreen liest das Drücken der linken Maustaste deshalb direkt über die evdev-Schnittstelle des Kernels (`/dev/input/event*`). Diese Gerätedateien gehören `root:input`. Eine Aufnahme kann einen Klick deshalb nur dann von einer normalen Cursorbewegung unterscheiden, wenn dein Benutzer in der Gruppe `input` ist: +Wayland bietet kein Portal für Eingabeereignisse. OpenScreen liest das Drücken der linken Maustaste deshalb direkt über die evdev-Schnittstelle des Kernels (`/dev/input/event*`). Standardmäßig sind diese Gerätedateien `root:input` vorbehalten. Eine Aufnahme kann einen Klick deshalb nur dann von einer normalen Cursorbewegung unterscheiden, wenn dein Benutzer sie lesen darf. + +Ohne diesen Zugriff geht nichts kaputt: Die Aufnahme funktioniert genau wie vorher, und jede Cursorposition wird einfach als Bewegung aufgezeichnet. + +Der Umfang ist bewusst eng: Die Klickerfassung nutzt nur das Drücken der linken Maustaste (`BTN_LEFT`) und ignoriert alle anderen Ereignisse, Tastatureingaben werden also nie aufgezeichnet. Um das Auslesen auch dort ganz abzuschalten, wo die Berechtigung besteht, setze `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` in der Umgebung, aus der OpenScreen gestartet wird. + +#### Empfohlen: udev-Regel (minimale Rechte) {#recommended-udev-rule-least-privilege} + +Auf Systemen, auf denen systemd-logind den lokalen Arbeitsplatz (Seat) verwaltet, ist es sicherer, diesem Seat Zugriff (`TAG+="uaccess"`) ausschließlich auf Zeigegeräte (Mäuse und Touchpads) zu geben und Tastaturen ausdrücklich auszuschließen. Das setzt die `uaccess`-Unterstützung von udev voraus. Zugriff hat dann nur der gerade angemeldete, aktive Benutzer des Seats, und deine Tastatur bleibt außen vor: + +1. Lege die udev-Regeldatei `/etc/udev/rules.d/70-openscreen-mouse.rules` an (das Präfix `70-` ist wichtig, damit sie vor den Seat-Regeln von systemd läuft): ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. Lade die Regeln neu und wende sie an: + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -Melde dich ab und wieder an, damit die neue Gruppe wirksam wird. Ohne sie geht nichts kaputt: Die Aufnahme funktioniert genau wie vorher, und jede Cursorposition wird einfach als Bewegung aufgezeichnet. +Ob dein Benutzer Zugriff auf die evdev-Gerätedateien der Maus hat (zum Beispiel `user::rw-`), prüfst du mit: + +```bash +getfacl /dev/input/event* +``` + +#### Alternative: Gruppe `input` {#alternative-input-group} + +Alternativ kannst du deinen Benutzer zur Gruppe `input` hinzufügen: + +```bash +sudo usermod -aG input $USER +``` -Der Umfang ist bewusst eng: Gelesen wird nur die linke Maustaste (`BTN_LEFT`), niemals Tastatureingaben. Um das Auslesen auch dort ganz abzuschalten, wo die Berechtigung besteht, setze `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` in der Umgebung, aus der OpenScreen gestartet wird. +Melde dich ab und wieder an, damit die neue Gruppe wirksam wird. -:::caution -Die Gruppe `input` gilt nicht nur für OpenScreen: Danach kann jedes Programm, das unter deinem Benutzer läuft, alle Eingabegeräte auslesen, auch die Tastatur. Füge dich nur hinzu, wenn du das auf diesem Rechner akzeptierst. +:::caution Sicherheitshinweis +Mit der Gruppe `input` erhält jedes Programm, das unter deinem Benutzerkonto läuft, Lesezugriff auf **alle** Eingabegeräte des Systems, auch auf Tastaturen. Jedes dieser Programme könnte also deine Tastatureingaben mitschneiden. Empfohlen ist stattdessen die udev-Regel oben. ::: **Touchpads:** Aufgenommen wird nur ein physischer Klick, bei dem du das Pad herunterdrückst, bis es nachgibt. **Tippen zum Klicken wird nicht aufgenommen**: Der Eingabe-Stack deines Compositors (libinput) erzeugt diese Taps für den eigenen Gebrauch und schreibt sie nie an das Kernel-Gerät zurück, das OpenScreen liest. Auf evdev-Ebene gibt es also nichts zu sehen. Mit einer Maus oder mit einem Touchpad, bei dem Tippen zum Klicken ausgeschaltet ist, wird jeder Klick aufgenommen. @@ -152,7 +183,7 @@ Die Bearbeitungswerkzeuge sind überall gleich: Zooms, Hintergründe, Zuschneide | | macOS | Windows | Linux | |---|---|---|---| | Aufnahme-Pipeline | Nativ (ScreenCaptureKit) | Nativ (Windows Graphics Capture) ab Build 19041; Browser-Fallback auf älteren Builds oder ohne das Hilfsprogramm | Nativ (PipeWire über das ScreenCast-Portal); Browser-Fallback ohne das Hilfsprogramm, dann ohne Hardware-Encoding und ohne Cursor-Telemetrie | -| Eigener Cursor / Klickeffekte | ✅, Klicks und Cursorform brauchen die Berechtigung „Bedienungshilfen“ | ✅ | ✅ unter Wayland, die Klickerfassung braucht die Gruppe `input` ([Details](#mouse-clicks-on-wayland)) | +| Eigener Cursor / Klickeffekte | ✅, Klicks und Cursorform brauchen die Berechtigung „Bedienungshilfen“ | ✅ | ✅ unter Wayland, die Klickerfassung braucht Zugriff auf die evdev-Geräte der Maus ([Details](#mouse-clicks-on-wayland)) | | Webcam | Browser-Aufnahme, als separate Datei gespeichert (funktioniert trotzdem als Bild-im-Bild) | Native Aufnahme, als separate Datei gespeichert | Browser-Aufnahme, als separate Datei gespeichert (funktioniert trotzdem als Bild-im-Bild) | | Systemaudio | Funktioniert ohne Einrichtung; eigene Berechtigungsabfrage ab macOS 15.2, in älteren Versionen durch „Bildschirmaufnahme“ abgedeckt | Funktioniert ohne Einrichtung | Braucht PipeWire als Soundserver (Standard ab Ubuntu 22.10, Fedora 34) | | MP4-Export | ✅ | ✅ | ✅, H.264 auf der GPU über VAAPI, wenn der Grafik-Stack es zulässt (siehe Hinweis unten), sonst in Software | diff --git a/website/i18n/es/docusaurus-plugin-content-docs/current/installation.md b/website/i18n/es/docusaurus-plugin-content-docs/current/installation.md index f112451b0..c3b302c83 100644 --- a/website/i18n/es/docusaurus-plugin-content-docs/current/installation.md +++ b/website/i18n/es/docusaurus-plugin-content-docs/current/installation.md @@ -27,7 +27,7 @@ En Windows, la vía recomendada es [Microsoft Store](#windows). En los demás si |---|---|---| | **Windows** | Windows 10 versión 1903 (compilación 18362) o posterior, x64, Intel de 8.ª generación / AMD Ryzen serie 2000 o más reciente. La captura nativa necesita Windows 10 versión 2004 (compilación 19041) o posterior; las compilaciones anteriores graban con la [captura por navegador de respaldo](#platform-differences) | Windows 11, Intel de 12.ª generación / AMD Ryzen serie 4000 o más reciente | | **macOS** | macOS 13 (Ventura), que ScreenCaptureKit exige para la captura. Grabar el micrófono necesita macOS 15 o posterior | macOS 15.2 o posterior | -| **Linux** | x64. `xdg-desktop-portal` y PipeWire, que la grabación necesita: el módulo auxiliar de captura nativa pasa por ellos, y un fallo ahí se informa como error. La [captura por navegador de respaldo](#platform-differences) solo toma el relevo cuando a una compilación le falta el propio módulo auxiliar. El audio del sistema necesita además PipeWire como servidor de sonido (el predeterminado en [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) y [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Para grabar los clics del mouse en Wayland, tu usuario debe estar en el grupo `input`: consulta [Clics del mouse en Wayland](#mouse-clicks-on-wayland) | Lo mismo, actualizado | +| **Linux** | x64. `xdg-desktop-portal` y PipeWire, que la grabación necesita: el módulo auxiliar de captura nativa pasa por ellos, y un fallo ahí se informa como error. La [captura por navegador de respaldo](#platform-differences) solo toma el relevo cuando a una compilación le falta el propio módulo auxiliar. El audio del sistema necesita además PipeWire como servidor de sonido (el predeterminado en [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) y [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Para grabar los clics del mouse en Wayland, tu usuario necesita acceso de lectura a los dispositivos evdev del mouse: consulta [Clics del mouse en Wayland](#mouse-clicks-on-wayland) | Lo mismo, actualizado | | **RAM** | 8 GB | 16 GB | :::note Gráficos integrados antiguos en Windows @@ -129,18 +129,49 @@ Según tu entorno de escritorio, puede que tengas que conceder el permiso de gra ### Clics del mouse en Wayland {#mouse-clicks-on-wayland} -Wayland no ofrece ningún portal para los eventos de entrada, así que OpenScreen lee las pulsaciones del botón izquierdo directamente de la interfaz evdev del kernel (`/dev/input/event*`). Esos nodos de dispositivo pertenecen a `root:input`, por lo que una grabación solo distingue un clic de un movimiento normal del cursor cuando tu usuario está en el grupo `input`: +Wayland no ofrece ningún portal para los eventos de entrada, así que OpenScreen lee las pulsaciones del botón izquierdo directamente de la interfaz evdev del kernel (`/dev/input/event*`). De forma predeterminada, esos nodos de dispositivo están restringidos a `root:input`, por lo que una grabación solo distingue un clic de un movimiento normal del cursor cuando tu usuario tiene acceso de lectura a ellos. + +Sin este acceso no se rompe nada: la grabación funciona exactamente igual que antes, y cada muestra del cursor se registra simplemente como un movimiento. + +El alcance es deliberadamente limitado: la captura de clics solo usa las pulsaciones del botón izquierdo (`BTN_LEFT`) e ignora cualquier otro evento, así que las pulsaciones de teclas nunca se registran. Para desactivar el lector por completo, incluso donde existe el permiso, define `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` en el entorno desde el que se inicia OpenScreen. + +#### Recomendado: regla de udev (mínimo privilegio) {#recommended-udev-rule-least-privilege} + +En los sistemas donde systemd-logind gestiona el puesto (seat) del escritorio local, lo más seguro es dar acceso a ese puesto (`TAG+="uaccess"`) solo a los dispositivos señaladores (mouse y touchpads), excluyendo explícitamente los teclados. Esto requiere que udev admita `uaccess`, y así solo el usuario con la sesión activa en el puesto tiene acceso, sin exponer tu teclado: + +1. Crea un archivo de reglas de udev en `/etc/udev/rules.d/70-openscreen-mouse.rules` (el prefijo `70-` es importante para que se ejecute antes de las reglas de puesto de systemd): ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. Recarga y aplica las reglas: + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -Cierra la sesión y vuelve a iniciarla para que el nuevo grupo surta efecto. Sin él no se rompe nada: la grabación funciona exactamente igual que antes, y cada muestra del cursor se registra simplemente como un movimiento. +Puedes comprobar que tu usuario tiene acceso a los nodos evdev del mouse (por ejemplo, `user::rw-`) con: + +```bash +getfacl /dev/input/event* +``` + +#### Alternativa: el grupo `input` {#alternative-input-group} + +También puedes agregar tu usuario al grupo `input`: + +```bash +sudo usermod -aG input $USER +``` -El alcance es deliberadamente limitado: solo se lee el botón izquierdo del mouse (`BTN_LEFT`), nunca las pulsaciones de teclas. Para desactivar el lector por completo, incluso donde existe el permiso, define `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` en el entorno desde el que se inicia OpenScreen. +Cierra la sesión y vuelve a iniciarla para que el nuevo grupo surta efecto. -:::caution -El grupo `input` no se limita a OpenScreen: cualquier programa que se ejecute con tu usuario puede leer entonces todos los dispositivos de entrada, incluido el teclado. Agrégate solo si lo aceptas en esta máquina. +:::caution Consideración de seguridad +Agregar tu usuario al grupo `input` da a todos los programas que se ejecutan con tu cuenta acceso de lectura a **todos** los dispositivos de entrada del sistema, incluidos los teclados, así que cualquiera de ellos podría registrar lo que tecleas. Se recomienda usar en su lugar la regla de udev anterior. ::: **Touchpads:** solo se registra un clic físico, es decir, presionar el touchpad hasta que se hunda. **Tocar para hacer clic no se registra**, porque la pila de entrada de tu compositor (libinput) sintetiza esos toques para su propio uso y nunca los vuelve a escribir en el dispositivo del kernel que lee OpenScreen, así que en la capa evdev no hay nada que ver. Un mouse, o un touchpad con tocar para hacer clic desactivado, registra todos los clics. @@ -152,7 +183,7 @@ Las herramientas de edición son las mismas en todas partes: zooms, fondos, encu | | macOS | Windows | Linux | |---|---|---|---| | Flujo de captura | Nativo (ScreenCaptureKit) | Nativo (Windows Graphics Capture) en la compilación 19041 y posteriores; respaldo por navegador en compilaciones anteriores o sin el módulo auxiliar | Nativo (PipeWire mediante el portal ScreenCast); respaldo por navegador sin el módulo auxiliar, con lo que se pierden la codificación por hardware y la telemetría del cursor | -| Cursor personalizado / efectos de clic | ✅ (los clics y la forma del cursor necesitan el permiso de Accesibilidad) | ✅ | ✅ en Wayland (la captura de clics necesita el grupo `input`, [detalles](#mouse-clicks-on-wayland)) | +| Cursor personalizado / efectos de clic | ✅ (los clics y la forma del cursor necesitan el permiso de Accesibilidad) | ✅ | ✅ en Wayland (la captura de clics necesita acceso a los dispositivos evdev del mouse, [detalles](#mouse-clicks-on-wayland)) | | Cámara web | Captura por navegador, guardada como archivo aparte (sigue funcionando como PiP) | Captura nativa, guardada como archivo aparte | Captura por navegador, guardada como archivo aparte (sigue funcionando como PiP) | | Audio del sistema | Funciona sin configurar nada; su propio aviso de permiso en macOS 15.2+, cubierto por Grabación de pantalla en versiones anteriores | Funciona sin configurar nada | Necesita PipeWire como servidor de sonido (predeterminado en Ubuntu 22.10+, Fedora 34+) | | Exportación MP4 | ✅ | ✅ | ✅: H.264 en la GPU mediante VAAPI cuando la pila gráfica lo permite (consulta la nota más abajo), por software en caso contrario | diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/current/installation.md b/website/i18n/fr/docusaurus-plugin-content-docs/current/installation.md index ab16f5236..7882eb3a8 100644 --- a/website/i18n/fr/docusaurus-plugin-content-docs/current/installation.md +++ b/website/i18n/fr/docusaurus-plugin-content-docs/current/installation.md @@ -27,7 +27,7 @@ Sous Windows, la voie recommandée est le [Microsoft Store](#windows). Partout a |---|---|---| | **Windows** | Windows 10 version 1903 (build 18362) ou ultérieure, x64, Intel 8e génération / AMD Ryzen série 2000 ou plus récent. La capture native exige Windows 10 version 2004 (build 19041) ou ultérieure ; les builds antérieures se rabattent sur la [capture par le navigateur](#platform-differences) | Windows 11, Intel 12e génération / AMD Ryzen série 4000 ou plus récent | | **macOS** | macOS 13 (Ventura), exigé par ScreenCaptureKit pour la capture. L'enregistrement du micro exige macOS 15 ou ultérieur | macOS 15.2 ou ultérieur | -| **Linux** | x64. `xdg-desktop-portal` et PipeWire, dont l'enregistrement a besoin : le module de capture natif passe par eux, et un échec à ce niveau est signalé comme une erreur. Le repli sur la [capture par le navigateur](#platform-differences) ne s'active que si une version d'OpenScreen ne contient pas le module lui-même. L'audio système exige en plus PipeWire comme serveur son (par défaut sur [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) et [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Pour enregistrer les clics de souris sous Wayland, votre utilisateur doit faire partie du groupe `input` : voir [Clics de souris sous Wayland](#mouse-clicks-on-wayland) | Les mêmes, à jour | +| **Linux** | x64. `xdg-desktop-portal` et PipeWire, dont l'enregistrement a besoin : le module de capture natif passe par eux, et un échec à ce niveau est signalé comme une erreur. Le repli sur la [capture par le navigateur](#platform-differences) ne s'active que si une version d'OpenScreen ne contient pas le module lui-même. L'audio système exige en plus PipeWire comme serveur son (par défaut sur [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) et [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Pour enregistrer les clics de souris sous Wayland, votre utilisateur doit pouvoir lire les périphériques evdev de la souris : voir [Clics de souris sous Wayland](#mouse-clicks-on-wayland) | Les mêmes, à jour | | **RAM** | 8 Go | 16 Go | :::note Anciennes puces graphiques intégrées sous Windows @@ -129,18 +129,49 @@ Selon votre environnement de bureau, vous devrez peut-être accorder l'autorisat ### Clics de souris sous Wayland {#mouse-clicks-on-wayland} -Wayland n'expose aucun portail pour les événements d'entrée : OpenScreen lit donc les appuis sur le bouton gauche directement depuis l'interface evdev du noyau (`/dev/input/event*`). Ces nœuds de périphérique appartiennent à `root:input`. Un enregistrement ne distingue donc un clic d'un simple mouvement du curseur que si votre utilisateur fait partie du groupe `input` : +Wayland n'expose aucun portail pour les événements d'entrée : OpenScreen lit donc les appuis sur le bouton gauche directement depuis l'interface evdev du noyau (`/dev/input/event*`). Par défaut, ces nœuds de périphérique sont réservés à `root:input`. Un enregistrement ne distingue donc un clic d'un simple mouvement du curseur que si votre utilisateur a le droit de les lire. + +Rien ne casse sans cet accès : l'enregistrement fonctionne exactement comme avant, et chaque échantillon du curseur est simplement enregistré comme un déplacement. + +La portée est volontairement limitée : la capture des clics n'utilise que les appuis sur le bouton gauche (`BTN_LEFT`) et ignore tous les autres événements, si bien que les frappes au clavier ne sont jamais enregistrées. Pour désactiver complètement ce lecteur, même là où l'autorisation existe, définissez `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` dans l'environnement depuis lequel OpenScreen est lancé. + +#### Recommandé : règle udev (moindre privilège) {#recommended-udev-rule-least-privilege} + +Sur les systèmes où systemd-logind gère le poste (seat) du bureau local, le plus sûr est d'accorder l'accès de ce poste (`TAG+="uaccess"`) aux seuls périphériques de pointage (souris et pavés tactiles), en excluant explicitement les claviers. Cela suppose la prise en charge de `uaccess` par udev, et seul l'utilisateur connecté et actif sur le poste y a alors accès, sans exposer votre clavier : + +1. Créez un fichier de règles udev `/etc/udev/rules.d/70-openscreen-mouse.rules` (le préfixe `70-` compte : il fait passer la règle avant les règles de poste de systemd) : ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. Rechargez et appliquez les règles : + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -Déconnectez-vous puis reconnectez-vous pour que le nouveau groupe soit pris en compte. Rien ne casse sans cela : l'enregistrement fonctionne exactement comme avant, et chaque échantillon du curseur est simplement enregistré comme un déplacement. +Pour vérifier que votre utilisateur a accès aux nœuds evdev de la souris (par exemple `user::rw-`) : + +```bash +getfacl /dev/input/event* +``` + +#### Autre solution : le groupe `input` {#alternative-input-group} + +Vous pouvez aussi ajouter votre utilisateur au groupe `input` : + +```bash +sudo usermod -aG input $USER +``` -La portée est volontairement limitée : seul le bouton gauche de la souris (`BTN_LEFT`) est lu, jamais les frappes au clavier. Pour désactiver complètement ce lecteur, même là où l'autorisation existe, définissez `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` dans l'environnement depuis lequel OpenScreen est lancé. +Déconnectez-vous puis reconnectez-vous pour que le nouveau groupe soit pris en compte. -:::caution -Le groupe `input` ne se limite pas à OpenScreen : tout programme lancé sous votre compte peut alors lire tous les périphériques d'entrée, clavier compris. Ne vous y ajoutez que si vous l'acceptez sur cette machine. +:::caution Sécurité +Ajouter votre utilisateur au groupe `input` donne à tous les programmes lancés sous votre compte un accès en lecture à **tous** les périphériques d'entrée du système, claviers compris : n'importe lequel d'entre eux peut alors enregistrer vos frappes. La règle udev ci-dessus est recommandée à la place. ::: **Pavés tactiles :** seul un clic physique est enregistré, quand vous appuyez sur le pavé jusqu'à ce qu'il s'enfonce. **Le tapotement pour cliquer (tap-to-click) ne l'est pas** : la pile d'entrée de votre compositeur (libinput) synthétise ces tapotements pour son propre usage et ne les renvoie jamais au périphérique du noyau que lit OpenScreen ; il n'y a donc rien à lire au niveau d'evdev. Avec une souris, ou un pavé tactile dont le tapotement pour cliquer est désactivé, chaque clic est enregistré. @@ -152,7 +183,7 @@ Les outils de montage sont les mêmes partout : zooms, arrière-plans, recadrag | | macOS | Windows | Linux | |---|---|---|---| | Chaîne de capture | Native (ScreenCaptureKit) | Native (Windows Graphics Capture) à partir de la build 19041 ; repli sur le navigateur sur les builds antérieures ou sans le module | Native (PipeWire via le portail ScreenCast) ; repli sur le navigateur sans le module, avec perte de l'encodage matériel et de la télémétrie du curseur | -| Curseur personnalisé / effets de clic | ✅ : les clics et la forme du curseur exigent l'autorisation Accessibilité | ✅ | ✅ sous Wayland : la capture des clics exige le groupe `input` ([détails](#mouse-clicks-on-wayland)) | +| Curseur personnalisé / effets de clic | ✅ : les clics et la forme du curseur exigent l'autorisation Accessibilité | ✅ | ✅ sous Wayland : la capture des clics exige l'accès aux périphériques evdev de la souris ([détails](#mouse-clicks-on-wayland)) | | Webcam | Capture par le navigateur, enregistrée dans un fichier séparé (reste utilisable en incrustation d'image) | Capture native, enregistrée dans un fichier séparé | Capture par le navigateur, enregistrée dans un fichier séparé (reste utilisable en incrustation d'image) | | Audio système | Fonctionne sans configuration ; sa propre invite d'autorisation sur macOS 15.2+, couvert par l'autorisation Enregistrement de l'écran sur les versions antérieures | Fonctionne sans configuration | Exige PipeWire comme serveur son (par défaut sur Ubuntu 22.10+, Fedora 34+) | | Export MP4 | ✅ | ✅ | ✅ : H.264 sur le GPU via VAAPI quand la pile graphique le permet (voir la note ci-dessous), en logiciel sinon | diff --git a/website/i18n/ja/docusaurus-plugin-content-docs/current/installation.md b/website/i18n/ja/docusaurus-plugin-content-docs/current/installation.md index b319c980c..5d18a9567 100644 --- a/website/i18n/ja/docusaurus-plugin-content-docs/current/installation.md +++ b/website/i18n/ja/docusaurus-plugin-content-docs/current/installation.md @@ -27,7 +27,7 @@ Windows では [Microsoft Store](#windows) からのインストールをおす |---|---|---| | **Windows** | Windows 10 バージョン 1903(ビルド 18362)以降、x64、Intel 第 8 世代 / AMD Ryzen 2000 シリーズ以降。ネイティブキャプチャには Windows 10 バージョン 2004(ビルド 19041)以降が必要で、それより古いビルドでは[ブラウザーキャプチャへのフォールバック](#platform-differences)で録画します | Windows 11、Intel 第 12 世代 / AMD Ryzen 4000 シリーズ以降 | | **macOS** | macOS 13(Ventura)。キャプチャに使う ScreenCaptureKit の要件です。マイクの録音には macOS 15 以降が必要です | macOS 15.2 以降 | -| **Linux** | x64。録画には `xdg-desktop-portal` と PipeWire が必要です。ネイティブのキャプチャヘルパーはこれらを経由し、そこで失敗するとエラーとして報告されます。[ブラウザーキャプチャへのフォールバック](#platform-differences)に切り替わるのは、ビルドにヘルパー自体が含まれていない場合だけです。システム音声には、さらにサウンドサーバーとして PipeWire が必要です([Ubuntu 22.10 以降](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976)と [Fedora 34 以降](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)では既定)。Wayland でマウスのクリックを記録するには、ユーザーが `input` グループに属している必要があります。[Wayland でのマウスクリック](#mouse-clicks-on-wayland)を参照してください | 同じ構成を最新の状態に保ったもの | +| **Linux** | x64。録画には `xdg-desktop-portal` と PipeWire が必要です。ネイティブのキャプチャヘルパーはこれらを経由し、そこで失敗するとエラーとして報告されます。[ブラウザーキャプチャへのフォールバック](#platform-differences)に切り替わるのは、ビルドにヘルパー自体が含まれていない場合だけです。システム音声には、さらにサウンドサーバーとして PipeWire が必要です([Ubuntu 22.10 以降](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976)と [Fedora 34 以降](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)では既定)。Wayland でマウスのクリックを記録するには、ユーザーがマウスの evdev デバイスを読み取れる必要があります。[Wayland でのマウスクリック](#mouse-clicks-on-wayland)を参照してください | 同じ構成を最新の状態に保ったもの | | **RAM** | 8 GB | 16 GB | :::note Windows の古い内蔵グラフィックス @@ -129,18 +129,49 @@ Home Manager を使っている場合は、`openscreen.homeManagerModules.defaul ### Wayland でのマウスクリック {#mouse-clicks-on-wayland} -Wayland には入力イベント用のポータルがないため、OpenScreen は代わりに、カーネルの evdev インターフェース(`/dev/input/event*`)から左ボタンの押下を直接読み取ります。これらのデバイスノードの所有者は `root:input` です。そのため、録画でクリックを通常のカーソル移動と区別できるのは、ユーザーが `input` グループに属している場合だけです。 +Wayland には入力イベント用のポータルがないため、OpenScreen は代わりに、カーネルの evdev インターフェース(`/dev/input/event*`)から左ボタンの押下を直接読み取ります。これらのデバイスノードは、既定では `root:input` に制限されています。そのため、録画でクリックを通常のカーソル移動と区別できるのは、ユーザーにこれらを読み取る権限がある場合だけです。 + +この権限がなくても何も壊れません。録画はこれまでとまったく同じように動作し、カーソルのサンプルがすべて移動として記録されるだけです。 + +読み取る範囲は意図的に狭くしています。クリックのキャプチャに使うのは左ボタンの押下(`BTN_LEFT`)だけで、それ以外のイベントはすべて無視するため、キー入力が記録されることはありません。権限がある環境でもこの読み取りを完全にオフにするには、OpenScreen を起動する環境で `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` を設定してください。 + +#### 推奨:udev ルール(最小権限) {#recommended-udev-rule-least-privilege} + +systemd-logind がローカルデスクトップのシート(seat)を管理しているシステムでは、そのシートへのアクセス(`TAG+="uaccess"`)をポインティングデバイス(マウスとタッチパッド)だけに与え、キーボードを明示的に除外するほうが安全です。これには udev の `uaccess` サポートが必要です。アクセスできるのはシートに現在ログインしているアクティブなユーザーだけになり、キーボードは公開されません。 + +1. udev ルールファイル `/etc/udev/rules.d/70-openscreen-mouse.rules` を作成します(systemd のシート用ルールより前に実行されるよう、`70-` という接頭辞が重要です)。 ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. ルールを再読み込みして適用します。 + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -新しいグループを有効にするには、いったんログアウトしてから再ログインしてください。この設定がなくても何も壊れません。録画はこれまでとまったく同じように動作し、カーソルのサンプルがすべて移動として記録されるだけです。 +ユーザーがマウスの evdev ノードにアクセスできること(例:`user:<ユーザー名>:rw-`)は、次のコマンドで確認できます。 + +```bash +getfacl /dev/input/event* +``` + +#### 代替手段:`input` グループ {#alternative-input-group} + +代わりに、ユーザーを `input` グループに追加することもできます。 + +```bash +sudo usermod -aG input $USER +``` -読み取る範囲は意図的に狭くしています。読み取るのは左マウスボタン(`BTN_LEFT`)だけで、キー入力は一切読み取りません。権限がある環境でもこの読み取りを完全にオフにするには、OpenScreen を起動する環境で `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` を設定してください。 +新しいグループを有効にするには、いったんログアウトしてから再ログインしてください。 -:::caution -`input` グループは OpenScreen だけのものではありません。追加すると、あなたのユーザーで動くすべてのプログラムが、キーボードを含むすべての入力デバイスを読み取れるようになります。このマシンでそれを許容できる場合にのみ追加してください。 +:::caution セキュリティ上の注意 +ユーザーを `input` グループに追加すると、そのユーザーアカウントで動くすべてのプログラムが、キーボードを含むシステム上の**すべての**入力デバイスを読み取れるようになります。どのプログラムでもキー入力を記録できてしまうということです。代わりに上記の udev ルールを使うことをおすすめします。 ::: **タッチパッド:** 記録されるのは物理的なクリック(パッドを沈み込むまで押す操作)だけです。**タップによるクリックは記録されません。** タップはコンポジターの入力スタック(libinput)が自身のために合成するもので、OpenScreen が読み取るカーネルデバイスには書き戻されないため、evdev の層には何も現れないからです。マウスや、タップによるクリックをオフにしたタッチパッドなら、すべてのクリックが記録されます。 @@ -152,7 +183,7 @@ sudo usermod -aG input $USER | | macOS | Windows | Linux | |---|---|---|---| | キャプチャの仕組み | ネイティブ(ScreenCaptureKit) | ビルド 19041 以降はネイティブ(Windows Graphics Capture)。それより古いビルドやヘルパーがない場合はブラウザーにフォールバック | ネイティブ(ScreenCast ポータル経由の PipeWire)。ヘルパーがない場合はブラウザーにフォールバックし、ハードウェアエンコードとカーソルテレメトリは使えなくなる | -| カスタムカーソル / クリックエフェクト | ✅ クリックとカーソルの形状にはアクセシビリティの権限が必要 | ✅ | ✅ Wayland で対応。クリックのキャプチャには `input` グループが必要([詳細](#mouse-clicks-on-wayland)) | +| カスタムカーソル / クリックエフェクト | ✅ クリックとカーソルの形状にはアクセシビリティの権限が必要 | ✅ | ✅ Wayland で対応。クリックのキャプチャにはマウスの evdev デバイスへのアクセス権が必要([詳細](#mouse-clicks-on-wayland)) | | ウェブカメラ | ブラウザーでキャプチャし、別ファイルとして保存(PiP としても引き続き使用可能) | ネイティブでキャプチャし、別ファイルとして保存 | ブラウザーでキャプチャし、別ファイルとして保存(PiP としても引き続き使用可能) | | システム音声 | 設定不要で動作。macOS 15.2 以降では専用の許可の確認あり。それより前のバージョンでは画面収録の許可に含まれる | 設定不要で動作 | サウンドサーバーとして PipeWire が必要(Ubuntu 22.10 以降、Fedora 34 以降では既定) | | MP4 エクスポート | ✅ | ✅ | ✅ GPU スタックが対応していれば VAAPI 経由で H.264 を GPU でエンコード(下の注記を参照)、それ以外はソフトウェア。 | diff --git a/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/installation.md b/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/installation.md index 4c44d62e1..46a2b2f0d 100644 --- a/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/installation.md +++ b/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/installation.md @@ -27,7 +27,7 @@ No Windows, o caminho recomendado é a [Microsoft Store](#windows). Nos demais s |---|---|---| | **Windows** | Windows 10 versão 1903 (build 18362) ou posterior, x64, Intel de 8ª geração / AMD Ryzen série 2000 ou mais recente. A captura nativa exige o Windows 10 versão 2004 (build 19041) ou posterior; builds mais antigos gravam usando a [alternativa de captura pelo navegador](#platform-differences) | Windows 11, Intel de 12ª geração / AMD Ryzen série 4000 ou mais recente | | **macOS** | macOS 13 (Ventura) — exigido pelo ScreenCaptureKit para a captura. Gravar o microfone exige o macOS 15 ou posterior | macOS 15.2 ou posterior | -| **Linux** | x64. `xdg-desktop-portal` e PipeWire, necessários para gravar: o auxiliar de captura nativa passa por eles, e uma falha ali é informada como erro. A [alternativa de captura pelo navegador](#platform-differences) só entra em ação quando falta o próprio auxiliar no build. O áudio do sistema também exige o PipeWire como servidor de som (o padrão no [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) e no [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Gravar os cliques do mouse no Wayland exige que seu usuário esteja no grupo `input` — veja [Cliques do mouse no Wayland](#mouse-clicks-on-wayland) | O mesmo, mantido atualizado | +| **Linux** | x64. `xdg-desktop-portal` e PipeWire, necessários para gravar: o auxiliar de captura nativa passa por eles, e uma falha ali é informada como erro. A [alternativa de captura pelo navegador](#platform-differences) só entra em ação quando falta o próprio auxiliar no build. O áudio do sistema também exige o PipeWire como servidor de som (o padrão no [Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) e no [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)). Gravar os cliques do mouse no Wayland exige acesso de leitura aos dispositivos evdev do mouse — veja [Cliques do mouse no Wayland](#mouse-clicks-on-wayland) | O mesmo, mantido atualizado | | **RAM** | 8 GB | 16 GB | :::note Gráficos integrados mais antigos no Windows @@ -129,18 +129,49 @@ Dependendo do seu ambiente de desktop, pode ser necessário conceder permissão ### Cliques do mouse no Wayland {#mouse-clicks-on-wayland} -O Wayland não oferece nenhum portal para eventos de entrada, então o OpenScreen lê os pressionamentos do botão esquerdo direto da interface evdev do kernel (`/dev/input/event*`). Esses nós de dispositivo pertencem a `root:input`, então uma gravação só distingue um clique de um movimento comum do cursor quando seu usuário está no grupo `input`: +O Wayland não oferece nenhum portal para eventos de entrada, então o OpenScreen lê os pressionamentos do botão esquerdo direto da interface evdev do kernel (`/dev/input/event*`). Por padrão, esses nós de dispositivo são restritos a `root:input`, então uma gravação só distingue um clique de um movimento comum do cursor quando seu usuário tem acesso de leitura a eles. + +Nada quebra sem esse acesso — a gravação funciona exatamente como antes, e cada amostra do cursor é simplesmente registrada como movimento. + +O escopo é restrito de propósito: a captura de cliques usa só os pressionamentos do botão esquerdo (`BTN_LEFT`) e ignora todos os outros eventos, então as teclas digitadas nunca são registradas. Para desativar o leitor por completo, mesmo onde a permissão existe, defina `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` no ambiente a partir do qual o OpenScreen é iniciado. + +#### Recomendado: regra do udev (privilégio mínimo) {#recommended-udev-rule-least-privilege} + +Em sistemas em que o systemd-logind gerencia o posto (seat) da área de trabalho local, o caminho mais seguro é dar acesso a esse posto (`TAG+="uaccess"`) somente aos dispositivos apontadores (mouses e touchpads), excluindo explicitamente os teclados. Isso exige suporte do udev a `uaccess`, e assim só o usuário com a sessão ativa no posto tem acesso, sem expor o seu teclado: + +1. Crie um arquivo de regras do udev em `/etc/udev/rules.d/70-openscreen-mouse.rules` (o prefixo `70-` é importante para que ele rode antes das regras de posto do systemd): ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. Recarregue e aplique as regras: + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -Encerre a sessão e entre de novo para que o novo grupo passe a valer. Nada quebra sem isso — a gravação funciona exatamente como antes, e cada amostra do cursor é simplesmente registrada como movimento. +Você pode verificar se seu usuário tem acesso aos nós evdev do mouse (por exemplo, `user::rw-`) com: + +```bash +getfacl /dev/input/event* +``` + +#### Alternativa: grupo `input` {#alternative-input-group} + +Você também pode adicionar seu usuário ao grupo `input`: + +```bash +sudo usermod -aG input $USER +``` -O escopo é restrito de propósito: só o botão esquerdo do mouse (`BTN_LEFT`) é lido, nunca as teclas digitadas. Para desativar o leitor por completo, mesmo onde a permissão existe, defina `OPENSCREEN_DISABLE_CLICK_CAPTURE=1` no ambiente a partir do qual o OpenScreen é iniciado. +Encerre a sessão e entre de novo para que o novo grupo passe a valer. -:::caution -O grupo `input` não se limita ao OpenScreen: qualquer programa executado com o seu usuário passa a poder ler todos os dispositivos de entrada, inclusive o teclado. Só se adicione se aceitar isso nesta máquina. +:::caution Consideração de segurança +Adicionar seu usuário ao grupo `input` dá a todos os programas executados com a sua conta acesso de leitura a **todos** os dispositivos de entrada do sistema, inclusive teclados, então qualquer um deles poderia registrar o que você digita. Recomendamos usar a regra do udev acima. ::: **Touchpads:** só um clique físico — pressionar o touchpad até ele afundar — é registrado. **O toque para clicar não é**, porque a pilha de entrada do seu compositor (libinput) sintetiza esses toques para uso próprio e nunca os repassa ao dispositivo do kernel que o OpenScreen lê, então não há nada para ver na camada evdev. Um mouse, ou um touchpad com o toque para clicar desativado, registra todos os cliques. @@ -152,7 +183,7 @@ As ferramentas de edição são as mesmas em todos os sistemas — zooms, fundos | | macOS | Windows | Linux | |---|---|---|---| | Pipeline de captura | Nativo (ScreenCaptureKit) | Nativo (Windows Graphics Capture) no build 19041 e posteriores; captura pelo navegador em builds mais antigos ou sem o auxiliar | Nativo (PipeWire via portal ScreenCast); captura pelo navegador sem o auxiliar, perdendo a codificação por hardware e a telemetria do cursor | -| Cursor personalizado / efeitos de clique | ✅ — cliques e formato do cursor exigem a permissão de Acessibilidade | ✅ | ✅ no Wayland — a captura de cliques exige o grupo `input` ([detalhes](#mouse-clicks-on-wayland)) | +| Cursor personalizado / efeitos de clique | ✅ — cliques e formato do cursor exigem a permissão de Acessibilidade | ✅ | ✅ no Wayland — a captura de cliques exige acesso aos dispositivos evdev do mouse ([detalhes](#mouse-clicks-on-wayland)) | | Webcam | Captura pelo navegador, salva em arquivo separado (continua funcionando como PiP) | Captura nativa, salva em arquivo separado | Captura pelo navegador, salva em arquivo separado (continua funcionando como PiP) | | Áudio do sistema | Funciona sem configuração; pedido de permissão próprio no macOS 15.2+, coberto pela Gravação de Tela nas versões anteriores | Funciona sem configuração | Exige o PipeWire como servidor de som (padrão no Ubuntu 22.10+ e no Fedora 34+) | | Exportação MP4 | ✅ | ✅ | ✅ — H.264 na GPU via VAAPI quando a pilha da GPU permite (veja a nota abaixo), por software nos demais casos | diff --git a/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/installation.md b/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/installation.md index 6f708a843..290059f25 100644 --- a/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/installation.md +++ b/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/installation.md @@ -27,7 +27,7 @@ keywords: |---|---|---| | **Windows** | Windows 10 版本 1903(内部版本 18362)或更高,x64,Intel 第 8 代 / AMD Ryzen 2000 系列或更新。原生采集需要 Windows 10 版本 2004(内部版本 19041)或更高;更早的内部版本通过[浏览器采集回退方案](#platform-differences)录制 | Windows 11,Intel 第 12 代 / AMD Ryzen 4000 系列或更新 | | **macOS** | macOS 13(Ventura):ScreenCaptureKit 采集所需。录制麦克风需要 macOS 15 或更高 | macOS 15.2 或更高 | -| **Linux** | x64。需要 `xdg-desktop-portal` 和 PipeWire,录制离不开它们:原生采集辅助程序经由它们工作,这一环节出现故障时会作为错误报告出来。只有当某个构建缺少辅助程序本身时,[浏览器采集回退方案](#platform-differences)才会接手。录制系统音频还需要以 PipeWire 作为声音服务器([Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) 和 [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire) 的默认设置)。在 Wayland 上记录鼠标点击,需要你的用户属于 `input` 组,详见 [Wayland 上的鼠标点击](#mouse-clicks-on-wayland) | 同左,并保持更新 | +| **Linux** | x64。需要 `xdg-desktop-portal` 和 PipeWire,录制离不开它们:原生采集辅助程序经由它们工作,这一环节出现故障时会作为错误报告出来。只有当某个构建缺少辅助程序本身时,[浏览器采集回退方案](#platform-differences)才会接手。录制系统音频还需要以 PipeWire 作为声音服务器([Ubuntu 22.10+](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976) 和 [Fedora 34+](https://fedoraproject.org/wiki/Changes/DefaultPipeWire) 的默认设置)。在 Wayland 上记录鼠标点击,需要你的用户能读取鼠标的 evdev 设备,详见 [Wayland 上的鼠标点击](#mouse-clicks-on-wayland) | 同左,并保持更新 | | **内存** | 8 GB | 16 GB | :::note Windows 上的旧款集成显卡 @@ -129,18 +129,49 @@ Home Manager 用户可以使用 `openscreen.homeManagerModules.default`,配合 ### Wayland 上的鼠标点击 {#mouse-clicks-on-wayland} -Wayland 没有提供输入事件的门户,因此 OpenScreen 改为直接从内核的 evdev 接口(`/dev/input/event*`)读取左键按下事件。这些设备节点的所有者是 `root:input`,所以只有当你的用户属于 `input` 组时,录制才能把点击和普通的光标移动区分开: +Wayland 没有提供输入事件的门户,因此 OpenScreen 改为直接从内核的 evdev 接口(`/dev/input/event*`)读取左键按下事件。这些设备节点默认仅限 `root:input` 访问,所以只有当你的用户拥有它们的读取权限时,录制才能把点击和普通的光标移动区分开。 + +没有这项权限也不会出问题:录制的效果和以前完全一样,只是每个光标采样都会记录为移动。 + +读取范围被刻意限定得很窄:点击采集只使用鼠标左键按下事件(`BTN_LEFT`),其他事件一律忽略,因此绝不会记录键盘按键。如果即使有权限也要完全关闭这个读取功能,请在启动 OpenScreen 的环境中设置 `OPENSCREEN_DISABLE_CLICK_CAPTURE=1`。 + +#### 推荐:udev 规则(最小权限) {#recommended-udev-rule-least-privilege} + +在由 systemd-logind 管理本地桌面座席(seat)的系统上,更安全的做法是只把该座席的访问权限(`TAG+="uaccess"`)授予指针设备(鼠标和触控板),并明确排除键盘。这需要 udev 支持 `uaccess`,这样只有当前登录且处于活动状态的座席用户才能访问,也不会暴露你的键盘: + +1. 在 `/etc/udev/rules.d/70-openscreen-mouse.rules` 创建 udev 规则文件(`70-` 前缀很重要,它让规则在 systemd 的座席规则之前运行): ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. 重新加载并应用规则: + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -注销并重新登录后,新的组才会生效。没有这项设置也不会出问题:录制的效果和以前完全一样,只是每个光标采样都会记录为移动。 +可以用以下命令确认你的用户能访问鼠标的 evdev 节点(例如 `user:<你的用户名>:rw-`): + +```bash +getfacl /dev/input/event* +``` + +#### 替代方案:`input` 组 {#alternative-input-group} + +你也可以把用户加入 `input` 组: + +```bash +sudo usermod -aG input $USER +``` -读取范围被刻意限定得很窄:只读取鼠标左键(`BTN_LEFT`),绝不读取键盘按键。如果即使有权限也要完全关闭这个读取功能,请在启动 OpenScreen 的环境中设置 `OPENSCREEN_DISABLE_CLICK_CAPTURE=1`。 +注销并重新登录后,新的组才会生效。 -:::caution -`input` 组并不只对 OpenScreen 生效:加入后,以你的用户身份运行的任何程序都能读取所有输入设备,包括键盘。请仅在你接受这一点的机器上加入该组。 +:::caution 安全注意事项 +把用户加入 `input` 组后,以你的账户运行的所有程序都能读取系统上的**所有**输入设备,包括键盘,也就是说其中任何一个程序都能记录你的键盘输入。建议改用上面的 udev 规则。 ::: **触控板**:只有物理点击(把触控板按下去直到它下沉)才会被记录。**轻触点击不会被记录**,因为轻触是由合成器的输入栈(libinput)自行合成、供自己使用的,从不会写回 OpenScreen 读取的内核设备,所以在 evdev 这一层根本看不到。使用鼠标,或关闭轻触点击的触控板,每次点击都会被记录。 @@ -152,7 +183,7 @@ sudo usermod -aG input $USER | | macOS | Windows | Linux | |---|---|---|---| | 采集管线 | 原生(ScreenCaptureKit) | 内部版本 19041 及更高为原生(Windows Graphics Capture);更早的内部版本或缺少辅助程序时回退到浏览器采集 | 原生(经由 ScreenCast 门户的 PipeWire);缺少辅助程序时回退到浏览器采集,并失去硬件编码和光标遥测 | -| 自定义光标 / 点击效果 | ✅:点击和光标形状需要“辅助功能”权限 | ✅ | ✅ Wayland 上可用:点击采集需要 `input` 组([详情](#mouse-clicks-on-wayland)) | +| 自定义光标 / 点击效果 | ✅:点击和光标形状需要“辅助功能”权限 | ✅ | ✅ Wayland 上可用:点击采集需要鼠标 evdev 设备的访问权限([详情](#mouse-clicks-on-wayland)) | | 摄像头 | 浏览器采集,保存为单独的文件(仍可用作画中画) | 原生采集,保存为单独的文件 | 浏览器采集,保存为单独的文件(仍可用作画中画) | | 系统音频 | 开箱即用;macOS 15.2+ 会弹出它自己的权限提示,更早的版本由“屏幕录制”权限涵盖 | 开箱即用 | 需要以 PipeWire 作为声音服务器(Ubuntu 22.10+、Fedora 34+ 的默认设置) | | MP4 导出 | ✅ | ✅ | ✅:GPU 栈条件允许时,通过 VAAPI 在 GPU 上进行 H.264 编码(见下方说明),否则使用软件编码 | diff --git a/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/installation.md b/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/installation.md index 243199ee4..e2f257a06 100644 --- a/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/installation.md +++ b/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/installation.md @@ -27,7 +27,7 @@ keywords: |---|---|---| | **Windows** | Windows 10 版本 1903(組建 18362)或更新版本,x64,Intel 第 8 代/AMD Ryzen 2000 系列或更新的處理器。原生擷取需要 Windows 10 版本 2004(組建 19041)或更新版本;較舊的組建會透過[瀏覽器擷取備援](#platform-differences)錄影 | Windows 11,Intel 第 12 代/AMD Ryzen 4000 系列或更新的處理器 | | **macOS** | macOS 13(Ventura),這是 ScreenCaptureKit 擷取的必要條件。錄製麥克風需要 macOS 15 或更新版本 | macOS 15.2 或更新版本 | -| **Linux** | x64。錄影需要 `xdg-desktop-portal` 與 PipeWire:原生擷取輔助程式會透過它們運作,那裡發生的失敗會以錯誤回報。只有在某個組建本身缺少輔助程式時,[瀏覽器擷取備援](#platform-differences)才會接手。系統音訊另外需要以 PipeWire 作為音效伺服器([Ubuntu 22.10 以上](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976)與 [Fedora 34 以上](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)的預設)。在 Wayland 上記錄滑鼠點擊,需要你的使用者屬於 `input` 群組,詳見 [Wayland 上的滑鼠點擊](#mouse-clicks-on-wayland) | 相同,並保持更新 | +| **Linux** | x64。錄影需要 `xdg-desktop-portal` 與 PipeWire:原生擷取輔助程式會透過它們運作,那裡發生的失敗會以錯誤回報。只有在某個組建本身缺少輔助程式時,[瀏覽器擷取備援](#platform-differences)才會接手。系統音訊另外需要以 PipeWire 作為音效伺服器([Ubuntu 22.10 以上](https://discourse.ubuntu.com/t/kinetic-kudu-release-notes/27976)與 [Fedora 34 以上](https://fedoraproject.org/wiki/Changes/DefaultPipeWire)的預設)。在 Wayland 上記錄滑鼠點擊,需要你的使用者能讀取滑鼠的 evdev 裝置,詳見 [Wayland 上的滑鼠點擊](#mouse-clicks-on-wayland) | 相同,並保持更新 | | **記憶體** | 8 GB | 16 GB | :::note Windows 上較舊的內建顯示晶片 @@ -129,18 +129,49 @@ Home Manager 使用者可以搭配相同的 `programs.openscreen.enable = true;` ### Wayland 上的滑鼠點擊 {#mouse-clicks-on-wayland} -Wayland 沒有提供輸入事件的 portal,因此 OpenScreen 改為直接從核心的 evdev 介面(`/dev/input/event*`)讀取左鍵按下的事件。這些裝置節點的擁有者是 `root:input`,所以只有在你的使用者屬於 `input` 群組時,錄影才能分辨點擊與一般的游標移動: +Wayland 沒有提供輸入事件的 portal,因此 OpenScreen 改為直接從核心的 evdev 介面(`/dev/input/event*`)讀取左鍵按下的事件。這些裝置節點預設僅限 `root:input` 存取,所以只有在你的使用者擁有它們的讀取權限時,錄影才能分辨點擊與一般的游標移動。 + +沒有這項權限也不會出問題:錄影的運作與先前完全相同,每個游標取樣都只會被記錄為移動。 + +讀取範圍刻意限縮:點擊擷取只使用滑鼠左鍵按下的事件(`BTN_LEFT`),其他事件一律忽略,因此絕不會記錄鍵盤輸入。即使在已有權限的環境中,若要完全關閉這個讀取功能,請在啟動 OpenScreen 的環境中設定 `OPENSCREEN_DISABLE_CLICK_CAPTURE=1`。 + +#### 建議:udev 規則(最小權限) {#recommended-udev-rule-least-privilege} + +在由 systemd-logind 管理本機桌面座位(seat)的系統上,較安全的做法是只把該座位的存取權限(`TAG+="uaccess"`)授予指標裝置(滑鼠與觸控板),並明確排除鍵盤。這需要 udev 支援 `uaccess`,如此一來只有目前登入且處於作用中狀態的座位使用者才能存取,也不會暴露你的鍵盤: + +1. 在 `/etc/udev/rules.d/70-openscreen-mouse.rules` 建立 udev 規則檔(`70-` 前綴很重要,它讓規則在 systemd 的座位規則之前執行): ```bash -sudo usermod -aG input $USER +sudo tee /etc/udev/rules.d/70-openscreen-mouse.rules << 'EOF' +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_MOUSE}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +KERNEL=="event*", SUBSYSTEM=="input", ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_KEYBOARD}!="1", TAG+="uaccess" +EOF +``` + +2. 重新載入並套用規則: + +```bash +sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=input ``` -登出後再重新登入,新群組才會生效。沒有這項設定也不會出問題:錄影的運作與先前完全相同,每個游標取樣都只會被記錄為移動。 +可以用下列指令確認你的使用者能存取滑鼠的 evdev 節點(例如 `user:<你的使用者名稱>:rw-`): + +```bash +getfacl /dev/input/event* +``` + +#### 替代方案:`input` 群組 {#alternative-input-group} + +你也可以把使用者加入 `input` 群組: + +```bash +sudo usermod -aG input $USER +``` -讀取範圍刻意限縮:只會讀取滑鼠左鍵(`BTN_LEFT`),絕不讀取鍵盤輸入。即使在已有權限的環境中,若要完全關閉這個讀取功能,請在啟動 OpenScreen 的環境中設定 `OPENSCREEN_DISABLE_CLICK_CAPTURE=1`。 +登出後再重新登入,新群組才會生效。 -:::caution -`input` 群組並不只對 OpenScreen 生效:加入後,以你的使用者身分執行的任何程式都能讀取所有輸入裝置,包括鍵盤。請只在你能接受這一點的電腦上加入這個群組。 +:::caution 安全性考量 +把使用者加入 `input` 群組後,以你的帳戶執行的所有程式都能讀取系統上的**所有**輸入裝置,包括鍵盤,也就是說其中任何一個程式都能側錄你的鍵盤輸入。建議改用上面的 udev 規則。 ::: **觸控板:** 只有實體點擊(把觸控板按下去,直到它確實下沉)才會被記錄。**輕觸點按不會被記錄**,因為你的合成器的輸入堆疊(libinput)會自行合成這些輕觸,供它自己使用,而且從不寫回 OpenScreen 所讀取的核心裝置,所以在 evdev 層根本看不到它們。使用滑鼠,或關閉輕觸點按功能的觸控板,則每次點擊都會被記錄。 @@ -152,7 +183,7 @@ sudo usermod -aG input $USER | | macOS | Windows | Linux | |---|---|---|---| | 擷取管線 | 原生(ScreenCaptureKit) | 組建 19041 及更新版本為原生(Windows Graphics Capture);較舊的組建或缺少輔助程式時,改用瀏覽器擷取備援 | 原生(透過 ScreenCast portal 的 PipeWire);缺少輔助程式時改用瀏覽器擷取備援,但會失去硬體編碼與游標遙測資料 | -| 自訂游標/點擊效果 | ✅,點擊與游標形狀需要「輔助使用」權限 | ✅ | ✅ 支援 Wayland,點擊擷取需要 `input` 群組([詳細說明](#mouse-clicks-on-wayland)) | +| 自訂游標/點擊效果 | ✅,點擊與游標形狀需要「輔助使用」權限 | ✅ | ✅ 支援 Wayland,點擊擷取需要滑鼠 evdev 裝置的存取權限([詳細說明](#mouse-clicks-on-wayland)) | | 網路攝影機 | 瀏覽器擷取,另存為獨立檔案(仍可作為子母畫面使用) | 原生擷取,另存為獨立檔案 | 瀏覽器擷取,另存為獨立檔案(仍可作為子母畫面使用) | | 系統音訊 | 開箱即用;macOS 15.2 以上會出現它專屬的權限提示,較舊的版本則由「螢幕錄製」權限涵蓋 | 開箱即用 | 需要以 PipeWire 作為音效伺服器(Ubuntu 22.10 以上、Fedora 34 以上的預設) | | MP4 匯出 | ✅ | ✅ | ✅,GPU 堆疊允許時,H.264 會透過 VAAPI 在 GPU 上編碼(見下方說明),否則使用軟體編碼 |