Netflix y Youtube en ventanas sin bordes en Ubuntu

Este post muestra dos scripts en lua para establecer un tamaño específico y deshacernos de las decoraciones de ventana cuando vemos youtube o netflix en chrome. Adicionalmente agregaré las configuraciones que uso para mi terminal.

Para ello usaremos Devilspie2. Devilspie2 es una herramienta de scripting que permite manipular ventanas, cambiando el tamaño, la posición y la decoración por medio de scripts en Lua.

Instalación

Instalar Devilspie en Ubuntu es muy sencillo, ya sea usando el gestor de paquetes o por medio de una terminal. En este último caso hay que ejecutar el siguiente comando:

sudo apt-get install devilspie2

Crear los script lua

Devilspie2 funciona por medio de lua scripts. Se puede encontrar una lista completa de los comandos disponibles en su página de documentación. En este caso sólo usaremos 4 de ellos.

Primero, para la ventana de Netflix, crearemos un script llamado netflix.lua en la carpeta .config/devilspie2/, el contenido del script es el siguiente:

if (get_window_name()=="Netflix") then
    undecorate_window();
    -- x position, y position, x width, y width
    set_window_geometry(1200, 0, 725, 428);
    -- show netflix on every desktop
    pin_window();
end

La última opción, pin_window(), no funciona correctamente en Unity, pero funciona perfectamente con Pantheon, KDE o Gnome. Si ahora iniciamos devilspie2 y luego abrimos netflix en el navegador no funcionará, porque el sitio tiene que cargar antes de establecer el título de la ventana, sin embargo el script lee el nombre inmediatamente al abrir la aplicación. Solucionaremos eso en la siguiente sección.

En el caso de YouTube este es mi archivo youtube.lua, de nuevo está guardado en .config/devilspie2/:

if (get_window_name()=="YouTube") then
    undecorate_window();
    -- width, height
    set_window_size(866, 544);
    -- show youtube on every desktop
    pin_window();
end

En este caso en vez de definir completamente la geometría de la ventana sólo ajusté el tamaño de la misma. De nuevo, un poco de trabajo extra es necesario para que funcione.

Iniciar Netflix y YouTube desde Chrome

Para abrir Netflix escribí el siguiente archivo para shell y lo llamé netlfix, lo guardé en mi carpeta bin/ y le dí permisos de ejecución.

#!/bin/bash

google-chrome --app=https://www.netflix.com

ps cax | grep "devilspie2" > /dev/null
if [ $? -eq 0 ]; then
    killall "devilspie2"
fi

sleep 6s
$(devilspie2)

El script abre Netflix en app mode y verifica que devilspie2 esté corriendo. Si está activo mata el proceso, espera 6 segundos para darle tiempo a que sitio cargue correctamente, luego lo vuelve a iniciar.

De igual manera, este es mi archivo youtube para abrir YouTube:

#!/bin/bash

google-chrome --app=https://www.youtube.com

ps cax | grep "devilspie2" > /dev/null
if [ $? -eq 0 ]; then
    killall "devilspie2"
fi

sleep 6s
$(devilspie2)

Para hacer más facil el abrir las aplicaciones se puede crear un lanzador en el Unity desktop launcher. Así se ven ambas ventanas abiertas en mi computadora:

../../../_images/desktop.jpg

Script Lua para la terminal

Para la terminal sólo cambio la geometría de tal suerte que usa todo el espacio vertical y es suficientemente ancha para alojar 80 caracteres, lo que me ayuda al editar documentos en vim. Mi archivo terminal.lua contiene lo siguiente:

if (get_application_name()=="Terminal") then
    set_window_size(768, 1056);
end