Eliminar elementos del listado de ventanas en Cinnamon

Me permití un caprichillo en el Black Friday de este año, un monitor de 10 pulgadas que básicamente voy a usar para las ventanas de Developer Tools de Chrome.

Cuando me llegó estuve un rato probándolo y me di cuenta de que como normalmente tengo varias de esas ventanas abiertas se me iba a llenar el panel inferior (donde tengo la lista de ventanas) de botones para esas ventanas. Me acordé de que Cinnamon está escrito en JS así que investigué un poco a ver si podía evitarlo, y efectivamente se puede.

Lo que hay que hacer es editar el fichero /usr/share/cinnamon/applets/window-list@cinnamon.org/applet.js, y añadir este código en la línea 1063 (después de la línea let appButton = new AppMenuButton(this, metaWindow, alert);):

if (appButton._label.text.indexOf("Developer Tools") > -1)
 return;

De esta forma evitamos que se incluyan en la lista de ventanas los botones correspondientes a las ventanas de las Developer Tools. Por supuesto funciona cambiando el texto por cualquier otro si queremos esconder alguna otra ventana de la lista.

Algo que me vino muy bien es tener abierta una ventana de consola con este comando:

tail -f ~/.cinnamon/glass.log

que nos permite ver el log de Cinnamon y escribir en él desde JS con la función global.log(). Para recargar el applet de la lista de ventanas ejecutamos el siguiente comando:

dbus-send --session --dest=org.Cinnamon.LookingGlass --type=method_call /org/Cinnamon/LookingGlass org.Cinnamon.LookingGlass.ReloadExtension string:'window-list@cinnamon.org' string:'APPLET'

Al final después de conseguirlo me di cuenta de que no me hacía falta todo esto. Basta con crear un nuevo panel en el segundo monitor y añadirle el applet de lista de ventanas, y los botones para las ventanas de ese monitor se muestran ahí, liberando la lista de ventanas del monitor principal.

Actualización 8/2/2018: para que las ventanas de Developer Tools se abran siempre en el nuevo monitor he instalado devilspie, un programa que nos permite definir reglas para ejecutar acciones sobre las ventanas que se vayan creando. Con este programa puedo hacer que estas ventanas (y las de la terminal, por ejemplo) se abran siempre en el monitor auxiliar, pero además este programa permite que esas ventanas no aparezcan en la lista de tareas, lo cual es justo lo que quería hacer al principio. ¡Hurra!

Copio aquí la regla, hay que tener en cuenta que el monitor auxiliar lo tengo a la izquierda del principal, por lo que sus coordenadas empiezan en 0,0.

; Regla para Chrome Developer Tools, skip_tasklist es lo que hace que no salga en la lista de ventanas
( if 
( begin 
( contains ( application_name ) "chrome-devtools" )
) 
( begin 
( skip_tasklist )
( geometry "600x800+0+0" )
( maximize )
)
)