155 lines
4.1 KiB
Lua
155 lines
4.1 KiB
Lua
|
local gears = require('gears')
|
||
|
local lain = require('lain')
|
||
|
local awful = require('awful')
|
||
|
local wibox = require('wibox')
|
||
|
local dpi = require('beautiful.xresources').apply_dpi
|
||
|
|
||
|
local my_table = awful.util.table or gears.table -- 4.{0,1} compatibility
|
||
|
|
||
|
local theme = require('theme.base_theme')
|
||
|
|
||
|
local function build_widget_list(widgets)
|
||
|
local out = {}
|
||
|
local last_bg = 'alpha'
|
||
|
|
||
|
for _, widget in pairs(widgets) do
|
||
|
table.insert(out, lain.util.separators.arrow_left(last_bg, widget.bg))
|
||
|
|
||
|
local bg_widget = wibox.widget.background(wibox.container.margin(widget.widget, 5, 5), widget.bg)
|
||
|
bg_widget.fg = '#000000'
|
||
|
table.insert(out, bg_widget)
|
||
|
|
||
|
last_bg = widget.bg
|
||
|
end
|
||
|
|
||
|
return out
|
||
|
end
|
||
|
|
||
|
-- MPD
|
||
|
--[[
|
||
|
local mpdicon = wibox.widget.imagebox()
|
||
|
theme.mpd = lain.widget.mpd({
|
||
|
settings = function()
|
||
|
mpd_notification_preset = {
|
||
|
text = string.format("%s [%s] - %s\n%s", mpd_now.artist,
|
||
|
mpd_now.album, mpd_now.date, mpd_now.title)
|
||
|
}
|
||
|
|
||
|
if mpd_now.state == "play" then
|
||
|
artist = mpd_now.artist .. " > "
|
||
|
title = mpd_now.title .. " "
|
||
|
mpdicon:set_image(theme.widget_note_on)
|
||
|
elseif mpd_now.state == "pause" then
|
||
|
artist = "mpd "
|
||
|
title = "paused "
|
||
|
else
|
||
|
artist = ""
|
||
|
title = ""
|
||
|
--mpdicon:set_image() -- not working in 4.0
|
||
|
mpdicon._private.image = nil
|
||
|
mpdicon:emit_signal("widget::redraw_needed")
|
||
|
mpdicon:emit_signal("widget::layout_changed")
|
||
|
end
|
||
|
widget:set_markup(markup.fontfg(theme.font, "#e54c62", artist) .. markup.fontfg(theme.font, "#b2b2b2", title))
|
||
|
end
|
||
|
})
|
||
|
]]
|
||
|
--
|
||
|
|
||
|
local info = build_widget_list(require(... .. '.info'))
|
||
|
|
||
|
function theme.at_screen_connect(s)
|
||
|
-- Quake application
|
||
|
s.quake = lain.util.quake({ app = awful.util.terminal })
|
||
|
|
||
|
-- If wallpaper is a function, call it with the screen
|
||
|
local wallpaper = theme.wallpaper
|
||
|
if type(wallpaper) == 'function' then
|
||
|
wallpaper = wallpaper(s)
|
||
|
end
|
||
|
gears.wallpaper.maximized(wallpaper, s, true)
|
||
|
|
||
|
-- Tags
|
||
|
awful.tag(awful.util.tagnames, s, awful.layout.layouts[1])
|
||
|
|
||
|
-- Create a promptbox for each screen
|
||
|
s.mypromptbox = awful.widget.prompt()
|
||
|
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
|
||
|
-- We need one layoutbox per screen.
|
||
|
s.mylayoutbox = awful.widget.layoutbox(s)
|
||
|
s.mylayoutbox:buttons(my_table.join(
|
||
|
awful.button({}, 1, function()
|
||
|
awful.layout.inc(1)
|
||
|
end),
|
||
|
awful.button({}, 2, function()
|
||
|
awful.layout.set(awful.layout.layouts[1])
|
||
|
end),
|
||
|
awful.button({}, 3, function()
|
||
|
awful.layout.inc(-1)
|
||
|
end),
|
||
|
awful.button({}, 4, function()
|
||
|
awful.layout.inc(1)
|
||
|
end),
|
||
|
awful.button({}, 5, function()
|
||
|
awful.layout.inc(-1)
|
||
|
end)
|
||
|
))
|
||
|
-- Create a taglist widget
|
||
|
s.mytaglist = awful.widget.taglist(s, awful.widget.taglist.filter.all, awful.util.taglist_buttons)
|
||
|
|
||
|
-- Create a tasklist widget
|
||
|
s.mytasklist = awful.widget.tasklist({
|
||
|
screen = s,
|
||
|
filter = awful.widget.tasklist.filter.minimizedcurrenttags,
|
||
|
buttons = awful.util.tasklist_buttons,
|
||
|
style = {
|
||
|
shape = function(cr, w, h)
|
||
|
gears.shape.partially_rounded_rect(cr, w, h, false, false, true, true, 10)
|
||
|
end,
|
||
|
},
|
||
|
layout = {
|
||
|
spacing = 5,
|
||
|
layout = wibox.layout.flex.horizontal,
|
||
|
},
|
||
|
widget_template = {
|
||
|
{
|
||
|
{
|
||
|
id = 'text_role',
|
||
|
widget = wibox.widget.textbox,
|
||
|
},
|
||
|
left = 10,
|
||
|
right = 10,
|
||
|
widget = wibox.container.margin,
|
||
|
},
|
||
|
id = 'background_role',
|
||
|
widget = wibox.container.background,
|
||
|
},
|
||
|
})
|
||
|
s.mytasklist = wibox.container.margin(s.mytasklist, 10, 10, 0, 0)
|
||
|
|
||
|
-- Create the wibox
|
||
|
s.mywibox =
|
||
|
awful.wibar({ position = 'top', screen = s, height = dpi(19), bg = theme.bg_normal, fg = theme.fg_normal })
|
||
|
|
||
|
-- Add widgets to the wibox
|
||
|
s.mywibox:setup({
|
||
|
layout = wibox.layout.align.horizontal,
|
||
|
{ -- Left widgets
|
||
|
layout = wibox.layout.fixed.horizontal,
|
||
|
s.mylayoutbox,
|
||
|
s.mytaglist,
|
||
|
s.mypromptbox,
|
||
|
--mpdicon,
|
||
|
--theme.mpd.widget,
|
||
|
},
|
||
|
s.mytasklist, -- Middle widget
|
||
|
--nil,
|
||
|
gears.table.join({ -- Right widgets
|
||
|
layout = wibox.layout.fixed.horizontal,
|
||
|
wibox.container.margin(wibox.widget.systray(), 0, 5),
|
||
|
}, info),
|
||
|
})
|
||
|
end
|
||
|
|
||
|
return theme
|