Auto-start aplicaciones en un screen/tag específicos con Awesome


Awesome es un gestor de ventanas extremadamente configurable, a decir verdad no creo que hay nada que no se pueda hacer ya que Awesome no se configura en base a opciones de configuración si no que se programan las funciones en el fichero de configuración, mediante este sistema el único límite es nuestra imaginación y nuestras habilidades como programador en Lua.

 

Editamos la configuración actual y añadimos al final justo antes de último -- }}}

vi .config/awesome/rc.lua
-- Kr0m autostart
local function autoStart(command, class, tag)
  --naughty.notify({ title = "autoStart", text = "Dentro autoStart", timeout = 0 })
  if tag ~= nil then
    --naughty.notify({ title = "autoStart", text = "Dentro != nil", timeout = 0 })
    local callback
    callback = function(c)
      if c.class == class then
        c:move_to_tag(tag)
        --naughty.notify({ title = "autoStart", text = "App moved: "..c.class, timeout = 0 })
        client.disconnect_signal("manage", callback)
        --naughty.notify({ title = "autoStart", text = "Signal disconnected: "..c.class, timeout = 0 })
      end
    end
    -- Cada vez que se cree un cliente ejecuta la funcion callback
    client.connect_signal("manage", callback)
  end
  -- Creamos un cliente nuevo
  awful.spawn(command)
end

autoStart("chrome", "Chromium-browser", awful.screen.focused().tags[1])
autoStart("telegram-desktop", "TelegramDesktop", awful.screen.focused().tags[2])
autoStart("sublime", "Sublime_text", awful.screen.focused().tags[2])
autoStart("barrier", "Barrier", awful.screen.focused().tags[9])

En resumen lo que hacemos es crear una función de callback que se ejecutará cada vez que se cree un client nuevo, cuando se ejecuta el callback se mueve el cliente al tag correspondiente y acto seguido se hace un disconnect de la función de callback para que posteriores clientes de esa misma clase no se vean afectados. Si no hiciesemos el disconnect, después del auto-start todos los Chromes que arrancásemos manualmente irían al tag 1, los Telegrams al tag2 .... se comportaría como una rule.

Los wm-classnames podemos sacarlos utilizando la herramienta xprop.

FreeBSD:

pkg install xprop

Gentoo:

emerge -av x11-apps/xprop

Según la documentación de la librería awful se puede indicar el tag donde lanzar la aplicación pero esta opción utiliza un protocolo llamado startup notification protocol y muy pocas aplicaciones lo implementan.

Si te ha gustado el artículo puedes invitarme a un redbull aquí.
Si tienes cualquier pregunta siempre puedes enviarme un Email o escribir en el grupo de Telegram de AlfaExploit.
Autor: kr0m -- 19/04/2020 12:08:05 -- Categoria: Scripting Multimedia