Как я могу выполнить команды при запуске в Awesome?

11682
Mnementh

Я хочу выполнить некоторые команды после входа в систему, если запускается awesome-windowmanager. Как добавить команды запуска в awesome-config?

10

3 ответа на вопрос

9
heavyd

В соответствии с этой вики ArchLinux вам просто нужно добавить следующее 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 

В вики также показано несколько других способов достижения того же эффекта.

Что происходит, когда вы перезагружаете Awesome? Установлен ли автозапуск на false позже в конфиге? lkraav 12 лет назад 5
@ Икраав важен. Geoff 12 лет назад 0
Вы не можете обнаружить это, даже когда злоупотребляете таблицей глобальных переменных, как это было сделано случайно в примере выше. офигенно перезагрузка вытирает lua vm. вместо этого сделайте что-то вроде запуска «pgrep firefox || firefox». nonchip 6 лет назад 0
или на самом деле сделать это так, как подсказывает вики, так как кажется, что это было исправлено (а сломанный код выше удален) nonchip 6 лет назад 0
8
lkraav

Я пока еду с Дексом .

$ 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 

Давайте тогда тоже получим несколько элементов автозапуска:

$ ls -1 ~/.config/autostart/ gol.desktop KeePass 2.desktop skype-skype.desktop tomboy.desktop wpa_gui-wpa_supplicant.desktop xterm-logs.desktop 

Пример элемента автозапуска:

$ 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 
4
Anko

Удивительная вика предлагает этот путь, который будет работать при перегрузке Потрясающий.

Поместите это в runonce.lua

-- @author Peter J. Kranz (Absurd-Mind, peter@myref.net) -- 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 

Используйте это так:

local r = require("runonce")  r.run("urxvtd -q -o -f") r.run("urxvtc") r.run("urxvtc") r.run("wmname LG3D")