9 puntos por kernalix7 21 일 전 | Aún no hay comentarios. | Compartir por WhatsApp

Llevo más de 5 años usando Linux como sistema principal, pero siempre me ha frustrado que programas dependientes de Windows, como Office (Outlook conectado a Exchange, MS Project) o sitios gubernamentales/financieros, de vez en cuando me terminen arrastrando de vuelta a Windows.

Wine resuelve muchas cosas, pero se rompe en las partes profundamente integradas con Microsoft.

Así que hice esto. Si haces clic en el ícono de una app de Windows desde el menú de aplicaciones de Linux, se abre como si fuera una ventana nativa de Linux. No es RDP en pantalla completa: cada app aparece como una ventana de Linux independiente.


Cómo funciona

En segundo plano corre un contenedor de Windows (dockur/windows) sobre Podman, y cada app de Windows se muestra como una ventana nativa de Linux mediante FreeRDP RemoteApp. Dentro del guest se levanta un agente HTTP autenticado con bearer token para manejar el canal de comandos host→guest (sin que aparezca una ventana de PowerShell).

  • Ejecuta la app al instante al hacer clic en su ícono (primera ejecución con configuración cero)
  • La agrupación en la barra de tareas, la asociación de archivos y alt-tab funcionan correctamente
  • Descubre automáticamente las apps instaladas en el guest (Registry App Paths, Start Menu, UWP/MSIX, Chocolatey, Scoop)
  • Suspende automáticamente el contenedor cuando está inactivo y rota automáticamente la contraseña de RDP cada 7 días
  • Escalado HiDPI automático en múltiples entornos de escritorio (GNOME, KDE, Sway, Hyprland, Cinnamon)
  • Python + Qt6 (sin Electron, mayormente sobre la stdlib)

Diferencias frente a otras herramientas del mismo espacio

winapps, winboat y LinOffice también usan la misma combinación de dockur + FreeRDP. Lo que diferencia a winpodx:

  • Primera ejecución con configuración cero (las otras herramientas requieren configuración manual o un instalador GUI)
  • Soporte explícito para rutas de instalación air-gapped (--source, --image-tar, --skip-deps)
  • Auto-configuración más profunda (suspensión automática, rotación de contraseñas, HiDPI multi-DE)

Reimplementación de RDPWrap en Rust (rdprrap)

Mientras lo hacía, apareció una misión secundaria que me consumió muchos más fines de semana de lo esperado.

Windows Desktop limita a una sola sesión RDP por usuario, así que si abres una segunda app, secuestra la primera sesión. La solución estándar, RDPWrap, lleva años sin mantenimiento y solo se distribuye como binarios opacos en C++.

Por eso lo reimplementé desde cero en Rust (rdprrap, MIT). Viene incluido en winpodx y se instala automáticamente, con soporte para hasta 10 sesiones RDP independientes.


Limitaciones

  • Se necesitan varios GB de RAM para el contenedor
  • Aún no hay GPU passthrough (para trabajos sensibles al rendimiento o juegos, se recomienda Wine + DXVK)
  • Todavía quedan comportamientos específicos por app en RAIL que no están del todo pulidos
  • Beta (v0.3.0)

Instalación

Distribuciones compatibles: openSUSE, Fedora, Debian/Ubuntu, RHEL/Alma/Rocky 9 y 10. AUR está pendiente.
curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash

O puedes descargar paquetes RPM/deb precompilados desde GitHub Release. Para openSUSE/Fedora, vía OBS:
sudo zypper addrepo https://download.opensuse.org/repositories/home:/…
sudo zypper install winpodx


GitHub: https://github.com/kernalix7/winpodx

Como está en etapa beta, los issues son bienvenidos.

Aún no hay comentarios.

Aún no hay comentarios.