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
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 serSway
. 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 seleccionarPrint
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.