Creación de una superposición de pantalla local para la transmisión

Mi nueva computadora tiene una pantalla más grande que la anterior. Es genial, excepto que ya no coincide con las dimensiones de transmisión típicas de 1920 x 1080. No puedo ajustar esas dimensiones sin sufrir problemas de escala en Twitch y YouTube. Puedo transmitir solo una parte de mi transmisión, pero no puedo ver las dimensiones de esa área. Necesito una superposición local que me muestre lo que está sucediendo.

Exploré varias opciones antes de encontrar algo que funcionara.

Primero lo intenté display de ImageMagick. Este kit de herramientas generalmente tiene todo lo que uno desea con manipulación básica de imágenes, siempre que pueda descubrir las interfaces de línea de comandos increíblemente complejas. Por desgracia, no pude encontrar ninguna opción que mostrara la imagen como quería.

Pensando que la composición es parte del escritorio, miré los widgets. Hay un panel de medios en KDE. A pesar de ser incómodo para trabajar, muestra la imagen correctamente: sin fondo y bien combinada. Desafortunadamente, no se puede colocar sobre otras ventanas, ya que es un widget en el escritorio.

Continuando, encuentro un programa llamado qiv, un simple visor de imágenes. Jugué con esto un tiempo ya que parecía que podría funcionar, pero quizás tenía las opciones mal. Parecía tener la forma adecuada de la ventana (ignorar la entrada del mouse), pero no estaba compuesta. La composición se refiere a realizar una mezcla alfa completa con las otras ventanas del escritorio. En cambio, estaba haciendo una mezcla contra un fondo de tablero de ajedrez, llegando a un píxel completamente opaco o transparente para el administrador de ventanas.

Me di por vencido por la frustración por un tiempo. Asumí que lo que quería era simple, pero parecía imposible. Quería una sección transversal de características, todas las cuales sabía cuando era posible, pero ningún programa expuesto.

Probé algunos enfoques alternativos. he usado wmctrl para mover las ventanas. Permite mantener una ventana por encima de otras, pero no había opción para alterar el manejo de entrada.

xprop es una herramienta general de propiedades del protocolo X. Un escenario, llamado WM_HINTS incluye el control de entrada. Fue un poco difícil averiguar cómo modificar este campo. Para referencia:

xprop -id 0x08a00003 -f WM_HINTS 32i WM_HINTS
xprop -id 0x08a00003 -f WM_HINTS 32i -set WM_HINTS "67, 1, 1, 0, 0, 0, 0, 0, 144703489"

No tengo idea de cuáles son todos esos valores y no pude encontrar una combinación que desactivara el manejo de entrada. Puede que no haya uno.

Me encontré con otro programa, llamado pqiv. Este hizo la composición de pantalla completa, pero el manejo de entrada seguía siendo un problema. Antes de encontrar esto, vi otro programa escrito en Python. Desactivó el manejo a través del sistema X Shape pero faltaba la composición. Con eso en mente, busqué los temas de pqiv y encontré algo que quería: número 125.

Eso estaba vinculado a otro problema que tenía algún código. Lo junté, agregué algunas opciones de línea de comando y creé un rama pequeña.

Hace exactamente lo que quiero.

pqiv --click-through --keep-above --transparent-background --hide-info-box /projects/Current/mortoray.com/artwork/stream_display_frame.png

Eso compone la superposición de mi transmisión y deshabilita el manejo del mouse.

También está el --position opción, que por alguna razón no admitía valores negativos. Resulta que la API del administrador de ventanas está siendo estúpida desde wmctrl tampoco pudo establecer un valor negativo para la posición. Huele a algo inteligente código del pasado.