578 - Pequeños cambios en mi escritorio Linux

578 - Pequeños cambios en mi escritorio Linux

un selector de #emoji para #linux y #sway y como mostrar las teclas que pulsas en pantalla para utilizarlo en tus vídeos de #youtube

1:25
-3:15

Parece una tontería, pero cada día hago mas uso de los emojis. Me parece una forma muy práctica de darle mas significado a una frase. Quizá se trate de darle contexto. En muchas, muchas, muchas ocasiones, tu interlocutor no sabes si intentas bromear o te quieres burlar de él. En estas ocasiones, añadir un emoji con una sonrisa o un simple jajajaja viene fantástico. Esto es algo que cada vez utilizo con mas frecuencia, y que últimamente siempre procuro tener lo mas a mano posible. Así, en Sway estaba buscando una forma de facilitarme la vida con esto, y finalmente el resultado me ha traído algunas cuestiones la mar de interesantes y que te voy a contar en este episodio del podcast sobre pequeños cambios en mi escritorio Linux.

Pequeños cambios en mi escritorio Linux

Algunas observaciones

Antes de nada, quiero resaltar las ventajas de utilizar entornos de escritorio tipo tiling window manager frente a los tradicionales, en tanto en cuanto te permiten adaptar el escritorio a tu flujo de trabajo. Esto también es posible hacerlo, con casi cualquiera de los entornos de escritorios que se encuentran en el ecosistema Linux, pero no tanto en Windows o MacOS. De ahí, mi defensa a ultranza de este tipo de entornos de escritorio.

Otra de las cuestiones que quería resaltar de la ventaja de los tiling window manager es que si los personalizas tu mismo, te pueden ser de utilidad para aprender Bash o incluso el lenguaje de programación en el que esté hecho el entorno de escritorio que estés utilizando.

Al fin y al cabo, es posible modificar el comportamiento de tu tiling window manager utilizando el scripting de forma sencilla. Por ejemplo, que se muestre un cuadro de diálogo en el centro de la pantalla al utilizar un atajo de teclado u operaciones similares.

Sobre los emojis

Como te decía en la introducción, cada día utilizo mas los emoji. La posibilidad de dar contexto a un simple frase mediante un emoji me parece realmente potente, y es una de las razones por las que lo esté integrando en mayor medida en mi flujo de trabajo.

Hasta la fecha he utilizado rofimoji un selector de emoji que funciona en combinación con rofi. Sin embargo, me quedaba conseguir una mejor integración con mi entorno de escritorio, con SwayFX. Y esto es simplemente por los atajos de teclado, y por la opción de mostrarlo en la pantalla adecuada.

El atajo de teclado

Así, quería utilizar el atajo deteclado Super + punto, para hacerlo consistente con mi flujo de trabajo, y sin embargo, no sabía como describir el punto. Para esto estuve probando distintas herramientas hasta que caí en xmodmap. En particular lo que utilicé fue,

xmodmap -pke | grep -i period

Y finalmente el atajo de teclado que he utilizado en la configuración de Sway, es el siguiente,

bindsym $mod+period exec --no-startup-id bash /home/lorenzo/.config/sway/scripts/rofimoji.sh

Simplemente $mod+period, donde $mod se corresponde con Mod4 en la configuración de Sway.

Matar Rofjimoji

Algo que me molesta de rofi y rofimoji es que si tienes una instancia de una de estas aplicaciones e intentas iniciar una segunda instancia esta se vuelve inaccesible. De esta manera, para evitar este problema, decidí matar la instancia existente en caso de existiera y lanzar una nueva instancia. Esto lo puedes hacer fácilmente utilizando,

ROFIPID=$(pgrep rofimoji)
if [[ -n $ROFIPID ]];then
    kill "$ROFIPID"
fi

Seleccionar la pantalla

La siguiente cuestión fue seleccionar la pantalla. Actualmente estoy utilizando dos monitores. Esta es probablemente una de las mejores decisiones que he podido tomar. Esto de tener un monitor de trabajo y otro de consulta, es una verdadera ventaja.

La cuestión es que a rofi es necesario indicarlo en que monitor queremos que aparezca, y para ello, lo mejor es indicarle el mismo monitor en el que tenemos el ratón. Esto, es tan sencillo como utilizar swaymsg de la siguiente forma,

MON_NAME=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused==true) | .name')
if [[ "${MON_NAME}" == "DP-1" ]]
then
    MONITOR=0
else
    MONITOR=1
fi

Con esto puedes determinar cual es la ventana que se está utilizando y en base a eso indicar donde tiene que mostrarse rofi o rofimoji. En este caso lo puedes hacer de la siguiente forma,

rofimoji --selector-args "-monitor ${MONITOR}" \
    --action copy \
    --clipboarder wl-copy \
    --skin-tone neutral

Aquí indico por un lado en que monitor quiero que se muestre, así como otras configuraciones particulares de rofimoji como son,

  • la acción por defecto, que en mi caso he seleccionado la copia
  • la herramienta de portapapeles a utilizar
  • el tono de piel a utilizar con rofimoji.

wshowkeys

Buscando como determinar que atajo de teclado tenía que utilizar encontré esta segunda herramienta que lo cierto echaba de menos en Sway. Se trata de una herramienta que permite mostrar en pantalla las teclas que vamos pulsando. Esta herramienta es algo que solía utilizar cuando estaba en X11 para los vídeos de YouTube, pero que con el paso a Wayland perdí.

wshowkeys, es una herramienta que muestra las teclas que vas pulsando en tu teclado en compositores soportados por Wayland. Se trata de una herramienta tremendamente sencilla y sin muchas complicaciones con el siguiente uso,

wshowkeys [-b|-f|-s #RRGGBB[AA]] [-F font] [-t timeout]
    [-a top|left|right|bottom] [-m margin] [-o output]

Con las siguientes opciones,

  • -b #RRGGBB[AA]: establece el color de fond
  • -f #RRGGBB[AA]: establece el color del texto
  • -s #RRGGBB[AA]: define el color para las teclas especiales
  • -F font: te permite definir el formato de la tipografía, por ejemplo, monospace 24
  • -t timeout: esta opción establece el tiempo en borrar el texto.
  • -a top|left|right|bottom: te permite indicar donde debe aparecer, y puedes repetir la opción, por ejemplo para que aparezca abajo a la izquierda.
  • -m margin: establece el margen en pixel al borde mas proximo.

Aquí, al igual que en el caso anterior, estoy peleando para definir un script que me permita poner en funcionamiento wshowkeys y pararlo, pero todavía no lo tengo completamente resuelto.

En este caso lo que quiero es utilizar el mismo atajo de teclado para activarlo como para desactivarlo. De esta manera mi script es algo similar a esto,

WSHOWKEYS=$(pgrep wshowkeys)
if [[ -n $WSHOWKEYS ]];then
    for i in $WSHOWKEYS ; do
        kill "$i"
    done
else
    wshowkeys -a bottom
fi

Capturar la pantalla

Y por último, y para completar las herramientas que estoy utilizando actualmente, hablarte sobre grim, slurp y wl-copy.

  • grim es una herramienta que te permite capturar la pantalla en entornos que utilicen Wayland, como puede ser Sway. Esta herramienta te permite capturar todos los monitores o un monitor concreto. Y por supuesto, también te permite definir una región concreta.
  • slurp es una segunda herramienta que puedes utilizar en combinación con grim, y que te permite definir de forma dinámica la región que quieres capturar. Esto es tan sencillo como hacerlo de la siguiente forma en el caso de seleccionar Print como atajo de teclado,
bindsym Print exec grim -g "$(slurp)" "$(xdg-user-dir PICTURES)/$(date +%Y-%m-%dT%H-%M-%S).jpg"

Además lo he combinado con xdg-user-dir que te permite definir un determinado directorio en tu equipo.

Deja una respuesta

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