2012-08-17 2 views
2

Я новичок в создании пользовательских lua для rc.lua в Awesome, и у меня есть немного проблем с разработкой того, как запускать что-то на основе положения мыши. Это то, что у меня есть, так далеко, но это ничего не делает.Выполнение команды, когда мышь касается края экрана в Awesome-wm

-- Open todo when mouse hits right screen edge. 
todo_timer = timer({timeout = 0.1}) 
todo_timer:add_signal("todopopup", function() 
    if mouse.coords.x >= 3198 then 
     scratch.drop("urxvt -e vim /home/ryan/to-do", "center", "right", 0.33, 1, "true") 
    end 
end) 
todo_timer:start() 
-- 
+1

Ryan, вы можете ответить на свой вопрос. (Просто нажмите кнопку «Ответ».) Ваш ответ НЕ пропал. Просто нажмите на ссылку «отредактированный ...» и скопируйте свой пост. Сообщение _that_ как ответ. – Shiki

ответ

2

Это почти работает по назначению. По какой-то причине блокнот появляется на экране 1 в первый раз и не центрируется вертикально (эта проблема возникает только с горизонтальной позицией «справа», я предполагаю, что это проблема с блокнотом), для меня, но она должна работать для людей у которых нет настройки нескольких мониторов или для запуска других команд по вашему выбору.

-- Open todo when mouse hits right screen edge. 
local function todopad() 
    scratch.drop("urxvt -e vimpager /home/ryan/to-do", "center", "right", .20, 800, "true", 2) 
end 

todo_timer = timer({timeout = 1}) 
todo_timer:add_signal("timeout", function() 
    if mouse.coords()["x"] >= 3196 then 
     todopad() 
    end 
end) 
todo_timer:start() 
-- 
3

Вместо использования таймера можно/следует использовать mousegrabber как следующее:

mousegrabber.run(function(mouse) 
    if mouse.x > 3196 then 
     -- Do your stuff here 
    end 
    -- Return true, to continue grabbing the mouse 
    return true 
end) 

Проблема с этим подходом в том, что вы можете зарегистрировать только один mousegrabber одновременно. Таким образом, это идеальное решение, если вам просто нужно быстро слушать эти движения мыши. Если вам нужно больше времени, вы можете остановить захват, когда вам понадобится захват для чего-то еще (в основном, для настройки и перемещения клиента) и запустите его, когда это будет завершено.

Смежные вопросы