Initial commit
This commit is contained in:
58
lib/lain/widget/contrib/redshift.lua
Normal file
58
lib/lain/widget/contrib/redshift.lua
Normal file
@@ -0,0 +1,58 @@
|
||||
--[[
|
||||
|
||||
Licensed under GNU General Public License v2
|
||||
* (c) 2017, Luca CPZ
|
||||
* (c) 2014, blueluke <http://github.com/blueluke>
|
||||
|
||||
--]]
|
||||
|
||||
local async = require('lain.helpers').async
|
||||
local awful = require('awful')
|
||||
local execute = os.execute
|
||||
local type = type
|
||||
|
||||
-- Redshift
|
||||
-- lain.widget.contrib.redshift
|
||||
local redshift = { active = false, pid = nil }
|
||||
|
||||
function redshift.start()
|
||||
execute('pkill redshift')
|
||||
awful.spawn.with_shell('redshift -x') -- clear adjustments
|
||||
redshift.pid = awful.spawn.with_shell('redshift')
|
||||
redshift.active = true
|
||||
if type(redshift.update_fun) == 'function' then
|
||||
redshift.update_fun(redshift.active)
|
||||
end
|
||||
end
|
||||
|
||||
function redshift.toggle()
|
||||
async({ awful.util.shell, '-c', string.format('ps -p %d -o pid=', redshift.pid) }, function(f)
|
||||
if f and #f > 0 then -- redshift is running
|
||||
-- Sending -USR1 toggles redshift (See project website)
|
||||
execute('pkill -USR1 redshift')
|
||||
redshift.active = not redshift.active
|
||||
else -- not started or killed, (re)start it
|
||||
redshift.start()
|
||||
end
|
||||
redshift.update_fun(redshift.active)
|
||||
end)
|
||||
end
|
||||
|
||||
-- Attach to a widget
|
||||
-- Provides a button which toggles redshift on/off on click
|
||||
-- @param widget: Widget to attach to.
|
||||
-- @param fun: Function to be run each time redshift is toggled (optional).
|
||||
-- Use it to update widget text or icons on status change.
|
||||
function redshift.attach(widget, fun)
|
||||
redshift.update_fun = fun or function() end
|
||||
if not redshift.pid then
|
||||
redshift.start()
|
||||
end
|
||||
if widget then
|
||||
widget:buttons(awful.util.table.join(awful.button({}, 1, function()
|
||||
redshift.toggle()
|
||||
end)))
|
||||
end
|
||||
end
|
||||
|
||||
return redshift
|
||||
Reference in New Issue
Block a user