
Quiero ejecutar algunos comandos después de iniciar sesión si se inicia awesome-windowmanager. ¿Cómo puedo agregar comandos de inicio a awesome-config?
Respuesta1
De acuerdo a estowiki de ArchLinuxsolo debería necesitar agregar lo siguiente a su rc.lua
:
-- Autorun programs
autorun = true
autorunApps =
{
"swiftfox",
"mutt",
"consonance",
"linux-fetion",
"weechat-curses",
}
if autorun then
for app = 1, #autorunApps do
awful.util.spawn(autorunApps[app])
end
end
La wiki también muestra un par de formas más de lograr el mismo efecto.
Respuesta2
voy condex, hasta ahora.
$ cat /etc/X11/Sessions/awesome
#!/bin/sh
# Awesome Xsession starter, based on Xsession shipped by x11-apps/xinit-1.0.5-r1
...
zenity --title "Autostart" --timeout=30 --question --text="Launch autostart items?" && dex -a
exec ck-launch-session /usr/bin/awesome
Entonces tengamos también algunos elementos de inicio automático:
$ ls -1 ~/.config/autostart/
gol.desktop
KeePass 2.desktop
skype-skype.desktop
tomboy.desktop
wpa_gui-wpa_supplicant.desktop
xterm-logs.desktop
Ejemplo de elemento de inicio automático:
$ cat ~/.config/autostart/gol.desktop
[Desktop Entry]
Type=Application
Terminal=false
Name=Growl For Linux
Comment=Growl Desktop Notification System For Linux
Categories=GNOME;GTK;Utility;
Exec=/usr/bin/gol
Icon=/usr/share/growl-for-linux/data/icon.png
X-GNOME-Autostart-enabled=true
X-KDE-autostart-after=panel
X-Desktop-File-Install-Version=0.18
Respuesta3
ElImpresionante wiki sugierede esta manera funcionará al recargar Awesome.
Pon esto en runonce.lua
-- @author Peter J. Kranz (Absurd-Mind, [email protected])
-- Any questions, criticism or praise just drop me an email
local M = {}
-- get the current Pid of awesome
local function getCurrentPid()
-- get awesome pid from pgrep
local fpid = io.popen("pgrep -u " .. os.getenv("USER") .. " -o awesome")
local pid = fpid:read("*n")
fpid:close()
-- sanity check
if pid == nil then
return -1
end
return pid
end
local function getOldPid(filename)
-- open file
local pidFile = io.open(filename)
if pidFile == nil then
return -1
end
-- read number
local pid = pidFile:read("*n")
pidFile:close()
-- sanity check
if pid <= 0 then
return -1
end
return pid;
end
local function writePid(filename, pid)
local pidFile = io.open(filename, "w+")
pidFile:write(pid)
pidFile:close()
end
local function shallExecute(oldPid, newPid)
-- simple check if equivalent
if oldPid == newPid then
return false
end
return true
end
local function getPidFile()
local host = io.lines("/proc/sys/kernel/hostname")()
return awful.util.getdir("cache") .. "/awesome." .. host .. ".pid"
end
-- run Once per real awesome start (config reload works)
-- does not cover "pkill awesome && awesome"
function M.run(shellCommand)
-- check and Execute
if shallExecute(M.oldPid, M.currentPid) then
awful.util.spawn_with_shell(shellCommand)
end
end
M.pidFile = getPidFile()
M.oldPid = getOldPid(M.pidFile)
M.currentPid = getCurrentPid()
writePid(M.pidFile, M.currentPid)
return M
Úselo de esta manera:
local r = require("runonce")
r.run("urxvtd -q -o -f")
r.run("urxvtc")
r.run("urxvtc")
r.run("wmname LG3D")
Respuesta4
Enfoque ArchWiki
Para los usuarios más nuevos, en ArchWiki pueden encontrar que necesitan:
- crear
~/.config/awesome/autorun.sh
y agregar
#!/usr/bin/env bash
function run {
if ! pgrep -f $1 ;
then
$@&
fi
}
run
verifica con el proceso grep (para que no vuelva a ejecutar el proceso) y coloca los contenedores directamente en segundo plano.
En el, ~/.config/awesome.rc.lua
dígale que genere ese archivo con el shell (bash o lo que haya configurado). Lo haces así (última línea del archivo):
awful.spawn.with_shell("~/.config/awesome/autorun.sh")
Enfoque más simple
Ahora bien, para mí, con muchos argumentos, el pgrep fue un poco exigente. Así que escribí un script más simple, al menos bueno para mi uso. Este es mi autorun.sh
:
#!/usr/bin/env bash
feh --bg-scale $(ls ${HOME}/wallpaper/*.png|shuf -n1) &
nm-applet &