LINUX.ORG.RU

Run_or_raise skype

 


1

2

Настраиваю работу фичи run_or_raise в awesome wm, столкнулся с проблемой, хочу чтобы, по нажатию клавиши фокусировала окно скайпа, но не со списком контактов, а с окном чатов, xprop выдал для него, что его role=«ConversationsWindow», пытаюсь таким образом вызывать его по хоткею: awful.key({ modkey, }, «3», function () run_or_raise(«skype», {instance=«skype»,role=«ConversationsWindow» }) end),

на что он мне ругается и не хочет ничего делать, кроме как открыть окно со списком контактов. Если есть кто пользуется данной фичей, прошу у Вас помощи. Заранее спасибо.



Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от riso

/path/to/config/rc.lua 75: attempt to index field '?' (a nil value)

данную фичу я прописал сразу в конфиг, потому что способ указанный в вики у меня не работал, мой конфиг: rc.lua

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

положи этот код в rc.lua, все остальное связанное с run or raise - удали. Вызывать так:

awful.key({ modkey,           }, "w",      function () run_or_raise("chromium", { class = "Chromium-browser" }) end)

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

Ошибка такая же, у меня работает run or raise с другими приложениями. Основываясь на вики я могу выбрать любой атрибут окна по которому он будет его искать и их может быть несколько. Мне нужно чтобы он выцеплял окно с определенной ролью, принцип работы как скратчпад с окном чата, только завязанный на данной фиче.

moookino
() автор топика
18 июня 2013 г.
Ответ на: комментарий от moookino

Ошибки про nil скорее всего вызваны тем, что не у всех окон есть свойство role, а run_or_raise, получая объект со свойствами, пытается сравнивать их без разбору. Поэтому рекомендую передавать туда функцию-фильтр, внутри которой для поиска нужного окна использовать awful.rules.match, который обрабатывает такие ситуации корректно. Вот этот код нормально работает в 3.5.1

awful.key({ modkey, "Shift"}, "s",  function ()
        local matcher = function (c)
            return (awful.rules.match(c, { class = 'Skype', role = "ConversationsWindow" }))
        end
        awful.client.run_or_raise('skype', matcher)
    end),

p.s. если скайп запущен, но окно сообщений закрыто - ничего не произойдет, естественно.

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

Я тут посмотрел на ваш конфиг - у вас используется собственная реализация run_or_raise. Если в версии awesome, которую вы используете, еще нет встроенной реализации - вам придется поиграться с 38 строчкой вашего rc.lua (который выше по ссылке на pastebin). Там проверка производится функцией match, которая там же и реализована, но она написана спустя рукава, и лучше использовать ту, что я указывал выше: awful.rules.match. Т.е. 38 строчка вашего rc.lua будет выглядеть как-то так:

      if awful.rules.match(c, properties) then

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