LINUX.ORG.RU

выполнение команд при запуске awesome

 


0

1

прописал в rc.lua: os.execute(«guake &») // запускаем эмулятор терминала guake os.execute(«guake -r mc &») // переименовываем вкладку os.execute(«guake -e mc &») // выполняем команду mc в этой вкладке os.execute(«guake -t &») // скрываем окно терминала(сворачиваем в трей)

в итоге запускается сразу несколько копий guake, причем только в одном из них запущен mc и переименован таб. если же закоментировать последнюю строчку os.execute(«guake -t &»), то все прекрасно работает. аргумент -t заставляет программу свернуться в трей. если выполнить эту команду(guake -t) в ручную, то все работает как надо. как сделать так, чтобы при запуске guake был скрыт? можно сделать костыль: закрыть окно guake програмно(т.е. как будто нажато ctrl+shift+c) - программа скроется в трей. правда я не знаю как это сделать.

я поторопился с выводами. os.execute(«guake &»); os.execute(«guake -e mc &») эта последовательность команд работает адекватно. запускается эмулятор терминала, а в ней mc. если же после этих команд еще добавлять команды, то почему то появляются еще несколько процессов guake. странно.

ravinskiy
() автор топика
Ответ на: комментарий от ravinskiy

upd: бывает и по другому: может выполниться все три команды адекватно и никаких новых процессов не появится.

ravinskiy
() автор топика
Ответ на: комментарий от ravinskiy

указанную проблему не решил, но добился нужного мне поведения: последовательность команд os.execute(«guake &»); guake os.execute(«guake -r mc &»); os.execute(«guake -e mc &»); os.execute(«guake -t &»); эквивалентна этим: guake os.execute(«guake -r mc &»); os.execute(«guake -e mc &») терминал сразу появляется скрытым, и никакие новые процессы не появляются.

ravinskiy
() автор топика

я запускаю так:

-- Автозапуск
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/awesome/autorun"
autostart(autostart_dir)
после в файл ~/.config/awesome/autorun вписываю команды

riso
()

Из drop down терминалов есть также x11-terms/tilda, получше гваки, с широкой настройкой, меньшим к-вом зависимостей и опцией стартовать скрытым из коробки.

Кроме того, чтобы приложение стартовало только один раз (например при перезапуске Awesome не выходя из него [C-Mod4-r]), можно прописать такую функцию:

-- {{{ run_once function

function run_once(prg)
  awful.util.spawn_with_shell("pgrep -u $USER -x " .. prg .. " || (" .. prg .. ")")
end

и вписывать приложения:

run_once("qlipper")
run_once("tilda")
science ★★☆
()

Не знаю, насколько это костыль, но прекрасно работает.

-- {{{ Autoruns
function run_once(prg)
    if not prg then
        do return nil end
    end
    awful.util.spawn_with_shell("ps ux | grep -v grep | grep " .. prg .. " || (" .. prg .. " &)")
end

run_once("shell-command)

Deleted
()
Ответ на: комментарий от science

Кстати, pgrep не работает, если имя процесса достаточно длинное

$ pgrep -u $USER -x gnome-gmail-notifier
$
$ ps ux | grep -v grep | grep gnome-gmail-notifier
fargred    795  0.0  0.7 646904 61352 ?        SLl  08:08   0:04 gnome-gmail-notifier

Deleted
()
Ответ на: комментарий от Deleted

Ой, ля, кавычку забыл

run_once("shell-command")

Deleted
()
Ответ на: комментарий от Deleted

pgrep использует для поиска по паттерну имена, обрезанные до 15 символов.

хе-хе)) а я то голову ломал, чего он мне 'compton -с -длинной -строкой -атрибутов' не подгружает, а вот оно что.

science ★★☆
()
Ответ на: комментарий от science

'compton -с -длинной -строкой -атрибутов'

Он не считал за совпадение с паттерном, потому что для поиска по полю командной строки (а не имени) используется дополнительный ключ -f.

Deleted
()
Ответ на: комментарий от Deleted

Хотя будет он её резать или нет — я не знаю.

Deleted
()
Ответ на: комментарий от Deleted

для поиска по полю командной строки (а не имени) используется дополнительный ключ -f.

Спасибо.
Жесть, я как-то и не знал об этом ключе.

science ★★☆
()
Ответ на: комментарий от science

Если интересно запускать с параметрами, то я подобрал для себя такой вариант:

-- {{{ Autoruns
function run_once(prg)
    if not prg then
        do return nil end
    end
    awful.util.spawn_with_shell('ps ux | grep -v grep | grep -F ' .. prg .. ' || ' .. prg .. ' &')
end

-- Внимание — одинарные кавычки.
run_once('uname -a')

Deleted
()

решил проблему. все что нужно - это прописать параметры в одной строке. os.execute(«guake -r mc -e mc &»). следствие моего невежества. p.s. большое спасибо за функции автозапуска. p.p.s tilda пробовал. не нашел там настройки хоткеев. я например в гваке повесил как в идеи(джава иде) ctrl + t -> open tab, ctrl + w -> close tab, alt + arrow -> перемещение по табам. это основное что я использую. есть и другие :)

ravinskiy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.