WhatsApp en Linux. La solución DEFINITIVA (y no es lo que esperas)

A pesar de que últimamente no utilizo tanto WhatsApp en el equipo sobremesa, se que dentro de poco necesitaré tirar de él. Y es que, hasta hace pocas semanas, estuve utilizando ZapZap para poder tener WhatsApp en el equipo de sobremesa, pero de repente dejó de funcionar. Así que pensé que era el momento de buscar una solución mas definitiva que andar instalando aplicaciones.

0:00 / 0:00

WhatsApp en Linux. La solución DEFINITIVA (y no es lo que esperas)

Telegram vs WhatsApp

Para mi Telegram siempre ha sido, y sigue siendo, muy superior a WhatsApp, salvo por dos detalles fundamentales, que son la masa de usuarios y la resistencia al cambio. Actualmente el número de usuarios de WhatsApp es muy superior al de Telegram. Cambiarte de servicio de mensajería porque otro es mejor no es suficiente justificación. La resistencia al cambio de los humanos es muy superior a ese aparente razonamiento. Porque por otro lado, ¿para que es mejor?. Si solo estás utilizando ese servicio de mensajería para enviar cuatro mensajes que mas te da utilizar WhatsApp o Telegram.

Que si, que puede ser muy superior, pero cuando pruebas Telegram y te das cuenta que allí no están las personas con las que quieres interactuar, pues no te queda otra que seguir utilizando WhatsApp.

¿Para que utilizo WhatsApp?

Actualmente utilizo WhatsApp exclusivamente para comunicarme con unos pocos pero todo relacionado con el ámbito mas personal. Inicialmente me pasó lo mismo con Linux, invertí parte de mi energía en intentar convencer que Telegram era mejor… hasta que me di cuenta de lo que te conté anteriormente ¿mejor para que?.

Ahora simplemente tengo dos servicios en mi móvil, y también en mi escritorio, WhatsApp y Telegram, de forma que uno lo utilizo para mi vida mas personal, mientras que el otro lo utilizo para el mundo de atareao.es.

¿Porque utilizar WhatsApp como PWA?

Sin embargo, en un punto concreto, se ha cruzado WhatsApp al otro lado, con una única persona. Para esta actividad necesito mirar conversaciones, abrir archivos, copiar contenidos… Básicamente, todas las operaciones que suelo hacer con Telegram y nunca hago con WhatsApp.

Después de estos meses de estar probando con ZapZap, y que desapareciera de mi escritorio, me cansé, y tras oir a Antonio Mafredi, hablar en su Tecnocincuentones, en concreto en el episodio 356 La ilusión de convertirme en programador, sobre utilizar WhatsApp como PWA, decidí darle una vuelta.

Y no solo utilizar WhatsApp como PWA, sino también Telegram, de forma que tengo ambos servicios en el escritorio, y no tengo que andar con aplicaciones de terceros, ni nada por el estilo.

Aunque esto de no utilizar aplicaciones de terceros, no ha sido tanto así.

Primeros pasos con PWA

Los primeros pasos con PWA fueron utilizando Chrome, que realmente lo hace muy sencillo. Sin embargo, mi navegador de cabecera es Firefox.

Actualmente en mi equipo de escritorio solo tengo Chrome para un uso concreto de un servicio web que no permite el uso de Firefox, y nada mas. Me siento mucho más cómodo utilizando Firefox.

Sin embargo, hay un pequeño detalle, y es que Firefox no tiene soporte para PWA, o al menos no de forma nativa. Sin embargo, existe una extensión llamada Progressive Web Apps for Firefox que te permite crear PWA a partir de cualquier sitio web.

Progressive Web Apps for Firefox

Esta extensión ha evolucionado para proporcionar un control granular sobre los perfiles, la integración con el sistema operativo, y la personalización de la interfaz, llenando un vacío crítico para los usuarios y sobre todo para los que valoramos nuestra privacidad.

Algunas de las características mas destacables de esta extensión son,

  • Es multiplataforma, lo que significa que puedes usarla en cualquier sistema operativo donde Firefox esté disponible, incluyendo Linux, Windows y macOS.
  • Permite el aislamiento de perfiles con perfiles dedicados.
  • Te permite gestionar exteniones específicas por app.
  • Tiene una completa personalización de la interfaz de usuario.
  • Se integra completamente con los menús del sistema.

La implementación de una aplicación web como un proceso independiente del sistema requiere una infraestructura que trascienda las capacidades estándar de las WebExtensions de Firefox. El proyecto PWAsForFirefox se estructura en tres pilares fundamentales que interactúan de forma coordinada para eludir las restricciones de seguridad del navegador y ofrecer una integración profunda con el sistema operativo.

  • El componente nativo y el protocolo de mensajería. El núcleo operativo del sistema es un programa nativo escrito en Rust, un lenguaje seleccionado por su eficiencia y seguridad de memoria. Este componente actúa como el puente entre el navegador Firefox y las APIs de bajo nivel del sistema operativo. Debido a que las extensiones de navegador modernas operan dentro de un entorno aislado (sandbox), no pueden crear archivos en el sistema, gestionar procesos o modificar el registro del sistema operativo de forma directa. El componente nativo de PWAsForFirefox resuelve esta limitación mediante el uso de la Native Messaging API. Este protocolo permite que la extensión envíe mensajes estructurados en formato JSON al ejecutable nativo, el cual procesa las solicitudes de instalación, actualización o eliminación de aplicaciones web. En sistemas Linux, este componente se encarga de generar los archivos .desktop, mientras que en Windows gestiona las entradas del menú de inicio y los accesos directos. El ejecutable nativo también es responsable de la gestión del tiempo de ejecución de Firefox, asegurando que se invoquen los parámetros correctos para cada aplicación instalada.
  • El entorno de ejecución modificado (Custom Runtime). Una de las innovaciones técnicas más significativas del proyecto es la creación de un tiempo de ejecución (runtime) personalizado. El sistema no utiliza el ejecutable principal de Firefox que el usuario emplea para su navegación diaria, sino que descarga y configura una instancia independiente de Firefox. Este runtime se somete a un proceso de parcheo dinámico que utiliza JavaScript y CSS (UserChrome) para transformar radicalmente la interfaz de usuario del navegador. Este proceso de modificación del «browser chrome» permite eliminar elementos visuales superfluos, como el botón de retroceso, la barra de pestañas y el menú principal, resultando en una ventana limpia que enfoca la atención exclusivamente en el contenido de la aplicación web. El uso de scripts UserChrome personalizados permite que el runtime responda a las preferencias del sistema operativo, como el modo oscuro o los colores de acento, integrándose estéticamente con el entorno de escritorio del usuario.La extensión del navegador como interfaz de gestión
  • La extensión de Firefox actúa como el centro de control para el usuario. Proporciona una interfaz intuitiva para detectar si un sitio web posee un manifiesto de PWA válido y facilita la instalación con un solo clic. Además de la instalación, la extensión gestiona la configuración de los perfiles, la actualización de los metadatos de las aplicaciones y la comunicación constante con el componente nativo para asegurar que el registro en el sistema operativo esté sincronizado con los cambios realizados en el navegador.
ComponenteFunción TécnicaTecnología Utilizada
ExtensiónLógica de usuario y detección de manifiestosJavaScript (WebExtensions)
Programa NativoGestión de archivos, procesos y SORust
ConectorComunicación entre extensión y sistemaNative Messaging Protocol
RuntimeRenderizado de la web sin UI de navegadorGecko (Firefox) parcheado
PerfilesAlmacenamiento aislado de datos de appEstructura de perfiles de Firefox

La naturaleza híbrida de PWAsForFirefox implica que el proceso de instalación es más complejo que el de una extensión convencional. El usuario debe seguir un flujo de trabajo que incluye la instalación de la extensión, el software nativo y el tiempo de ejecución del navegador.

La instalación en Linux varía significativamente según la distribución y el formato de empaquetado del navegador Firefox. El proyecto proporciona repositorios para distribuciones basadas en Debian/Ubuntu y Fedora/RPM a través de Packagecloud. Un ejemplo del proceso de adición del repositorio mediante terminal es el siguiente,

curl -s https://packagecloud.io/install/repositories/filips/FirefoxPWA/script.deb.sh?any=true | sudo bash

Para los usuarios de Arch Linux, el paquete firefoxpwa está disponible en el repositorio Extra, lo que simplifica enormemente su mantenimiento. Un aspecto técnico crítico en Linux es la limitación de los paquetes Flatpak y Snap. Debido a que estos formatos operan en contenedores aislados, la extensión no puede comunicarse con el programa nativo de forma predeterminada. La recomendación oficial es utilizar la versión de Firefox distribuida mediante el gestor de paquetes nativo (DEB, RPM o pacman) para garantizar que la API de mensajería nativa funcione sin restricciones de sandbox.

Controladores de protocolos y archivos

Una característica avanzada introducida en las versiones recientes es el soporte para controladores de protocolos (Protocol Handlers). Esto permite que una PWA instalada, como un cliente de correo web, se registre en el sistema operativo para manejar enlaces de tipo mailto:. De igual manera, se ha explorado el soporte para controladores de archivos (File Handlers), permitiendo que una PWA pueda ser seleccionada como la aplicación predeterminada para abrir extensiones de archivo específicas (por ejemplo, un editor de imágenes web para archivos .png).

Aislamiento de datos y gestión avanzada de perfiles

A diferencia de la navegación convencional, donde todos los sitios comparten un mismo perfil y conjunto de cookies, PWAsForFirefox fundamenta su propuesta de valor en el aislamiento de datos. Esta arquitectura ofrece beneficios tangibles en seguridad, privacidad y organización.

Perfiles comunes frente a perfiles aislados

El sistema permite dos configuraciones principales de perfiles. El uso de un «perfil común» facilita que aplicaciones relacionadas (como el ecosistema de Google o Proton) compartan sesiones de inicio de sesión, lo que mejora la conveniencia. No obstante, la opción más recomendada para la privacidad es la creación de perfiles aislados para cada aplicación. Esto evita que los rastreadores y las cookies persistentes de una aplicación puedan identificar al usuario en otra, reduciendo significativamente la huella digital.

Sincronización de credenciales y extensiones

Dado que cada PWA opera en su propio entorno de archivos, los datos no se sincronizan automáticamente con el navegador Firefox principal. Los usuarios que deseen mantener la coherencia de sus contraseñas y marcadores pueden iniciar sesión en su cuenta de Firefox (Firefox Sync) dentro de cada PWA o utilizar gestores de contraseñas de terceros que ofrezcan extensiones compatibles con el motor Gecko. La instalación de extensiones dentro de una PWA se realiza a través del gestor de complementos estándar de Firefox, accesible mediante atajos de teclado como Ctrl+Shift+A o navegando directamente a addons.mozilla.org.

Personalización de la interfaz y comportamiento

El atractivo de las PWA en Firefox no reside solo en su independencia, sino en la capacidad de modificar casi cualquier aspecto del entorno de ejecución mediante tecnologías web estándar.

Uso de UserChrome.css y scripts de inicio

Los usuarios avanzados pueden aplicar estilos CSS personalizados al «chrome» de la aplicación web. Al ubicar un archivo userChrome.css dentro de la carpeta chrome del perfil de la PWA y activar la preferencia toolkit.legacyUserProfileCustomizations.stylesheets en about:config, es posible ocultar elementos específicos de la UI, cambiar la tipografía de los menús o ajustar el comportamiento de las ventanas.

Además del CSS, el proyecto permite la ejecución de scripts de inicio mediante boot.sys.mjs. Estos scripts de JavaScript tienen acceso a niveles profundos de la lógica del navegador, permitiendo automatizar tareas, inyectar funcionalidades en sitios web específicos o modificar la forma en que el runtime gestiona los eventos de red.

Adaptación visual al sistema operativo

El runtime de PWAsForFirefox incluye lógica para detectar y aplicar colores de tema dinámicamente. Si un desarrollador web especifica un theme_color en su manifiesto, la ventana de la PWA puede adoptar ese color en su barra de título, proporcionando una sensación de continuidad visual. En Linux, el proyecto soporta específicamente configuraciones para Wayland, XInput2 y portales XDG Desktop, asegurando que la renderización y las entradas de usuario sean fluidas y nativas en los entornos de escritorio modernos.

Característica de PersonalizaciónMecanismo de ImplementaciónResultado para el Usuario
Ocultar barra de direccionesConfiguración de la extensiónInterfaz minimalista de aplicación
Temas oscuros dinámicosPreferencias del sistema + CSSCoherencia con el modo noche del SO
Atajos de teclado propiosConfiguración de Firefox / ExtensionesOperación rápida sin conflictos con el navegador
Bloqueo de publicidadExtensiones (uBlock Origin)Navegación limpia y rápida en la PWA
Lanzamiento al iniciar sesiónEntrada en registro /.desktopApp lista tras el arranque del sistema

PWA en Firefox frente a Chrome y Appas Nativas

Para determinar la viabilidad de PWAsForFirefox en un entorno profesional, es necesario analizar cómo se posiciona frente a las alternativas tecnológicas actuales. El debate suele centrarse en el equilibrio entre alcance, rendimiento e integración de hardware.

El dilema de las APIs de hardware en Gecko

El motor Gecko de Firefox, sobre el cual se construye este proyecto, posee una filosofía de seguridad más restrictiva que el motor Blink de Chromium. Esto se traduce en la ausencia de soporte para ciertas APIs de hardware que son comunes en las PWA de Chrome y Edge.

  • Web Bluetooth y Web NFC. Actualmente no están soportadas en Firefox. Esto limita el uso de PWA para aplicaciones que interactúan directamente con dispositivos IoT o etiquetas físicas de proximidad.
  • File System Access API. Mientras que Chromium permite el acceso directo y la edición de archivos locales con permiso del usuario, Firefox implementa modelos más restrictivos que priorizan la privacidad sobre la funcionalidad de edición directa en disco.
  • Rendimiento en tareas intensivas. Las aplicaciones nativas, escritas en lenguajes como Swift o Kotlin, siempre superarán a las PWA en tareas de computación pesada, como la edición de vídeo 4K o el renderizado 3D complejo, debido al acceso directo a la GPU y a las instrucciones de bajo nivel del procesador.

Ventajas estratégicas de PWAsForFirefox

A pesar de estas limitaciones, el ecosistema basado en Firefox ofrece ventajas que Chromium no puede igualar fácilmente,

  • Bloqueo de rastreo nativo. La Protección Antirrastreo Mejorada (ETP) de Firefox es una de las más robustas de la industria. Al ejecutar una PWA en este runtime, el usuario se beneficia automáticamente de estas protecciones, algo que en Chrome es más limitado debido al modelo de negocio de Google basado en la publicidad.
  • Independencia de la App Store. Tanto las aplicaciones nativas como las instaladas a través de tiendas oficiales están sujetas a procesos de aprobación y comisiones. Las PWA gestionadas por PWAsForFirefox se distribuyen directamente desde el servidor del desarrollador, garantizando actualizaciones instantáneas y libertad total de publicación.
  • Eficiencia de recursos. Las PWA suelen ocupar una fracción del espacio en disco en comparación con sus contrapartes nativas. Por ejemplo, la PWA de Starbucks pesa apenas 233 KB, mientras que su aplicación nativa para iOS supera los 148 MB.

Instalación

La instalación tiene dos partes. La primera es la propia extensión en si que la puedes instalar desde la tienda de complementos de Firefox, y la segunda es el programa nativo que se encarga de gestionar las aplicaciones web como aplicaciones nativas. En el caso de ArchLinux lo puedes hacer de la siguiente forma,

sudo pacman -S firefoxpwa

Indicarte que hay paquetes deb y rpm para descargar desde el propio repositorio de GitHub.

Uso y funcionamiento

Una vez instalado simplemente tienes que ir a la página web de WhatsApp, y si la extensión detecta que es una PWA válida, te aparecerá un icono en la barra de direcciones para instalarla. Al hacer clic en ese icono, se abrirá un cuadro de diálogo que te permitirá configurar el nombre de la aplicación, el icono y otras opciones antes de finalizar la instalación.

Deja una respuesta

Publicar comentario