- clipscreen es una aplicación X11 sencilla que crea un monitor virtual que refleja una zona específica de la pantalla y marca esa zona con un rectángulo verde
- En herramientas para compartir pantalla como Google Meet, Microsoft Teams y Jitsi Meet, permite compartir el monitor virtual en lugar de toda la pantalla o ventanas individuales
- Basta con mover la ventana que quieres compartir dentro del borde verde, lo que reduce la necesidad de compartir varias ventanas por separado o cambiar el objetivo de uso compartido
- Se ejecuta con el formato
./clipscreen <width>x<height>+<x>+<y>, y si se usa junto con hacksaw o slop, también permite la selección interactiva de área
- Solo se probó en Linux y xorg, y no se garantiza que funcione en otros sistemas
Qué hace clipscreen
- clipscreen es una aplicación que crea un monitor virtual que duplica una parte de la pantalla
- El área de pantalla especificada se resalta con un rectángulo verde
- El usuario puede compartir este monitor virtual en herramientas comunes de videoconferencia para compartir pantalla
- Por ejemplo: Google Meet
- Microsoft Teams
- Jitsi Meet
Forma de compartir pantalla
- En lugar de compartir toda la pantalla o ventanas individuales por separado, se comparte el monitor virtual creado por clipscreen
- La ventana que se quiere compartir se mueve dentro del borde verde
- Es una forma de evitar tener que cambiar constantemente la ventana compartida al manejar varias ventanas
Requisitos de compilación
- El sistema necesita lo siguiente
-
Bibliotecas de desarrollo de X11
- Biblioteca gráfica Cairo
- Compilador de C, por ejemplo
gcc
- En Ubuntu 24.04 se pueden instalar las bibliotecas necesarias con el siguiente comando
apt-get install libx11-dev xserver-xorg-dev xorg-dev libcairo2-dev gcc
- La compilación se ejecuta con el siguiente comando
make
- La aplicación solo se probó en **Linux y xorg**, y no está claro si funcionará en otros sistemas
Uso
- El ejecutable compilado se ejecuta con el siguiente formato
./clipscreen <width>x<height>+<x>+<y>
- Los argumentos especifican la posición y el tamaño de la superposición y del monitor virtual
<width>: ancho de la superposición y del monitor virtual
<height>: alto de la superposición y del monitor virtual
<x>: coordenada x de la esquina superior izquierda de la superposición y del monitor virtual
<y>: coordenada y de la esquina superior izquierda de la superposición y del monitor virtual
- Un ejemplo es el siguiente
./clipscreen 800x600+100+100
- Este comando crea una ventana de superposición de 800x600 que empieza en la posición
(100, 100) de la pantalla
Selección interactiva de área y cierre
- Para seleccionar el área de forma interactiva, se puede ejecutar junto con
hacksaw o slop
./clipscreen $(hacksaw)
./clipscreen $(slop)
- Herramientas relacionadas
- Para salir, presiona Ctrl+C en la terminal donde se está ejecutando la aplicación
1 comentarios
Opiniones de Hacker News
Así que creé una pequeña herramienta que usa la extensión xrandr para reflejar una zona específica como monitor virtual, y luego permite compartir ese monitor virtual.
Hay más detalles en la publicación del blog: https://www.splitbrain.org/blog/2024-10/11-introducing_clips...
Lo uso así como entorno de demo: https://gist.github.com/radupotop/d77a47767e2e65a7e7d40d1ea8...
sleep(100)dentro de un bucle hasta recibir SIGINT.Por eso podría aumentar el uso de CPU sin una razón particular.
Si se cierra de una forma que no sea SIGINT, puede quedar la salida virtual y desaparecer la ventana superpuesta, lo cual es un poco incómodo, pero no es un gran problema. Aun así, conviene no tomar demasiado la cantidad de líneas de código como medida de calidad o elegancia.
Este enfoque no es posible tal cual en Wayland. En cambio, en Wayland quizá esta herramienta ni siquiera sea necesaria. La forma estándar de que un proceso sin permisos capture la pantalla es el portal de escritorio, y al menos KDE admite varias opciones de captura, incluida la captura de un rectángulo de la pantalla. Parece que también funcionaría aunque estés ejecutando una app de X.org, gracias a XWaylandVideoBridge.
No me entusiasma mucho que D-Bus se use por todos lados, pero me gusta que, cambiando la implementación de
org.freedesktop.impl.portal.ScreenCast, se pueda reemplazar casi cualquier comportamiento de captura de pantalla que uno quiera. Me parece una dirección mejor que hacer que cada app implemente por su cuenta la selección del objetivo de captura.Eso no quiere decir que X11 no sea genial y fácil de hackear, pero si no quieres asumir solo el uso perfecto, el código se vuelve más grande y complejo, y por lo mismo más robusto.
Por ejemplo, prueba ejecutar
./clipscreen 1 2 3 4.Si quieres hacer alguna travesura, puedes hacerlo de inmediato. ICCCM recibió muchísimas críticas a principios de los 90, pero del otro lado no hay un equivalente, y todavía siguen apareciendo nuevos experimentos en el área de gestores de ventanas.
xrandr --setmonitor screenshare 2560/1x1440/1+0+0 nonegeo=$(slop -f '%w/1x%h/1+%x+%y') && xrandr --setmonitor screenshare "$geo" noneIgual es un comando de una línea muy bueno.
Así puedo saber si el tamaño de la ventana es adecuado para que otros la vean en una laptop, y la vista previa sigue al mouse mientras puedo ajustar sobre la marcha el nivel de zoom y los límites del mouse.
Me gusta que la ventana de vista previa de OBS se abra al ejecutarse sin la ventana principal de OBS, así que después no necesito ver ni manipular la ventana principal de OBS ni la app, y se siente como algo independiente.
https://github.com/BlankSourceCode/obs-zoom-to-mouse
Rectangular Region permite compartir una parte seleccionada de la pantalla, y New Virtual Output crea al instante una pantalla virtual visible en KDE Display Configuration. Esa pantalla virtual puede quedar superpuesta sobre una pantalla física existente, o no.