- Rust 99.3%
- Shell 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| core | ||
| packaging | ||
| scripts | ||
| tui | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
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 eladbinstalado 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,
Enterusa 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. asobre un dispositivo USB crea un perfil solo USB (con el host vacío).tsobre 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 diceno permissions, faltan las reglas udev (android-udev-rules) o el grupoplugdev.
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,
Entersobre el perfil lo reactiva solo; - si no, conectá por USB (o vinculá de nuevo con
p) y apretátsobre 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).