Я считаю, что программы автозапуска AwesomeWM лучше, когда они сделаны хорошо
Почему = Если вы выходите из одной из программ «автозапуск * всегда» и хотите перезапустить их, вы (a) перезапустите X [закрытие всего процесса], (b) перезапустите их из оболочки [выходные сообщения теперь отправляются в эту оболочку], (c) создайте специальный код перезапуска в rc.lua [поверх кода запуска, который вы положили в .xinitrc
Как = Это хорошо работает для меня ...
а) Как только после отладочных строк в rc.lua добавим ...
    local gears         = { table   = require( "gears.table" )          ,
                            p_call  = require( "gears.protected_call" ) }
    gears.p_call( dofile, path_this .. "runonce.lua" )
б) А вот часть "когда сделано хорошо" (ИМХО), которая находится в runonce.lua ...
    local naughty   = require( "naughty" )
    local awful     = { spawn = require( "awful.spawn" ) }
    local string    = { sub = string.sub        ,
                        find = string.find      ,
                        format = string.format  }
    -- This function makes sure the application is not restarted when awesome is reloaded
    local function run_once( command )
        local args_start = string.find( command, " " )
        local pgrep_name = args_start and command:sub( 0, args_start - 1 ) or command
        local command = "pgrep -u $USER -x " .. pgrep_name .. " > /dev/null || (" .. command .. ")"
        awful.spawn.easy_async_with_shell(
            command,
            function( stdout, stderr, exitreason, exitcode )
                if exitcode ~= 0 then
                    naughty.notify({
                        preset  = naughty.config.presets.critical           ,
                        text    = string.format(    "%s\n\n%s\n%s\n%s\n%s", 
                                                    command,
                                                    stdout,
                                                    stderr,
                                                    exitreason,
                                                    exitcode )              })
                end
            end )
    end
    -- Start these if not already running
    run_once( "guake &> /dev/null" )
    run_once( "remmina -i &> /dev/null" )
    run_once( "skypeforlinux" )
Почему я считаю, что это сделано хорошо ...
1) Работает с программами, которые имеют параметры [ищет только имя, а не аргументы] 2) Имеет предупреждение, если что-то идет не так [без убийства Awesome] 3) Редактируйте только нижнюю часть
В заключение...
mod+ctrl+r перезагружает классно [ничего действительно не меняется, просто сбрасывает память] и, конечно, приложения, которые вы всегда хотите, перезапускаются точно так же, как в первый раз