InicioLinuxwmutils: utilidades de manipulación de ventanas

wmutils: utilidades de manipulación de ventanas

Linux1/8/2016
Hola gente de T! aunque estoy en desacuerdo con el nombre de ésta categoría, ya que debería ser UNIX y no solo GNU/Linux porque no todos usamos Linux y wmutils puede ser usado en Linux, variantes BSD, OS X, e incluso en cygwin (Windows); básicamente, en cualquier sistema que soporte Xorg. Quería compartirles éste gran pack de utilidades que, de acuerdo a los creadores, se debe considerarse como coreutils (mv, ls, rm, etc.) ya que no es un manejador de ventanas, sino que son utilidades para manipular las ventanas. Lo mismo sería con coreutils, que no sería un manejador de archivos sino utilidades para manipular archivos. Éste post se enfoca más en presentar wmutils, no como un manual de cómo usarlo.

wmutils consta de 3 repositorios que pueden encontrarse en github: https://github.com/wmutils . Por ahora, solo nos concentraremos en el repositorio core, para instalarlo, ve a una terminal y escribe los siguientes comandos:


git clone https://github.com/wmutils/core && cd core
make
sudo make install



Si quieres instalar los manuales (recomendado):


cd man
sudo make



La única dependencia es xcb.

Las utilidades son:

  • chwb - cambiar el borde
  • chwso - cambiar el orden stack (por encima o por debajo de otras ventanas)
  • ignw - ignorar o dejar de ignorar
  • killw - cerrar ventanas (de una manera muy brusca)
  • lsw - listar ventanas
  • mapw - volver ventanas visibles o invisibles
  • pfw - imprimir el id de la ventana enfocada
  • wattr - mostrar atributos
  • wmp - mover el puntero del mouse
  • wmv - mover una ventana
  • wrs - cambiar el tamaño de una ventana
  • wtf - enfocar una ventana
  • wtp - teletransportar una ventana, ésta se diferencia de wmv porque wmv no puede pasarse de los límites de la pantalla, wtp sí.

Cabe notar que los creadores de éste set de utilidades lo mantienen lo más mínimo y simple posible, por lo que no soporta EWMH .

Ahora sí, ya con wmutils/core instalado, vamos a una terminal ¡y que empiece el juego!

lsw

Ésta utilidad como ya dije, lista las ventanas, pero las ventanas visibles solamente, por ejemplo, la salida que me muestra a mí en éste momento es:


0x00a00009
0x00600009
0x01400009
0x01200009



Y así, tipeando en una terminal las utilidades y viendo los manuales vas experimentando.

Vamos a dejarnos de estupideces y vamos a algo un poco más util.

Supongamos que quiero un script que mueva una ventana a las esquinas de la pantalla, que la centre horizontalmente, verticalmente o que la coloque justo en el centro de la pantalla. Aquí les va un script propio que hice para ésta necesidad.


#!/bin/sh
# feute (c) 2016
# move window to the given position

gap=${gap:-30}

usage() {
cat << end

usage: wmvto.sh (tl|tr|bl|br|cx|cy|ct) wid
    tr: top right
    tl: top left
    br: bottom right
    bl: bottom left
    cx: center in x coord
    cy: center in y coord
    ct: center in x and y

end
}

test -z $1 && usage
test -z $2 && usage

rt=$(lsw -r)
rw=$(wattr w $rt)
rh=$(wattr h $rt)

w=$(wattr w $2)
h=$(wattr h $2)
b=$(wattr b $2)
case $1 in
    tl) wtp $gap $gap $w $h $2 ;;
    tr) wtp $((rw-w-gap)) $gap $w $h $2 ;;
    bl) wtp $gap $((rh-h-gap)) $w $h $2 ;;
    br) wtp $((rw-w-gap)) $((rh-h-gap)) $w $h $2 ;;
    cx) wtp $((rw/2 - w/2 - b)) $(wattr y `pfw`) $w $h $2 ;;
    cy) wtp $(wattr x `pfw`) $((rh/2 - h/2 - b)) $w $h $2 ;;
    ct) wtp $((rw/2 - w/2 - b)) $((rh/2 - h/2 - b)) $w $h $2 ;;
    *) usage ;;
esac



Guárdalo como wmvto.sh o cualquier nombre que quieras y no olvides colocarlo como ejecutable usando chmod +x wmvto.sh

Nota importante: una ventana no es más que una id, ejemplo: 0x001a207b. Por lo que cuando se pide por una ventana, se pide la id de la misma.

Como ya vemos en el código, se empieza a usar wattr, usando el parámetro w, se obtiene el ancho en píxeles de la ventana $2 (que se refiere al segundo parámetro, que es la ventana). lsw -r se usa para obtener la id de la pantalla para luego obtener sus propiedades. wattr x `pfw` se usa para obtener la posición en x de el valor que retorna la utilidad pfw, o sea, posición en x de la ventana enfocada. gap es el espacio a dejar entre la ventana y la pantalla. wtp usa los argumentos x y w h wid, es decir, posición en x, y, ancho y alto y la ventana.

Para ver la magia, ve al directorio donde se encuentra wmvto.sh, y escribe:


./wmvto.sh tr $(pfw) # mover a la esquina de arriba y derecha
./wmvto.sh cy $(pfw) # centrar verticalmente


Se usa $(pfw) para obtener la ventana enfocada y pasarlo como argumento a wmvto.sh.

Está bien todo, pero, nadie va a querer ir a una terminal para mover una ventana y demás. Y muchas aplicaciones no constan de terminales. Así que, ¿para qué importarme si tengo que ir a una terminal para hacerlo? ¡Pues te equivocas! Puedes usar un hot key daemon para usar teclas para ejecutar aplicaciones, así, solo con apretar unas teclas, haces cosas con las ventanas. Personalmente uso sxhkd

Por ejemplo, una parte de mis configuraciones de teclas:



super se refiere a la tecla de windows


Y así, con algunas teclas puedo hacer lo que sea con la ventana enfocada, incluso con ventanas que no están enfocadas, en el repositorio contrib de wmutils ( https://github.com/wmutils/contrib ) se encuentran muy buenos ejemplos y útiles para quien sea, por ejemplo, hay un script para ordenar las ventanas (tile.sh) como i3, bspwm, dwm u otros manejadores de ventanas tiling. También hay otro que hace que el borde de la ventana enfocada cambie de color como un arcoíris (rainbow.sh). Y así puedes crear scripts de acuerdo a tus necesidades para manipular las ventanas. Y recuerda, usar wmutils es más extensible que un manejador de ventanas en sí ya que "divide" un manejador de ventanas en varias utilidades. Repito, igual que coreutils, puedes hacer mucho más con unos simples ls, mv, rm, etc. que con thunar, pcmanfm, etc.

La falta de imágenes se debe a que wmutils se refiere más al flujo de trabajo, que no se puede mostrar en simples imágenes. Pero aquí les dejo un video hecho por uno de los creadores de wmutils:



Descargar usando curl o wget:



$ curl -s http://raw.z3bra.org/dev/random/monochromatic-0x0017-writeup.webm > wmutils.webm
ó
$ wget http://raw.z3bra.org/dev/random/monochromatic-0x0017-writeup.webm


Puedes abrirlo con tu reproductor de video mientras se descarga.

¡wmutils se puede usar incluso como tu manejador de ventanas! Bueno, en realidad, sin usar manejador de ventanas y solo usando wmutils para manipularlas. Pero eso va más allá de éste post, quizá lo deje para otro si les gusta wmutils. ¡Comenta lo que opinas!
Datos archivados del Taringa! original
10puntos
56visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

f
fellslow🇦🇷
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.