Plonk

El gestor de ventanas de Mac que tu agente puede controlar. Zonas de ajuste, espacios de trabajo guardados, mantener activo, capturas de pantalla y OCR en el dispositivo — 19 herramientas MCP que se conectan a una API de loopback en tu propia máquina. Sin cuenta, sin nube, sin telemetría.

Documentación

Plonk

Un administrador de ventanas para Mac con zonas que dibujas tú mismo. Coloca una ventana en una de ellas arrastrándola, con un atajo de teclado, por voz o pidiéndoselo a un agente a través de MCP.
Plonk es dejar algo exactamente donde le corresponde.

Version macOS 13+ Swift 6 No dependencies MIT MCP

ostapondo.github.io/Plonk

Una pila de ventanas superpuestas se despeja de cuatro maneras: una ventana se arrastra a una zona mientras las zonas se iluminan, la siguiente se envía a la zona dos con ⌃⌥2, la tercera manteniendo ⌃⌥V y diciendo “zona tres”, y las dos últimas se colocan juntas a partir de una frase escrita a un agente

Por qué otro más

Probablemente ya tengas Rectangle, Magnet, Loop o Raycast. Si una cuadrícula fija de mitades y tercios es todo lo que quieres, ellos lo hacen bien. Plonk es para tres cosas que ellos no hacen.

Zonas que dibujas. No una cuadrícula predefinida. Cualquier número de zonas, cualquier tamaño, un conjunto diferente por monitor, superpuestas si te conviene. Haz clic en una zona para dividirla, -clic para dividirla al revés: un carril estrecho para el chat, una división central ancha en dos, una franja para la terminal.

Espacios de trabajo que recuerdan el monitor. Guarda el escritorio: las aplicaciones, el marco de cada ventana y la pantalla en la que pertenece cada una. Ábrelo en un escritorio vacío y se reconstruye solo, en las pantallas correctas.

Un agente puede manejarlo todo. Plonk incluye un servidor MCP que cubre toda su superficie: diseños, espacios de trabajo, zonas, mantener despierto, capturas de pantalla, OCR en el dispositivo, medición. Los servidores genéricos de automatización de macOS pueden mover una ventana. Este es el propio administrador de ventanas, así que "navegador a la izquierda 60%, terminal arriba a la derecha, guárdalo como un espacio de trabajo llamado revisión" es una frase en lugar de un script.

Las otras siete herramientas, entre ellas OCR, una regla y mantener despierto, están ahí porque cada una era por lo demás un icono propio en la barra de menú.

Es temprano. Versión 0.2.x, un autor. Los atajos, los archivos de zonas y los espacios de trabajo están asentados. Los nombres de las herramientas MCP y la API HTTP no lo están, y aún pueden cambiar entre versiones menores. CHANGELOG.md dice qué se ha movido.

Tres formas de mover una ventana

Arrástrala. Las zonas se iluminan mientras mueves una ventana, y se suelta en una. Mantén también y ocupará dos a la vez. Activa agarrar-y-mover para arrastrar una ventana desde cualquier parte de ella en lugar de apuntar a la barra de título.

Pulsa una tecla. ⌃⌥← para la mitad izquierda. ⌃⌥1 a ⌃⌥9 para las zonas numeradas de esa pantalla. ⌃⌥0 devuelve una ventana a donde estaba antes de que Plonk la tocara.

Dilo. Mantén ⌃⌥V y nombra el lugar: "ajusta esto a la izquierda", "zona tres". Eso se ejecuta en la aplicación, sin conexión, en el dispositivo.

Se incluyen cinco conjuntos de zonas, y más allá de esos dibujas los tuyos. Cambia el conjunto en una pantalla y cualquier ventana que ya esté en una zona numerada se mueve a donde esté ese número ahora.

Cinco clics en el editor de zonas dividen una pantalla en seis zonas, seis ventanas las llenan, y ⌃⌥⇧2 luego cambia todo el conjunto por otro mientras las ventanas que ya están en él siguen sus números

La página de Zonas de Plonk: conjuntos de zonas en la parte superior con Tercios seleccionado y sus tres zonas numeradas dibujadas abajo, controles para arrastrar-para-ajustar y el modificador que muestra las zonas, y la lista de mitades, cuartos, maximizar y centrar con el atajo vinculado a cada uno

Instalación

macOS 13 o más reciente, Apple silicon.

brew install --cask ostapondo/plonk/plonk

Concede Accesibilidad cuando lo pida y luego reinicia. La Grabación de Pantalla se pide por separado, la primera vez que captures. Nada más: sin Acceso Total al Disco, sin Automatización, sin Llavero.

Plonk está firmado pero no notarizado, así que macOS retiene una copia que descargas manualmente. La cask se encarga de eso por ti.

Ejecutarlo junto a Rectangle o Magnet está bien, siempre que sus atajos no choquen.

Instalación manual, Macs Intel, administradores de mosaicos y cómo eliminarlo

Por qué macOS retiene una copia descargada. El certificado es autofirmado en lugar de un Apple Developer ID, porque la notarización requiere una cuenta de pago de Apple y este proyecto no tiene una. macOS no puede garantizar quién lo construyó, y lo dice. La cask omite esa verificación limpiando la bandera de cuarentena por ti.

Esa es una verificación omitida en tu nombre, así que aquí tienes una más fuerte para ejecutar antes de abrir cualquier cosa:

gh attestation verify $(brew --cache)/downloads/*--Plonk-*.zip \
  -R ostapondo/plonk

Imprime el commit y la ejecución de GitHub Actions que construyó este archivo exacto. El sello de Apple te diría que una compilación pasó un análisis de malware. Esto te dice que el binario proviene del código fuente de este repositorio, sin una computadora portátil en el medio.

Sin Homebrew. Descarga la última versión, descomprime, arrastra Plonk.app a Aplicaciones, y luego limpia la bandera tú mismo, que es todo lo que hace la cask:

xattr -dr com.apple.quarantine /Applications/Plonk.app

O haz el desvío de Gatekeeper una vez: abre Plonk, descarta la advertencia, luego Configuración del Sistema, Privacidad y Seguridad, desplázate a Seguridad, Abrir de todos modos.

Si mueves o renombras Plonk.app después, macOS vincula el permiso anterior a la ruta anterior y las ventanas de las aplicaciones recién lanzadas dejan de verse. Elimina Plonk de Privacidad y Seguridad, Accesibilidad, y concédeselo de nuevo.

En un Mac Intel. Las versiones se compilan solo para Apple silicon, así que la descarga no se ejecutará. Compilar desde el código fuente debería funcionar, consulta Compilar, pero nadie lo ha probado y un informe en cualquier dirección es bienvenido en issues.

Junto a un administrador de mosaicos. yabai y Amethyst son dueños de cada ventana en pantalla y sacarían las ventanas directamente de una zona. Ejecuta uno u otro.

Eliminarlo. brew uninstall --cask plonk, o sal de Plonk y arrástralo a la papelera. Luego elimina ~/Library/Application Support/Plonk/. El elemento de inicio de sesión se va con la aplicación, y no se escribió nada en ningún otro lugar.

Lo que obtienes

El administrador de ventanas son cuatro cosas, y esta es la parte de cada una que las secciones anteriores omitieron.

ZonasSuperpónlas, sepáralas, oculta los números, mantén una lista de aplicaciones que Plonk nunca toca. Las ventanas vuelven a su zona después de que una pantalla se desconecte y se vuelva a conectar
Espacios de trabajoArchivos, carpetas o URLs que cada aplicación debería abrir al iniciarse, para que un escritorio vuelva con los documentos correctos y no solo las aplicaciones correctas. Los monitores se identifican por UUID, así que desconectar uno no los desordena
Enfoque que sigue el diseño⌃⌥⇧← va a la ventana que realmente está a la izquierda, no a la que usaste por última vez. ⌃⌥` cicla las ventanas apiladas en una zona
VozMantén ⌃⌥V y dilo. Los comandos comunes se ejecutan en la aplicación, sin conexión. Cualquier cosa más grande va a tu agente. El reconocimiento es en el dispositivo

Y el servidor MCP, que es cada una de estas como una herramienta que un agente puede llamar.

Siete cosas más pequeñas, detrás del mismo icono de la barra de menú
Texto fuera de la pantalla⌃⌥T selecciona un área y copia las palabras que contiene: una captura de pantalla, un video en pausa, un diálogo que no te deja seleccionar. En el dispositivo
Una regla⌃⌥R, luego pasa el cursor: cuánto puede ir el puntero en cada dirección antes de encontrar un borde, leído en píxeles. El ancho de una fila, la altura de una barra, el espacio entre dos cosas. Arrastra para una distancia en línea recta. Puntos y píxeles
Fija parte de la pantallaFlota un recorte en vivo sobre todo lo demás. Un registro de compilación, un gráfico, una llamada, visible en una esquina mientras trabajas sobre él
Mantener despiertoAserciones de energía reales, no un agitador. Las sesiones terminan solas: después de N minutos, a una hora de reloj, o cuando un proceso sale
Capturas de pantallaRegión, ventana o pantalla, luego lápiz, flecha, rectángulo, elipse, resaltador. Guardadas a resolución nativa
Una guía de atajosCada atajo que la aplicación frontal realmente tiene, leído de sus propios menús, para que nunca esté desactualizada
Herramientas de punteroEncuentra el cursor, rodea cada clic para una grabación, miras, salta a la siguiente pantalla

Versiones más largas: Zonas · Espacios de trabajo · Atajos de teclado · Todo lo demás

Para agentes

Un agente puede leer el escritorio, reorganizarlo, guardar el resultado y leer texto de la pantalla, sin un viaje de ida y vuelta de captura de pantalla para nada que sea realmente solo palabras.

browser on the left 60%, terminal top right, notes bottom right
save that as a workspace called "review"
keep the Mac awake until this build finishes
read the error out of that dialog and tell me what it says
how tall is that toolbar, in points and in pixels

Veinte herramientas en estado, diseños, espacios de trabajo, zonas, mantener despierto, capturas de pantalla, OCR en el dispositivo y medición. Los marcos son fracciones del área visible de un monitor, origen arriba a la izquierda, así que "izquierda 60%" es {x: 0, y: 0, w: 0.6, h: 1}. Varios agentes pueden conectarse a la vez, cada uno registrándose, con un modo opcional que bloquea los cambios al activo.

Cuatro frases escritas a un agente: se aplica un diseño en todo el escritorio, el resultado se guarda como un espacio de trabajo llamado revisión y el Mac se mantiene despierto hasta que una compilación termina, todo se cierra a un escritorio vacío y se reconstruye desde ese espacio de trabajo, y finalmente se lee una línea de texto de error de la pantalla

Configuración, si quieres la CLI de plonk o un agente que la maneje (Node 18+):

claude mcp add plonk -- npx -y plonk-mcp   # Claude Code
codex mcp add plonk -- npx -y plonk-mcp    # Codex CLI

En Claude Code también puede ser un plugin: el mismo servidor, fijado a la versión con la que se envió en lugar de a lo que npm sirva como la más reciente.

/plugin marketplace add ostapondo/plonk
/plugin install plonk@plonk

Para Claude Desktop no hay nada que escribir. Descarga plonk-<version>.mcpb de la última versión y ábrelo. El paquete lleva el servidor y sus dependencias, así que no se edita ningún archivo de configuración y no se obtiene nada al iniciar.

Cualquier cliente MCP funciona, a través de stdio o HTTP. Guías de una página para Cursor, Zed y Cline.

El mismo paquete lleva un comando plonk, para las cosas que no son ni un agente ni una ventana de configuración:

plonk state                      # screens, zone sets, workspaces, windows
plonk launch review              # a saved workspace
plonk awake while npm run build  # awake for exactly as long as the build
plonk text | pbcopy              # OCR a region into the clipboard
plonk measure 0.5 0.5            # size of what is mid-screen, in points and pixels

Para agentes tiene cada herramienta, las reglas de múltiples agentes, el transporte HTTP y el resto de la CLI.

Privacidad

Sin cuenta, sin nube, sin telemetría. La API se vincula a 127.0.0.1, rechaza cualquier cosa que lleve encabezados que un navegador no pueda suprimir, y está protegida con un token que solo tú puedes leer. La única conexión saliente es la verificación de actualizaciones, que no lleva identificador y se puede desactivar.

Nada de eso es una afirmación que tengas que aceptar por fe. Las versiones se compilan y firman en los runners de GitHub y se envían con una atestación, así que el binario en tu Mac se vincula al commit del que proviene:

gh attestation verify Plonk-<version>.zip -R ostapondo/plonk

Compruébalo tú mismo es cada afirmación anterior con el comando que la prueba. SECURITY.md dice dónde termina cada promesa.

Bajo el capó

Claude habla con el servidor MCP a través de stdio, que llama a la API HTTP de bucle local de la aplicación

  • La aplicación es la única fuente de verdad. El servidor MCP es un puente sin estado.
  • App/ es la aplicación de la barra de menú en Swift, mcp/ el servidor MCP en TypeScript.
  • La configuración es JSON plano en ~/Library/Application Support/Plonk/config.json.

Compilar

Cinco comandos, y son lo que CI ejecuta en cada solicitud de extracción. Cada línea es una subshell, así que pega el bloque desde la raíz del repositorio.

(cd App && swift build)                    # the app compiles
./scripts/test.sh                          # the unit suite
./scripts/lint.sh                          # style rules, no dependencies
(cd mcp && npm ci && npm test)             # the MCP server
node scripts/check-zone-sets.mjs           # the layouts in zone-sets/

Nada de eso necesita un certificado de firma. La geometría de zonas, la decodificación de configuración, el enrutamiento HTTP, las herramientas MCP, el análisis de voz, la CLI y cada documento aquí son accesibles desde ese bucle, y la mayoría de los cambios no necesitan nada más. Producir un Plonk.app ejecutable sí necesita uno. Crea el tuyo una vez con ./scripts/make-signing-cert.sh, luego ejecuta ./scripts/build.sh. macOS vincula Accesibilidad y Grabación de Pantalla a la firma de código, y una firma ad-hoc cambia en cada compilación, por lo que un certificado estable es lo que evita que las reconstrucciones restablezcan los permisos.

Contribuciones

Los informes de errores, los conjuntos de zonas, los resúmenes de una página para clientes y el código son todos bienvenidos. Ninguno de ellos necesita un certificado de firma.

  • El cambio útil más pequeño es un archivo JSON. zone-sets/ es una galería de diseños que vale la pena copiar: una división ultrawide, un monitor rotado, el construido alrededor de una reunión recurrente. Dibújalo en la aplicación, lee los números de plonk state --json, abre una solicitud de extracción. Esa carpeta tiene su propio trabajo de CI y responde en unos veinte segundos. Sin compilación, sin firma, sin Swift.
  • Los problemas buena primera incidencia están escritos para ser tomados en frío. Cada uno dice dónde está el código y cómo saber que funcionó, y lleva un prompt que puedes entregar a un agente, ya que AGENTS.md ya explica el repositorio a uno.
  • Los problemas necesita-hardware no necesitan ni Swift ni un certificado, y son lo más útil que cualquiera puede enviar. Un administrador de ventanas falla en disposiciones que el autor no puede ver, por lo que un informe desde tres monitores o un ultrawide vale más que un parche.

CONTRIBUTING.md tiene el resto, incluido cuánto tarda una revisión. Las preguntas e ideas a medio formar van a Discussions. Un problema de seguridad pasa por SECURITY.md, no por un problema público. Todos los participantes siguen el Código de Conducta.

Licencia

MIT © ostapondo