2

私は、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()
--
4

2 に答える 2

3

タイマーを使用する代わりに、次のようにマウスグラバーを使用できます/使用する必要があります。

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

このアプローチの問題は、一度に1つのマウスグラバーしか登録できないことです。したがって、マウスの動きをすぐに聞く必要がある場合は、これが最適なソリューションです。もっと長く必要な場合は、他の何か(主にクライアントのサイズ変更と移動)のためにグラバーが必要になったときにグラブを停止し、それが終了したら開始することができます。

于 2012-09-18T21:46:23.997 に答える
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()
--
于 2012-08-18T06:15:07.317 に答える