104 lines
1.8 KiB
Lua
104 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
|
||
|
|
||
|
|