시작시에 명령을 실행하려면 어떻게해야합니까?


10

awesome-windowmanager가 시작되면 로그인 후에 몇 가지 명령을 실행하고 싶습니다. awesome-config에 시작 명령을 어떻게 추가 할 수 있습니까?

답변:


9

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

wiki는 동일한 효과를 얻기위한 몇 가지 다른 방법을 보여줍니다.


5
당신이 굉장히 다시로드하면 어떻게됩니까? config에서 autorun을 false로 설정 했습니까?
lkraav 2011 년

@ Ikraav의 요점은 중요합니다.
Geoff

위의 예제에서 실수로 완료된 것처럼 전역 테이블을 남용하는 경우에도 실제로이를 감지 할 수 없습니다. 굉장한 재 장전은 루아 vm을 지 웁니다. 대신에 "pgrep firefox || firefox"를 실행하는 것과 같은 일을하십시오.
칩 없음

또는 실제로 위키가 암시하는 것처럼 수정합니다 (위의 코드가 제거 된 것)
nonchip 03/20

8

나는 지금까지 덱스 와 함께 갈 것입니다 .

$ 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

굉장 위키는 제안 굉장 다시로드 할 때 작동이 방법을.

이것을 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")
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.