Pake: Esta herramienta CLI crea aplicaciones de escritorio de 5MB

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Este es Paik, una herramienta de línea de comandos que convierte cualquier sitio web en una aplicación de escritorio nativa con un solo
00:00:05comando. Está construida con Rust, por lo que las aplicaciones que produce pueden pesar alrededor de 5 MB, lo cual es minúsculo comparado
00:00:10con Electron, que incluye una copia completa de Chrome en cada aplicación. Incluso puedes inyectar CSS
00:00:15y JavaScript personalizados, tener un icono en la bandeja del sistema y cambiar el estilo de la barra de título, todo sin escribir ni una sola
00:00:20línea de Rust. Pero, ¿por qué usaría esto sobre otras herramientas similares que existen, y por qué Paik
00:00:25me pide tener instalado PNPM o NPM si está construido en Rust? Casi que no quiero saberlo,
00:00:31pero aquí está la suscripción y vamos a descubrirlo. Paik fue creado en 2022 por TW93, un ingeniero de producto
00:00:40de China, quien también creó Mole, la increíblemente popular herramienta de optimización para Mac, que de hecho he estado
00:00:45usando durante un tiempo. Pero la idea detrás de Paik tiene mucho sentido, porque si lo piensas,
00:00:49aplicaciones como YouTube Music, Gmail e Instagram no tienen sus propias aplicaciones nativas oficiales. Solo viven
00:00:55dentro de pestañas del navegador, lo cual está bien si quieres toda esa funcionalidad del navegador, pero si quieres una
00:00:59página web con mejor rendimiento y su propio icono en el dock para separar las cosas, entonces tener una aplicación independiente
00:01:04para ello puede ser muy útil. Aquí es donde entra Paik, que es mucho mejor que Electron,
00:01:09porque está construido sobre Tauri 2, que aprovecha la vista web nativa del sistema, haciendo que las aplicaciones
00:01:14sean más pequeñas, más rápidas y utilicen menos memoria, similar a como funcionan Electro, Bun o ZeroNative de Vercel,
00:01:19de lo cual hablaré un poco más adelante en este video. Pero el código personalizado real escrito por TW93 sobre
00:01:24Tauri 2 consta de unas 1800 líneas de código Rust y maneja cosas como la gestión de ventanas, menús nativos,
00:01:30e inyección de JavaScript. Solo ejecutas un comando y Paik se encarga de todo. De hecho,
00:01:35intentemos usar Paik para convertir mi proyecto de emulación de películas en una aplicación independiente. Así que después de instalar
00:01:40la CLI de Paik, notarás que se parece mucho a Mole si alguna vez has usado Mole, y no tiene
00:01:45muchos indicadores, lo cual en mi opinión es algo bueno. Así que con el servidor de mi proyecto en ejecución, puedo ejecutar Paik con
00:01:50la URL y el nombre que quiero ponerle a la aplicación. Entonces, ahora si presiono enter, obtiene el icono y sigue el
00:01:55proceso de creación de la aplicación, lo que puede tardar entre cinco y 10 minutos. Y una vez hecho esto, crea
00:02:00este archivo DNG, que podemos encontrar aquí con 4.3 megabytes. Y si haces clic en él, aquí está nuestra aplicación,
00:02:05que podríamos instalar arrastrándola a las aplicaciones. Parece que no obtuvo el icono, pero eso
00:02:10está bien. Y ahora, si abrimos nuestra aplicación, podemos ver que funciona inmediatamente con el icono en el dock.
00:02:14Puedo seleccionar un video y todo parece funcionar bien. Y si miramos el monitor de actividad,
00:02:19podemos ver que nuestra aplicación solo usa 61 megabytes de memoria comparado con el navegador ARC, que está usando muchísimo.
00:02:24Y si echamos un vistazo al tamaño de la aplicación, son 55 megabytes frente a una aplicación de Electron como Slack,
00:02:30que tiene 310 megabytes. Pero como viste antes, Paik sí tiene algunas opciones bastante interesantes. Por
00:02:35ejemplo, puedo construir la misma aplicación con la bandera de depuración (debug) para obtener acceso a las herramientas de desarrollo. Y puedo editar
00:02:40la barra de estado para que se sienta más como una aplicación usando la bandera de ocultar barra de título, lo que le da
00:02:46una barra de título sin marco. Pero esta aplicación claramente no fue diseñada para no tener marco. Pero afortunadamente, Paik nos da
00:02:51una opción para solucionar eso sin editar el código fuente de la aplicación. Podría escribir algo de CSS personalizado e inyectarlo
00:02:56en mi aplicación usando la bandera de inyección, lo cual agregó el relleno en la parte superior, pero también significa que hay
00:03:01más espacio en la parte inferior para desplazarse. Podemos usar la bandera de mostrar la bandeja del sistema, revelando un icono en la
00:03:06bandeja del sistema, lo que nos permite mostrar y ocultar nuestra aplicación. E incluso podemos inyectar JavaScript, así como CSS.
00:03:12Pero en este momento, parece que no se pueden editar los elementos del menú que te da Paik por defecto.
00:03:17Y Paik solo funciona con URLs en ejecución. Así que si cierro mi servidor y luego trato de abrir la aplicación,
00:03:23simplemente me muestra una pantalla en blanco. Pero para ser justos, Paik no fue diseñado para aplicaciones locales. De hecho probé
00:03:28una aplicación de YouTube Music, que funciona sorprendentemente bien tras ejecutar un comando. E incluso funciona sin conexión
00:03:33porque así es como funciona el sitio de YouTube Music. Así que lo he estado usando como mi reproductor de música principal,
00:03:38pero básicamente no es la herramienta para aplicaciones de escritorio que tienes, ya que Paik envuelve una URL activa
00:03:42y no empaqueta tu código a menos que uses la opción de usar archivo local, de la cual solo me enteré
00:03:48después de crear este video. Tampoco diría que está muy bien construida. Déjame explicarme. Instalé Paik
00:03:53usando BUN en lugar de PNPM o NPM, pero necesita uno de ellos internamente para configurar la compilación de Tauri.
00:04:00Y mi versión de PNPM era más reciente que la versión que requería, lo que significa que se negó a construir
00:04:05e instalar la aplicación que quería. Así que tuve que usar Claude Code para editar el código fuente de Paik solo para que funcionara.
00:04:11Terminé encontrando un problema para ello, pero todo esto se podría haber resuelto si Paik se distribuyera con un
00:04:15binario compilado, lo cual es una ventaja de usar algo como ElectroBUN o ZeroNative,
00:04:20porque ElectroBUN te da un tiempo de ejecución real de BUN detrás de una vista web, lo que significa que puedes ejecutar lógica de
00:04:25backend y ZeroNative va aún más allá, dándote una shell completa de Zig que puede llamar directamente a librerías de C.
00:04:31Así que Paik es la forma más rápida de envolver un sitio web en vivo, pero si necesitas algo más que eso,
00:04:36es mejor recurrir a otra cosa.

Key Takeaway

Pake es una herramienta CLI construida con Rust y Tauri 2 que permite empaquetar sitios web en aplicaciones de escritorio ultraligeras, optimizando el rendimiento y reduciendo el consumo de memoria mediante el uso de la vista web nativa del sistema.

Highlights

  • Pake convierte cualquier sitio web en una aplicación de escritorio nativa mediante un comando CLI.

  • Las aplicaciones generadas con Pake pesan aproximadamente 5 MB, frente a los cientos de MB de aplicaciones basadas en Electron.

  • Pake aprovecha Tauri 2 y la vista web nativa del sistema operativo para reducir el consumo de memoria.

  • La herramienta permite inyectar CSS y JavaScript personalizados para modificar la apariencia y funcionalidad de la aplicación sin editar el código fuente original.

  • El uso de Pake requiere entornos como PNPM o NPM para configurar la compilación de Tauri, lo que puede generar conflictos de versiones.

  • Pake envuelve principalmente URLs activas, lo que provoca pantallas en blanco si la aplicación se intenta ejecutar sin conexión o sin un servidor local activo.

Timeline

Introducción y arquitectura de Pake

  • Pake transforma sitios web en aplicaciones nativas usando un comando.
  • La herramienta utiliza Rust y Tauri 2 para lograr aplicaciones de 5 MB.
  • Las aplicaciones nativas ofrecen mejor rendimiento y separación en el sistema que las pestañas del navegador.

Pake soluciona la falta de aplicaciones nativas oficiales para sitios web como YouTube Music o Gmail. Al basarse en la vista web nativa en lugar de incluir una copia completa de Chrome como Electron, las aplicaciones resultantes son más pequeñas y eficientes. Esta infraestructura permite gestionar ventanas, menús nativos e inyección de código mediante unas 1800 líneas de código Rust.

Proceso de creación y rendimiento

  • La creación de una aplicación toma entre 5 y 10 minutos.
  • Una aplicación generada con Pake consume solo 61 MB de memoria.
  • Las aplicaciones de Electron, como Slack, pueden ocupar 310 MB frente a los 55 MB de una aplicación Pake similar.

Tras ejecutar el comando con la URL y el nombre deseado, Pake genera un archivo ejecutable. En pruebas comparativas, las aplicaciones creadas con esta herramienta mostraron una huella de memoria significativamente menor en comparación con navegadores como ARC o aplicaciones tradicionales basadas en Electron, demostrando la eficiencia de aprovechar los recursos del sistema operativo.

Personalización y limitaciones técnicas

  • La inyección de CSS y JavaScript permite personalizar la interfaz sin tocar el código fuente.
  • Pake depende de entornos externos como PNPM o NPM para la compilación.
  • La herramienta está diseñada para envolver URLs activas, lo que requiere conexión a internet o un servidor local en ejecución.

Aunque Pake ofrece banderas para habilitar herramientas de desarrollo, inyectar código o configurar la bandeja del sistema, no está exento de problemas. La dependencia de gestores de paquetes externos puede causar errores de versión durante la instalación. Además, su naturaleza como envoltorio de URLs implica que no es una solución de empaquetado local completo a menos que se configure explícitamente para ello, lo que limita su utilidad si se requiere un funcionamiento totalmente desconectado o una lógica de backend compleja.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video