dotfiles/awesome/notif-center/notif-panel.lua
2020-05-16 23:07:21 +03:00

103 lines
1.8 KiB
Lua

local awful = require('awful')
local wibox = require('wibox')
local gears = require('gears')
local beautiful = require('beautiful')
local HOME = os.getenv('HOME')
local dpi = require('beautiful').xresources.apply_dpi
panel_visible = false
local right_panel = function(screen)
local panel_width = dpi(350)
local panel = wibox {
ontop = true,
screen = screen,
width = panel_width,
height = screen.geometry.height,
x = screen.geometry.width - panel_width,
bg = beautiful.panel_bg,
fg = beautiful.fg_normal,
}
panel.opened = false
local backdrop = wibox
{
ontop = true,
screen = screen,
bg = '#00000000',
type = 'dock',
x = screen.geometry.x,
y = screen.geometry.y,
width = screen.geometry.width,
height = screen.geometry.height
}
panel:struts(
{
right = 0
}
)
openPanel = function()
panel_visible = true
backdrop.visible = true
panel.visible = true
panel:emit_signal('opened')
end
closePanel = function()
panel_visible = false
panel.visible = false
backdrop.visible = false
-- Change to notif mode on close
panel:emit_signal('closed')
end
-- Hide this panel when app dashboard is called.
function panel:HideDashboard()
closePanel()
end
-- You can use this function in your keybindings
-- Just add this in your global keys:
-- _G.screen.primary.right_panel:toggle()
function panel:toggle()
self.opened = not self.opened
if self.opened then
openPanel()
else
closePanel()
end
end
backdrop:buttons(
awful.util.table.join(
awful.button(
{},
1,
function()
panel:toggle()
end
)
)
)
panel:setup {
expand = 'none',
layout = wibox.layout.fixed.vertical,
{
require('notif-center.subwidgets.notification-center'),
margins = dpi(15),
widget = wibox.container.margin
},
}
return panel
end
return right_panel