88 lines
2.0 KiB
Lua
88 lines
2.0 KiB
Lua
local capi = {screen=screen,client=client,mouse=mouse, keygrabber = keygrabber}
|
|
local math,table = math,table
|
|
local wibox = require( "wibox" )
|
|
local awful = require( "awful" )
|
|
local cairo = require( "lgi" ).cairo
|
|
local color = require( "gears.color" )
|
|
local beautiful = require( "beautiful" )
|
|
local surface = require( "gears.surface" )
|
|
local col_utils = require( "collision.util" )
|
|
|
|
local module = {}
|
|
|
|
local w = nil
|
|
|
|
function module.highlight()
|
|
if not w then
|
|
w = wibox{}
|
|
w.height = 100
|
|
w.width = 100
|
|
w.ontop = true
|
|
|
|
local img = cairo.ImageSurface(cairo.Format.A8, 100,100)
|
|
local cr = cairo.Context(img)
|
|
-- cr:set_operator(cairo.Operator.CLEAR)
|
|
cr:set_source_rgba(0,0,0,0)
|
|
cr:paint()
|
|
cr:set_operator(cairo.Operator.SOURCE)
|
|
cr:set_source_rgba(1,1,1,1)
|
|
|
|
cr:save()
|
|
cr:translate(0,-30)
|
|
cr:move_to(50,50)
|
|
cr:rotate(math.pi)
|
|
col_utils.arrow_path(cr,40)
|
|
cr:fill()
|
|
cr:restore()
|
|
|
|
cr:save()
|
|
cr:translate(-30,0)
|
|
cr:move_to(50,50)
|
|
cr:rotate(math.pi/2)
|
|
col_utils.arrow_path(cr,40)
|
|
cr:fill()
|
|
cr:restore()
|
|
|
|
cr:save()
|
|
cr:translate(30,0)
|
|
cr:move_to(50,50)
|
|
cr:rotate(-math.pi/2)
|
|
col_utils.arrow_path(cr,40)
|
|
cr:fill()
|
|
cr:restore()
|
|
|
|
cr:save()
|
|
cr:translate(0,30)
|
|
cr:move_to(50,50)
|
|
col_utils.arrow_path(cr,40)
|
|
cr:fill()
|
|
cr:restore()
|
|
|
|
cr:arc(50,50,50-3,0,2*math.pi)
|
|
cr:set_line_width(5)
|
|
cr:stroke()
|
|
|
|
cr:set_source_rgba(1,0,0,1)
|
|
w.shape_bounding = img._native
|
|
|
|
|
|
img = cairo.ImageSurface(cairo.Format.ARGB32, 100,100)
|
|
cr = cairo.Context(img)
|
|
cr:set_source(color(beautiful.bg_urgent))
|
|
cr:paint()
|
|
cr:set_source(color(beautiful.fg_normal))
|
|
cr:arc(50,50,50-3,0,2*math.pi)
|
|
cr:set_line_width(5)
|
|
cr:stroke()
|
|
w:set_bg(cairo.Pattern.create_for_surface(img))
|
|
end
|
|
w.x = capi.mouse.coords().x -50
|
|
w.y = capi.mouse.coords().y -50
|
|
w.visible = true
|
|
end
|
|
|
|
function module.hide()
|
|
w.visible = false
|
|
end
|
|
|
|
return module |