2012-08-17 42 views
2

我是新来的人,为Awesome中的rc.lua做自定义lua,并且在处理如何根据鼠标位置启动某些东西时遇到了一些麻烦。这是我所拥有的,但迄今为止,它没有做任何事情。在鼠标触及屏幕边缘时执行命令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

瑞恩,你可以回答你自己的问题。 (只需点击答案按钮。)您的答案不会丢失。只需点击“编辑...”链接并复制你的文章。将_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。所以这是一个完美的解决方案,如果你只是需要聆听鼠标移动。如果您需要更长的时间,当您需要抓取工具(主要是客户端重新调整和移动)并启动它时,可以停止抓取。