Domina tu Escritorio: WayVnc Personalizando y Lanzando Scripts con Wmenu en Sway/Wayland… Extrañan la ñ, ¡ya no mas!

Entorno con dificultades

Los principales aspectos que se deben tener para lograr una solución de software son terquedad y capricho. La terquedad para pensar que se puede probar una nueva posibilidad y el capricho para no aceptar resultados parecidos o que cumplan con un cierto porcentaje de satisfacción. Estas necesidades insatisfechas son muy comunes en la personalización de software libre ya que sus desarrolladores son comunidades de colaboradores que establecen parámetros para los lanzamientos de las versiones. Entonces ocurre que el entusiasmo de todos los interesados produzcan versiones con grandes omisiones, por ejemplo faltantes de paginas man o info e incluso con bugs o errores conocidos pendientes de solución. No es mi intención juzgar a las versiones inmaduras de software, ya que muchas veces derivan al poco tiempo en grandes genialidades. Es solo un comentario introductorio para los que están acostumbrados al uso de aplicaciones comerciales.

Para entrar en contexto les indico las versiones de la base principal del escritorio peronista:

Es decir que es un entorno de escritorio con componentes de vanguardia, pero no quiere decir que se cumplan todos los requisitos para ser un escritorio completo según las normas de freedesktop.org. Dichas normas son muy importantes para crear un sistema operativo genérico que ser utilizado por usuarios finales, pero no es nuestro caso.

En este caso, me di cuenta que no es lo mismo un escritorio de desarrollo de software, que otro orientado a la producción de documentos. Para publicar explicaciones como esta, es muy difícil hacerlo sin la entrañable Ñ. Uno se las puede arreglar sin acentos porque el corrector ortográfico de Firefox los detecta y es posible indicar la opción correcta con el menú contextual. Pero en el caso de las ñalabras, es a veces imposible que el corrector vincule a “niandu” con ñandú, entonces lo único es copiar y pegar. Salvo que nos pongamos a trabajar en una solución.

Aislando el problema: ¿teclado, Wayland, Sway o WayVNC?

Nos proponemos dar una solución a la configuración regional del entorno de escritorio peronista, pero ¿como interactúa el teclado desde el cliente vnc hasta las aplicaciones wayland? El diagrama en bloques de la figura 1 nos aclara que mediante la red tcp el protocolo vnc le transfiere indirectamente a Sway por cualquier evento del teclado, porque WayVNC responde según su configuración.

Figura 1: Diagrama en bloques de una conexión remota utilizando el protocolo vnc, se observa la secuencia de respuestas ante los eventos generados por el cliente.

Entonces, seria posible realizar un cambio de configuración del teclado detectado automáticamente por WayVNC. El problema es que los cambios de configuración de este servicio, se leen al recargarse en la memoria Ram.

Recordemos de la entrada anterior que WayVNC esta configurado como un servicio de usuario peronista y que es una ventaja para reiniciar este servicio en caso de incidencias re red, o detenciones imprevistas de WayVNC porque ocurren “memory leaks” que, seguramente estan pendientes de ser solucionados por los desarrolladores.

Podríamos seguir con la misma linea de pensamiento y establecer unas configuraciones ingeniosas para poder salvar la autodeteccion del layout del teclado de sesgadas opciones. Por lo tanto si queremos que el teclado en WayVNC sea detectado según nuestras necesidades, sera necesario que el cliente vnc envíe de alguna codificación de señal que indique cual es el layout actualmente seteado en el teclado del cliente. Sera una cuestión la implementación de la señal del lado del cliente vnc porque esta fuera de nuestro alcance modificar el código de RealVNC, TigerVNC y otros clientes vnc de código cerrado. Seria mucho mas conveniente que del lado del servidor reconozca tabulando los dispositivos con sus correspondientes layout de cada uno, es una estrategia mas complicada pero se mantiene la estandarización del protocolo. Dicha estrategia llamaremos “kblay_cli_detector”.

Proceso de depuración del teclado WayVNC en wmenu

Comenzamos con el requisito previo de la configuración regional del sistema operativo esta completa. La implementación de kblay_cli_detector es realizable de manera modular ya que es posible identificar etapas que se secuenciaran para lograr los resultados.

  1. Detección de errores de procesamiento del teclado
  2. Identificar el dispositivo del cliente
  3. Obtención del correcto layout
  4. Modificación de la configuración de WayVNC
  5. Reinicio de WayVNC sin que se cierren los demás procesos, aunque el cliente vnc se cierra.
  6. El usuario debe volver a conectarse al server con el cliente vnc

Esta secuencia se ira perfeccionando, el sistema se puede implementar de una manera básica desarrollando las secuencias 4,5 y 6 si obtenemos el correcto layout mediante un widget. Ya veremos mas adelante los detalles del widget y la secuencia 3.

Lo mas importante es implementar el cambio de configuración de WayVNC con un solo comando para que pueda ser activado con la respuesta de un evento. Por lo tanto ese comando sera un script bash con la capacidad de edición de los archivos de configuración de WayVNC “/usr/lib/systemd/user/wayvnc.service” y “$HOME/.config/wayvnc/config” y lo llamaremos “_kblay_wayvnc_toggle”. No hay inconvenientes en editar archivos dentro de “$HOME/.config/” porque son del espacio del usuario, pero no es conveniente editar archivos fuera de “$HOME” porque son originales de los repositorios oficiales.

La siguiente exposición ingeniosa presenta una solución a la secuencia 4, 5 y 6 y ademas proveerá un acceso al widget predeterminado de Sway, el minimalista y elegantemente eficaz Wmenu.

Ingenio 1: WayVNC al servicio de usuario peronista

Otro drop-in es la solución con la ventaja que sobrescribe al servicio de usuario wayvnc, entonce es posible crearlo dentro del ambiente de usuario:

  • ##Comando para crear el directorio drop-in
  • [peronista@vps-4099842-x:~]$ mkdir -p .config/systemd/user/wayvnc.service.d/
  • ##Crea el archivo bash
  • [peronista@vps-4099842-x:~]$ nano .config/systemd/user/wayvnc.service.d/override.conf

Este drop-in sobrescribe ExecStart y le agrega el parámetro -k es porque le indica a WayVNC que el keyboard layout, pero ademas, dentro del espacio de usuario. En este punto, si reiniciamos el servicio de usuario wayvnc ya funciona la tecla ñ, pero en todos los dispositivos clientes. Si necesitamos reactivar el layout en ingles debemos continuar.

Ingenio 2: El famoso script “_kblay_wayvnc_toggle”

Dicho script es un mediador de la gestión del teclado detectado por WayVNC, entonces con un solo llamado a ejecución es posible cambiar el layout detectado. En el siguiente diagrama en bloque se describe como el cliente vnc que accede al server, interactúa con WayVNC y este servicio interpreta los eventos del teclado enviados por el protocolo según la configuración guardada. Dicha configuración puede ser editada en cualquier momento por _kblay_wayvnc_toggle y reinicia la conexión desconectando al cliente volviendo a aceptar el nuevo ingreso inmediatamente.

Figura 2: Esquema de la respuesta del script, edita la configuración de WayVNC y luego reinicia el servicio

Se implementa el script que interactúa con el drop-in del usuario peronista del apartado anterior. Funciona cuando se solicita, lee y filtra el valor del parámetro -k de la linea Exec de overrite.conf. Luego la lógica genera el nuevo valor del parámetro -k y guarda los cambios. Por ultimo reinicia el servicio de usuario wayvnc.service para aplicar los cambios.

Ingenio 3: Proceso de depuración del teclado WayVNC

El desarrollo de script es un bash que tiene la capacidad de interactuar con los archivos de usuario peronista, entonces lee y escribe el archivo “$HOME/.config/systemd/user/wayvnc.service.d/override.conf” y ademas genera un log de depuración escribiendo al archivo “$HOME/wayvnc_toggle_layout.log” El código 1 muestra la lógica de _kblay_wayvnc_toggle.

Código 1: Detalle del código fuente del script _kblay_wayvnc_toggle

Las dependencias del script son noify-tools y mako, completan la depuración del script en caso de fallas. Donde dice “notify-send” implementan notificaciones de escritorio para Wayland, se instalan y se configuran con este comando, solamente se solicitara el password tal cual se muestra en codigo 2.

Código 2: Instalación y configuración de las notificaciones de escritorio Mako en Archlinux.

Después es necesario reiniciar el sistema para recargar la configuración de Sway. Entonces ya es posible ejecutar el comando y que se reinicie WayVNC. En la figura 4 se muestra que luego de .reiniciar la conexión aparece la notificación mako del cambio de layout del teclado. En esta version del script cada vez que se ejecuta alterna es a us y así sucesivamente.

Figura 3: El antes y el después de la ejecución del script _kblay_wayvnc_toggle. Observar que se mantiene el trabajo previo al reinicio de WayVNC

Ingenio 4: Incluyendo accesos al widget predeterminado de Sway

El comando de l usuario peronista quedara integrado a Sway mediante el widget minimalista de escritorio Wmenu. Al ser un descendiente directo de Dmenu del escritorio I3, se accede con la combinación de teclas command-d o win-d, y aparece la barra de menu con la entrada de texto para filtrar las aplicaciones a medida que se escribe.

Código 2: Instalación y configuración de las notificaciones de escritorio Mako en Archlinux.

Es opcional crear un archivo para otros lanzadores de aplicaciones, pero le da un toque de profesionalismo. Para crear dicho archivo lanzador, se crea el archivo ~/.local/share/applications/wayvnc-toggle.desktop y se escribe el contenido mostrado en codigo 3.

Código 3: Contenido de wayvnc-toggle.desktop.

Genial, ahora lo úrico que queda es hacer la prueba si Wmenu de Sway detecta a enlace simbólico “kblay_wayvnc_toggle”, es muy simple: accedemos a la barra de Wmenu con la combinación de teclas command-d o win-d, luego en el lado izquierdo del widget, se comienza a escribir el comando deseado. Cuando aparece en las opciones de la derecha de la barra, se oprime return o enter y listo. En la figura 4, se muestra la secuencia de imágenes de Wmenu detectando a kblay_wayvnc_toggle,

Figura 4: Wmenu detecta el comando mediante el enlace simbólico. Alcanza con las letras kbl

Conclusión: El Triunfo de la Persistencia y el Análisis

Este viaje de depuración, marcado por la terquedad para no aceptar un “no” por respuesta y el capricho por una solución completa, nos ha enseñado valiosas lecciones sobre la personalización en entornos de software libre como Sway en Wayland. Lo que inicialmente parecía un simple problema de un script “invisible” en wmenu, se descompuso en una serie de desafíos interconectados, cada uno revelando una capa más profunda del ecosistema Linux.

Aprendimos la vital importancia de la variable de entorno $PATH y cómo su correcta configuración (especialmente a través de systemd --user/environment.d) es fundamental para que los procesos de nuestra sesión Wayland hereden el entorno esperado. Descubrimos que, aunque los archivos .desktop son esenciales para la integración visual de aplicaciones, a veces no son suficientes cuando un lanzador como wmenu tiene particularidades en su mecanismo de detección.

Finalmente, la solución más elegante y efectiva para este caso específico fue tan sencilla como crear un enlace simbólico de nuestro script en una ruta estándar del sistema (/usr/local/bin). Esta pequeña acción “normalizó” nuestro script ante los ojos de wmenu, permitiendo que fuera detectado y lanzado sin problemas.

El resultado es un escritorio Sway no solo a la vanguardia tecnológica, sino también perfectamente adaptado a nuestras necesidades de producción, donde la querida “ñ” ya no es una dificultad, sino una pulsación de tecla fluida. Este caso es un claro ejemplo de cómo la perseverancia y un enfoque metódico de depuración pueden transformar una frustración en una característica potente y personalizada, adaptando el hardware estandarizado a nuestro favor y demostrando el verdadero poder del software libre.

Referencias:

No Responses

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *