当鼠标触摸Awesome-wm中的屏幕边缘时执行命令

时间:2012-08-17 17:00:44

标签: awesome-wm

我很想为Awesome中的rc.lua做自定义lua,我在如何基于鼠标位置启动某些东西时遇到了一些麻烦。这就是我所拥有的,迄今为止,但它没有做任何事情。

-- 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()
--

2 个答案:

答案 0 :(得分: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。所以这是一个完美的解决方案,如果你只需要听一下鼠标的动作。如果你需要更长时间,当你需要抓取器来获取其他东西(主要是客户端重新调整和移动)并启动它时,你可以停止抓取,当它完成时。

答案 1 :(得分: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()
--