Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SecondScreen

Convierte cualquier ordenador (Linux, Windows, otro Mac, tablet…) en una segunda pantalla extendida de tu Mac usando solo un navegador web. Sin apps de pago, sin instalar nada en el segundo equipo.

El Mac captura una pantalla y la transmite por la red local vía WebSocket. El segundo equipo solo abre una URL en el navegador. Además, el ratón y el teclado del segundo equipo controlan esa pantalla.

Características

  • 🖥️ Pantalla extendida real (combinado con un display virtual como BetterDisplay)
  • 🌐 Cliente sin instalación: solo un navegador en el segundo equipo
  • 🖱️ Control de ratón y teclado desde el segundo equipo hacia el Mac
  • 🔒 100% red local: nada sale a internet (WebSocket directo entre los dos equipos)
  • ⚙️ Configurable: FPS, calidad, monitor y escala

Requisitos

  • Mac (el servidor) con Python 3.8+
  • Cualquier equipo con un navegador (el cliente)
  • Ambos en la misma red local

Instalación

git clone https://github.com/<tu-usuario>/SecondScreen.git
cd SecondScreen
pip3 install -r requirements.txt

Uso

1. (Opcional) Crear una pantalla virtual para extender el escritorio

Si quieres una pantalla extendida real (no un duplicado), crea un display virtual en el Mac con BetterDisplay (gratuito) y ponlo en modo extendido en Ajustes del sistema → Pantallas.

2. Permiso de Accesibilidad (para ratón/teclado)

En Ajustes del sistema → Privacidad y seguridad → Accesibilidad, activa la app desde la que ejecutas el script (Terminal, iTerm o Python). Sin esto, el cursor no se moverá.

3. Arrancar el servidor en el Mac

python3 server.py

Verás algo así:

  Monitores detectados: 2
    Monitor 1: 1440x900
    Monitor 2: 1920x1080
  Capturando monitor 2 | 20 FPS | Calidad 75%
  Control de ratón/teclado: ACTIVADO

  Abre esto en el navegador del Debian:
  --> http://192.168.1.42:8080 <--

4. Conectar el segundo equipo

Abre esa URL en el navegador del segundo equipo y pulsa F11 para pantalla completa. ¡Listo!

Configuración

Edita las variables al principio de server.py:

Variable Por defecto Descripción
HTTP_PORT 8080 Puerto de la página web
WS_PORT 8765 Puerto del WebSocket (vídeo + control)
FPS 20 Fotogramas por segundo
QUALITY 75 Calidad JPEG (1–100). Baja si hay lag
MONITOR 2 Monitor a capturar (1 = principal, 2 = virtual)
CONTROL True Permitir ratón/teclado desde el cliente
SCALE 1.0 Ajuste de coordenadas (2.0 en pantallas Retina)

Controles desde el cliente

Acción en el navegador Resultado en el Mac
Mover ratón Mueve el cursor
Clic / clic derecho / doble clic Igual en el Mac
Rueda del ratón Scroll
Teclado Escribe en la ventana activa
F11 Pantalla completa (local, no se reenvía)

Solución de problemas

  • El cursor cae en la posición equivocada → ajusta SCALE (2.0 para Retina, 0.5 si va al doble).
  • El ratón no se mueve → falta el permiso de Accesibilidad (paso 2).
  • MONITOR=2 no existe → no hay pantalla virtual creada; usa MONITOR=1 o crea el display virtual.
  • Va con lag → baja FPS y/o QUALITY.
  • No conecta → comprueba que ambos equipos están en la misma red y que el firewall del Mac no bloquea los puertos.

Cómo funciona

┌─────────────┐   captura pantalla (mss)      ┌──────────────────┐
│             │   JPEG → WebSocket  ───────►  │                  │
│     Mac     │                               │  Navegador del   │
│  (servidor) │   ◄─── eventos ratón/teclado  │  segundo equipo  │
│             │        (pynput)               │   (cliente)      │
└─────────────┘                               └──────────────────┘
  • mss captura el monitor elegido.
  • Pillow comprime cada frame a JPEG.
  • websockets transmite los frames y recibe los eventos de entrada.
  • pynput reproduce ratón y teclado en el Mac.

Licencia

MIT — ver LICENSE.


Hecho por 0scar y la IA :)

About

Convierte cualquier equipo en segunda pantalla extendida de tu Mac usando solo un navegador. Con control de ratón y teclado.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages