Làm thế nào tôi có thể thực hiện các lệnh khi khởi động trong tuyệt vời?


10

Tôi muốn thực thi một số lệnh sau khi đăng nhập nếu awesome-windowmanager bắt đầu. Làm cách nào để thêm lệnh khởi động vào awesome-config?

Câu trả lời:


9

Theo wiki ArchLinux này, bạn chỉ cần thêm các mục sau vào 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 cũng cho thấy một vài cách khác để đạt được hiệu quả tương tự.


5
Điều gì xảy ra khi bạn tải lại tuyệt vời? Autorun được đặt thành false sau này trong cấu hình?
lkraav

@ Quan điểm của Ikraav rất quan trọng.
Geoff

bạn thực sự không thể phát hiện ra điều này, ngay cả khi lạm dụng bảng toàn cầu như nó được thực hiện một cách tình cờ trong ví dụ trên. tải lại tuyệt vời lau lua vm. làm một cái gì đó như chạy "pgrep firefox || firefox" chẳng hạn.
nonchip

hoặc thực sự làm điều đó như wiki gợi ý, vì dường như nó đã được sửa (và mã bị hỏng ở trên đã bị xóa)
nonchip

8

Tôi đang đi với dex , cho đến nay.

$ 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

Chúng ta cũng có một số mục tự khởi động:

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

Ví dụ mục tự khởi động:

$ 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

Các wiki tạo ảnh vui nhộn cho thấy cách này sẽ làm việc khi tải lại ảnh vui nhộn.

Đặt cái này trong 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

Sử dụng theo cách này:

local r = require("runonce")

r.run("urxvtd -q -o -f")
r.run("urxvtc")
r.run("urxvtc")
r.run("wmname LG3D")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.