Автозапуск

From awesome
Jump to: navigation, search

В Awesome отсутствует встроенная поддержка автозапуска приложений. Чтобы настроить автозапуск, Вы можете отредактировать либо .xinitrc, либо сессионный скрипт, выполняемый gdm или kdm, или же найти какой-то другой способ запускать приложения вместе с Awesome.

Также можно создать функцию в ~/.config/awesome/rc.lua:

Простой способ

Просто добавьте несколько строк в конец файла ~/.config/awesome/rc.lua:

awful.util.spawn_with_shell("КОМАНДА1")
awful.util.spawn_with_shell("КОМАНДА2")

...и так далее.

Пример:

awful.util.spawn_with_shell("kdeinit")
awful.util.spawn_with_shell("lineakd")
awful.util.spawn_with_shell("anyremote -f ~/.anyRemote/amarok.cfg")
awful.util.spawn_with_shell("~/scripts/trm")
awful.util.spawn_with_shell("xchat")
awful.util.spawn_with_shell("psi")
awful.util.spawn_with_shell("firefox-bin")
awful.util.spawn_with_shell("gvim +Project")
awful.util.spawn_with_shell("kchmviewer")
awful.util.spawn_with_shell("amarok")
awful.util.spawn_with_shell("kmix")
awful.util.spawn_with_shell("kbluetoothd")
awful.util.spawn_with_shell("sudo killall mplayer")

Чтобы запускать приложения только один раз, а не при каждом перезапуске Awesome, создайте такой скрипт:

#! /bin/bash

# Запустить программу, если она ещё не запущена.

if [ ! "`ps -A | grep $1`" ]; then
  $@;
fi

Сохраните скрипт под именем "run_once" где-нибудь в $PATH и сделайте исполняемым. Затем используйте его для автозапуска:

awful.util.spawn_with_shell("run_once amarok")

В качестве альтернативы отдельному shell-скрипту можно добавить в rc.lua следующий код (который к тому же будет игнорировать приложения, запущенные другими пользователями):

function run_once(prg)
    if not prg then
        return
    end
    awful.util.spawn_with_shell("x=" .. prg .. "; pgrep -u $USERNAME -x " .. prg .. " || (" .. prg .. ")")
end

run_once("amarok")

Способ, использующий директорию автозапуска

-- Автозапуск
function autostart(dir)
    if not dir then
        do return nil end
    end
    local fd = io.popen("ls -1 -F " .. dir)
    if not fd then
        do return nil end
    end
    for file in fd:lines() do
        local c= string.sub(file,-1)   -- последний символ
        if c=='*' then  -- исполнямые файлы
            executable = string.sub( file, 1,-2 )
            print("Автозапуск Awesome: Запускается: " .. executable)
            awful.util.spawn_with_shell(dir .. "/" .. executable .. "") -- запуск в фоновом режиме
        elseif c=='@' then  -- символьные ссылки
            print("Автозапуск Awesome: Игнорируется символьная ссылка: " .. file)
        else
            print ("Автозапуск Awesome: Игнорируется неисполняемый файл " .. file)
        end
    end
    io.close(fd)
end

autostart_dir = os.getenv("HOME") .. "/.config/autostart"
autostart(autostart_dir)

Учтите (и по возможности исправьте) следующие недостатки:

  • файлы в директории автозапуска будут выполняться при каждом чтении конфигурационного файла, что может привести к неожиданным последствиям, если Вы делаете это несколько раз за сеанс. Чтобы избежать повторных запусков, обрабатывайте их в соответствующем скрипте.
  • функция игнорирует символьные ссылки.
Personal tools