2012-08-17 3 views
2

신난다의 rc.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

Ryan, 당신은 당신의 질문에 대답 할 수 있습니다. (그냥 답변 버튼을 누르십시오.) 귀하의 답변은 분실되지 않습니다. "편집 ..."링크를 클릭하고 게시물을 복사하십시오. 답으로 _ _ _ _을 (를) 게시하십시오. – 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를 등록 할 수있다. 이렇게하면 마우스 움직임을 바로 듣기 만하면 완벽한 솔루션입니다. 더 이상 필요하다면 다른 작업 (주로 클라이언트의 크기 조정 및 이동)에 필요한 그래버가 필요할 때 잡기를 멈추고 작업이 끝나면 시작할 수 있습니다.

관련 문제