No description
  • Rust 99.3%
  • Shell 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-06 14:26:35 +00:00
core Vincular con QR 2026-11-06 11:00:44 -03:00
packaging TUI con soporte de mouse y lanzador de escritorio 2026-10-15 10:24:42 -03:00
scripts TUI con soporte de mouse y lanzador de escritorio 2026-10-15 10:24:42 -03:00
tui Vincular con QR 2026-11-06 11:00:44 -03:00
.gitignore configs 2026-10-15 09:43:16 -03:00
Cargo.lock Vincular con QR 2026-11-06 11:00:44 -03:00
Cargo.toml Vincular con QR 2026-11-06 11:00:44 -03:00
LICENSE Licenciar bajo GPL-3.0 2026-10-15 09:50:55 -03:00
README.md Vincular con QR 2026-11-06 11:00:44 -03:00

scrcpy-manager

TUI (ratatui) para administrar conexiones adb inalámbricas y abrir varias instancias de scrcpy a la vez.

Estructura

Cargo.toml        workspace
core/  (scm-core) lógica reutilizable, sin dependencias de UI
  config.rs       perfiles en ~/.config/scrcpy-manager/config.toml
  adb.rs          devices / pair / connect / disconnect / mdns services
  scrcpy.rs       lanza un proceso scrcpy por dispositivo y los supervisa
tui/   (scrcpy-manager) interfaz ratatui
  app.rs          estado, teclado y tareas adb en hilos de fondo
  ui.rs           render

Una futura GUI (Tauri, egui...) se agrega como otro crate del workspace que depende de scm-core.

Instalación

./scripts/install.sh

Instala el binario en ~/.cargo/bin y agrega scrcpy manager al menú de aplicaciones (se abre en una terminal). Para desarrollo: cargo run.

Requiere adb y scrcpy en el PATH.

Uso

Se maneja con teclado o mouse: clic en una fila la selecciona, doble clic la abre (igual que Enter), la rueda se mueve por la lista y la barra inferior tiene botones para cada acción. Mientras la app captura el mouse, para seleccionar texto de la terminal hay que mantener Shift.

Tecla Acción
Tab / Shift+Tab cambiar de panel (Perfiles, Dispositivos, scrcpy)
↑↓ / j k moverse
Enter / s conectar si hace falta y abrir scrcpy
c / x conectar / desconectar (por USB: desenchufar el cable)
a nuevo perfil (en Dispositivos: guardar el seleccionado como perfil)
e / d editar / borrar perfil
p vincular: adb pair (puerto de vinculación + código), y adb connect al puerto de depuración inalámbrica (o lo busca por mDNS); opcionalmente guarda el perfil. El puerto fijo se elige después con t
v vincular con QR: muestra el código para "Vincular dispositivo con código QR" del teléfono; al escanearlo se vincula, conecta y guarda el perfil solo
t pasar un dispositivo (o perfil) ya conectado (USB o inalámbrico) a un puerto fijo (pregunta cuál, por defecto 5556) y guardarlo como perfil
x (panel scrcpy) cerrar esa instancia
r refrescar
q salir (cierra los scrcpy abiertos)

La salida de cada scrcpy queda en ~/.cache/scrcpy-manager/<serial>.log.

Vincular con QR

v muestra un QR. En el teléfono: Opciones de desarrollador → Depuración inalámbrica → Vincular dispositivo con código QR, y escanearlo. La app encuentra al teléfono por mDNS, hace adb pair, se conecta y guarda el perfil con el modelo como nombre (después se le puede fijar el puerto con t).

  • El teléfono y la PC tienen que estar en la misma red (mDNS no cruza subredes ni VLANs).
  • El mDNS lo hace la propia app (crate mdns-sd), así que funciona aunque el adb instalado no tenga mDNS (como el de Debian).
  • La terminal tiene que tener al menos 24 filas para que entre el QR.

USB

Los teléfonos enchufados por cable aparecen en Dispositivos marcados como USB, y Enter abre scrcpy igual que por Wi-Fi.

  • Un perfil puede tener USB, Wi-Fi o ambos. Si el teléfono está enchufado, Enter usa el cable (mejor calidad y latencia); si no, Wi-Fi.
  • Se reconoce al teléfono por su número de serie (ro.serialno), que es el mismo por cable o por red. Cuando un perfil Wi-Fi está conectado, la app lo aprende sola, y después lo reconoce al enchufarlo.
  • a sobre un dispositivo USB crea un perfil solo USB (con el host vacío).
  • t sobre un dispositivo USB lo pasa a Wi-Fi con puerto fijo y guarda las dos conexiones en el mismo perfil.
  • Si dice unauthorized, aceptá el aviso de depuración en el teléfono. Si dice no permissions, faltan las reglas udev (android-udev-rules) o el grupo plugdev.

Puerto fijo (adb tcpip)

Los perfiles se conectan a IP:<puerto fijo> (por defecto 5556, se elige con t después de la primera vinculación). La depuración inalámbrica de Android usa un puerto que cambia cada vez, así que se usa solo una vez para ejecutar adb tcpip <puerto>, que deja al teléfono escuchando en ese puerto.

El modo tcpip se pierde al reiniciar el teléfono. Para recuperarlo:

  • con la depuración inalámbrica activa y mDNS funcionando, Enter sobre el perfil lo reactiva solo;
  • si no, conectá por USB (o vinculá de nuevo con p) y apretá t sobre el dispositivo en el panel Dispositivos.

Ejemplo de config

[[profile]]
name = "Moto Edge 60"
host = "192.168.1.50"
port = 5556
scrcpy_args = ["--no-audio", "--max-size", "1600"]

Licencia

Distribuido bajo la GNU General Public License v3.0 (GPL-3.0-only).