Reno is the second iteration of the AWMTK-powered AwesomeWM config.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

658 lines
22 KiB

-- Reno Unity - Unity theme for Reno desktop
--[[
Reno Unity - A theme for Reno desktop
Written in 2022 by Yessiest (yessiest@memeware.net)
To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty.
You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
--]]
local theme_assets = require("beautiful.theme_assets")
local xresources = require("beautiful.xresources")
local dpi = xresources.apply_dpi
local gears = require("gears")
local gfs = require("gears.filesystem")
local themes_path = root_path.."/themes/"
local theme = {}
theme.font = "Ubuntu 8"
theme.bg_normal = "#19191D"
theme.bg_focus = "#3E3E3E"
theme.bg_urgent = "#2E2E2E"
theme.bg_minimize = "#2E2E2E"
theme.bg_highlight = "#45433D"
theme.bg_systray = theme.bg_normal
theme.fg_normal = "#e1dec7"
theme.fg_focus = "#e1dec7"
theme.fg_urgent = "#e1dec7"
theme.fg_minimize = "#e1dec7"
theme.window_rounding = 5
theme.useless_gap = dpi(0)
-- technically speaking these are irrelevant since they're not exactly smart
-- borders
theme.border_width = dpi(0)
theme.border_normal = "#c0c0c0"
theme.border_focus = "#c0c0c0"
theme.border_marked = "#c0c0c0"
local bsize = 50
theme.button_bg_focus = {
type = "radial",
from = {bsize/2,-0.5*bsize,bsize/10},
to = {bsize/2,-0.5*bsize,bsize*2},
stops = {
{ 0 , "#FFFFFFBB"},
{ 0.45, "#DF744E99"},
{ 0.55, "#DF744E99"},
{ 1, "#FFFFFF44"}
}
}
theme.button_bg_normal = {
type = "radial",
from = {bsize/2,-0.5*bsize,bsize/10},
to = {bsize/2,-0.2*bsize,bsize*1.5},
stops = {
{ 0 , "#FFFFFFFF"},
{ 0.5, "#33333333"},
{ 1, "#FFFFFF22"}
}
}
theme.button_shape = function(cr,width,height)
return require("gears").shape.rounded_rect(cr,width,height,2)
end
theme.bar_bg_focus = {
type = "linear",
from = { 0, 20 },
to = { 0, 0 },
stops = { { 0, "#3C3B37"} , { 1 , "#59574E"} }
}
theme.bar_bg_normal = {
type = "linear",
from = { 0, 20 },
to = { 0, 0 },
stops = { { 0, "#3C3B37"} , { 1 , "#41403D"} }
}
theme.bar_bg_inverted_normal = {
type = "linear",
from = { 0, 20 },
to = { 0, 0 },
stops = { { 0 , "#41403D"}, { 1, "#3C3B37"} }
}
theme.bar_bg_inverted_focus = {
type = "linear",
from = { 0, 20 },
to = { 0, 0 },
stops = { { 0 , "#59574E"}, { 1, "#3C3B37"} }
}
theme.bar_border_color = {
type = "radial",
from = {bsize/2,bsize/(-3),bsize/8},
to = {bsize/2,bsize/(-5),bsize*1},
stops = {
{ 0 , "#FFFFFF66"},
{ 1, "#43434366"},
}
}
theme.titlebar_bg_focus = theme.bar_bg_focus
theme.titlebar_bg_normal = theme.bar_bg_normal
local taglist_square_size = dpi(4)
theme.taglist_squares_sel = theme_assets.taglist_squares_sel(
taglist_square_size, theme.fg_normal
)
theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
taglist_square_size, theme.fg_normal
)
theme.menu_height = dpi(15)
theme.menu_width = dpi(100)
theme.systray_icon_spacing = 2
-- Define the image to load
theme.titlebar_ontop_button_normal_inactive = themes_path.."unity/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = themes_path.."unity/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = themes_path.."unity/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = themes_path.."unity/titlebar/ontop_focus_active.png"
theme.titlebar_sticky_button_normal_inactive = themes_path.."unity/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive = themes_path.."unity/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = themes_path.."unity/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active = themes_path.."unity/titlebar/sticky_focus_active.png"
theme.titlebar_floating_button_normal_inactive = themes_path.."unity/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = themes_path.."unity/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = themes_path.."unity/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = themes_path.."unity/titlebar/floating_focus_active.png"
theme = theme_assets.recolor_titlebar(theme,theme.fg_normal,"normal")
theme = theme_assets.recolor_titlebar(theme,theme.fg_focus,"focus")
theme.titlebar_close_button_normal = themes_path.."unity/titlebar/close_normal.png"
theme.titlebar_close_button_focus = themes_path.."unity/titlebar/close_focus.png"
theme.titlebar_minimize_button_normal = themes_path.."unity/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus = themes_path.."unity/titlebar/minimize_focus.png"
theme.titlebar_maximized_button_normal_inactive = themes_path.."unity/titlebar/maximized_normal_inactive.png"
theme.titlebar_maximized_button_focus_inactive = themes_path.."unity/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_active = themes_path.."unity/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_active = themes_path.."unity/titlebar/maximized_focus_active.png"
-- You can use your own layout icons like this:
theme.layout_fairh = themes_path.."unity/layouts/fairhw.png"
theme.layout_fairv = themes_path.."unity/layouts/fairvw.png"
theme.layout_floating = themes_path.."unity/layouts/floatingw.png"
theme.layout_magnifier = themes_path.."unity/layouts/magnifierw.png"
theme.layout_max = themes_path.."unity/layouts/maxw.png"
theme.layout_fullscreen = themes_path.."unity/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path.."unity/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path.."unity/layouts/tileleftw.png"
theme.layout_tile = themes_path.."unity/layouts/tilew.png"
theme.layout_tiletop = themes_path.."unity/layouts/tiletopw.png"
theme.layout_spiral = themes_path.."unity/layouts/spiralw.png"
theme.layout_dwindle = themes_path.."unity/layouts/dwindlew.png"
theme.layout_cornernw = themes_path.."unity/layouts/cornernww.png"
theme.layout_cornerne = themes_path.."unity/layouts/cornernew.png"
theme.layout_cornersw = themes_path.."unity/layouts/cornersww.png"
theme.layout_cornerse = themes_path.."unity/layouts/cornersew.png"
-- Generate Awesome icon:
theme.awesome_icon = theme_assets.awesome_icon(
theme.menu_height, theme.bg_focus, theme.fg_focus
)
theme.hotkeys_border_width = 3
theme.hotkeys_border_color = theme.bg_focus
theme.hotkeys_modifiers_fg = theme.fg_normal
theme.hotkeys_label_fg = theme.fg_normal
---theme.bgimage_outset
-- Define the icon theme for application icons. If not set then the icons
-- from /usr/share/icons and /usr/share/icons/hicolor will be used.
theme.icon_theme = "Humanity"
-- Icons
local icons = {
"battery-caution-charging-symbolic",
"battery-empty-charging-symbolic",
"battery-full-charging-symbolic",
"battery-good-charging-symbolic",
"battery-low-charging-symbolic"
}
for k,v in pairs(icons) do
theme[v] = themes_path.."unity/icons/"..v..".png"
theme[v:gsub("-charging","")] = themes_path.."unity/icons/"..v:gsub("-charging","")..".png"
end
theme["battery-full-charged-symbolic"] = themes_path.."unity/icons/battery-full-charged-symbolic.png"
theme["battery-missing-symbolic"] = themes_path.."unity/icons/battery-missing-symbolic.png"
theme["ac-adapter-symbolic"] = themes_path.."unity/icons/ac-adapter-symbolic.png"
theme["backlight-symbolic"] = themes_path.."unity/icons/backlight-symbolic.png"
theme["notifications-area-symbolic"] = themes_path.."unity/icons/notifications-area-symbolic.png"
theme["mpc-previous-symbolic"] = themes_path.."unity/icons/mpc-previous-symbolic.png"
theme["mpc-play-symbolic"] = themes_path.."unity/icons/mpc-play-symbolic.png"
theme["mpc-pause-symbolic"] = themes_path.."unity/icons/mpc-pause-symbolic.png"
theme["mpc-next-symbolic"] = themes_path.."unity/icons/mpc-next-symbolic.png"
theme["action-poweroff-symbolic"] = themes_path.."unity/icons/action-poweroff-symbolic.png"
theme["action-lock-screen-symbolic"] = themes_path.."unity/icons/action-lock-screen-symbolic.png"
theme["action-suspend-symbolic"] = themes_path.."unity/icons/action-suspend-symbolic.png"
theme.wallpaper = themes_path.."unity/background.png"
theme.wallpapers_icon = themes_path.."unity/icons/wallpapers.png"
-- Default icon for clients
-- This one has to be baked as a surface to avoid memory leaks
theme.icon_default = themes_path.."unity/icons/unknown-app.png"
for k,v in pairs({
"battery-caution-symbolic",
"battery-empty-symbolic",
"battery-full-symbolic",
"battery-good-symbolic",
"battery-low-symbolic",
"battery-caution-charging-symbolic",
"battery-empty-charging-symbolic",
"battery-full-charging-symbolic",
"battery-good-charging-symbolic",
"battery-low-charging-symbolic",
"battery-full-charged-symbolic",
"battery-missing-symbolic",
"ac-adapter-symbolic",
"backlight-symbolic",
"notifications-area-symbolic",
"mpc-previous-symbolic",
"mpc-play-symbolic",
"mpc-pause-symbolic",
"mpc-next-symbolic",
"action-poweroff-symbolic",
"action-lock-screen-symbolic",
"action-suspend-symbolic",
"wallpapers_icon",
"icon_default"}) do
if theme[v] and gears.filesystem.file_readable(theme[v]) then
theme[v] = gears.color.recolor_image(theme[v],theme.fg_normal)
end
end
-- Notification popups settings
theme.notification_width = 240
theme.notification_height = 60
theme.widgets = {
-- {{{ Widget base
default = {
container = {
shape = function(cr,width,height)
return require("gears").shape.rounded_rect(cr,width,height,2)
end,
bgimage_highlight = theme.bgimage_inset
},
button = {
shape = theme.button_shape,
onpress = function(widget)
widget:set_bg(theme.bg_focus)
end,
onrelease = function(widget)
widget:set_bg(theme.bg_normal)
end
},
popup = {
shape = function(cr,width,height)
return gears.shape.rounded_rect(cr,width,height,4)
end,
root_shape = function(cr,width,height)
return gears.shape.rounded_rect(cr,width,height,6)
end,
},
titlebar = {
root_shape = function(cr,width,height)
return gears.shape.partially_rounded_rect(cr,width,height,
true,true,false,false,6) end,
root_bg_focus = theme.titlebar_bg_focus,
root_bg_normal = theme.titlebar_bg_normal,
top = 2,
bottom = 2,
left = 3,
right = 3
},
wibar = {
shape = function(cr,width,height)
return gears.shape.rounded_rect(cr,width,height,0)
end,
height = 26,
width = 60,
margins = 3,
stretch = true
},
slider = {
shape = function(cr,width,height)
return gears.shape.rounded_rect(cr,width,height,0)
end,
height = 20,
width = 140,
bg_focus = theme.bg_normal,
bg_normal = theme.bg_focus,
handle_width = 8,
handle_border_color = theme.bg_normal,
handle_border_width = 2,
bar_height = 6,
bar_border_color = theme.bg_focus,
bar_border_width = 2
},
checkbox = {
shape = gears.shape.circle,
shape_border_width = 3,
shaoe_border_color = theme.bg_focus
},
},
-- }}}
-- {{{ Menus
generic_menu = {
base = {
spacing = 2,
menu_slide = true
},
button = {
bg_normal = theme.bg_highlight,
onpress = function(widget)
widget:set_bg(theme.bg_focus)
end,
onrelease = function(widget)
widget:set_bg(theme.bg_highlight)
end,
forced_height = 20,
forced_width = 160
},
},
-- }}}
-- {{{ Popup activating icons
generic_iconified_widget = {
button = {
margins = 1,
bg_normal = "#00000000",
onpress = function(widget)
widget:set_bg(theme.bg_normal)
end,
onrelease = function(widget)
widget:set_bg("#00000000")
end
}
},
-- }}}
-- {{{ Bars/Panels/Menu popups
generic_composite_widget = {
base = {
spacing = 2
}
},
-- }}}
-- {{{ Status panel widgets
generic_status_widget = {
container = {
margins = 2,
bg_normal = "#00000000",
},
button = {
margins = 1,
bg_normal = "#00000000",
onpress = function() end,
onrelease = function() end,
}
},
-- }}}
-- {{{ Various button lists
generic_button_list = {
button = {
bg_normal = theme.bg_highlight,
onpress = function(widget)
widget:set_bg(theme.bg_focus)
end,
onrelease = function(widget)
widget:set_bg(theme.bg_highlight)
end,
forced_width = 20,
forced_height = 20
},
base = {
spacing = 2
}
},
-- }}}
-- {{{ All widgets that fit into a single line
generic_oneline_widget = {
container = {
bgimage_normal = theme.bgimage_inset
},
button = {
margins = 2,
onpress = function(widget)
widget:set_bg(theme.bg_normal)
end,
onrelease = function(widget)
widget:set_bg("#00000000")
end,
bg_normal = "#00000000"
}
},
-- }}}
-- {{{ All kinds of widget popups
generic_popup = {
button = {
width = 180,
height = 40
},
article = {
icon_size = 30
},
},
-- }}}
soundclown = {
--[[ --Uncomment to leetify that MPC
container = {
bg_normal = "#0c0c0c",
fg_normal = "#00FF00"
},
]]
base = {
width = 140
},
},
subpanel = {
container = {
bgimage_normal = theme.bgimage_inset,
bg_normal = theme.bar_bg_inverted_normal,
margins = 0,
shape = function(cr,width,height)
return gears.shape.rounded_rect(cr,width,height,8)
end
}
},
taglist = {
base = {
spacing = 2,
layout = require("wibox").layout.flex.horizontal
},
button = {
bgimage_focus = theme.bgimage_inset,
bgimage_normal = theme.bgimage_outset,
},
container = {
margins = 3
}
},
tasklist = {
button = {
width = 160,
height = 44,
margins = 5,
shape_focus = theme.button_shape,
shape_normal = theme.button_shape,
shape_urgent = theme.button_shape,
shape_minimize = theme.button_shape,
bg_normal = theme.button_bg_normal,
bg_focus = theme.button_bg_focus,
bg_urgent = theme.bg_urgent,
bg_minimize = theme.bg_minimize,
shape_border_color_normal = theme.bar_border_color,
shape_border_color_focus = theme.bar_border_color,
shape_border_color_urgent = theme.bar_border_color,
shape_border_color_minimize = theme.bar_border_color,
shape_border_width_normal = dpi(1),
shape_border_width_focus = dpi(1),
shape_border_width_urgent = dpi(1),
shape_border_width_minimize = dpi(1),
}
},
launcher = {
button = {
margins = 5,
bg_normal = theme.button_bg_normal,
bg_focus = theme.button_bg_focus,
shape_border_width = dpi(1),
shape_border_color = theme.bar_border_color,
onpress = function(widget)
widget:set_bg(theme.button_bg_focus)
end,
onrelease = function(widget)
widget:set_bg(theme.button_bg_normal)
end
}
},
lockscreen = {
popup = {
margins = 0
}
},
lockbar = {
base = {
height = 22
}
},
lockpanel = {
base = {
icon_height = 60,
icon_width = 60,
panel_height = 300,
panel_width = 200,
panel_bgimage = theme.bgimage_outset
},
container = {
shape = function(cr,width,height)
return gears.shape.rounded_rect(cr,width,height,8)
end,
shape_border_color = theme.bg_highlight,
shape_border_width = dpi(2)
}
},
systray = {
container = {
margins = 2,
shape = function(cr,width,height)
return gears.shape.rounded_rect(cr,width,height,4)
end,
shape_border_color = theme.bg_normal,
shape_border_width = dpi(2)
}
},
lock_clock = {
textbox = {
font = "Ubuntu Mono 20"
}
},
titlebar = {
titlebar_top = {
onfocus = function(titlebar)
local root = titlebar:get_children_by_id("titlebar_root")[1]
root:set_bg(theme.titlebar_bg_focus)
root:set_shape(function(cr,width,height)
return gears.shape.partially_rounded_rect(cr,width,height,
true,true,false,false,6) end)
end,
onunfocus = function(titlebar)
local root = titlebar:get_children_by_id("titlebar_root")[1]
root:set_bg(theme.titlebar_bg_normal)
root:set_shape(function(cr,width,height)
return gears.shape.partially_rounded_rect(cr,width,height,
true,true,false,false,6) end)
end,
bg_focus = "#00000000",
bg_normal = "#00000000",
fg_focus = "#FAFAFA",
fg_normal = theme.fg_normal,
size = 22,
spacing = 1
},
titlebar_left = {
size = 2,
bg_focus = "#3C3B37",
bg_normal = "#3C3B37",
},
titlebar_right = {
size = 2,
bg_focus = "#3C3B37",
bg_normal = "#3C3B37",
},
titlebar_bottom = {
size = 2,
bg_focus = "#3C3B37",
bg_normal = "#3C3B37",
}
},
wibar = {
wibar_top = {
bg_normal = theme.bar_bg_normal,
fg_normal = theme.fg_normal,
size = 22,
},
wibar_left = {
bg_normal = "#0D0D0966",
border_width = dpi(1),
border_color = "#26262666"
}
}
}
local wibox = require("wibox")
theme.templates = {
templates = {
titlebar = function(style)
return function(layout,options)
local margins = style.titlebar.margins
if (style.titlebar.left or
style.titlebar.right or
style.titlebar.bottom or
style.titlebar.top) then
margins = nil
end
return {
{
gears.table.join({
layout,
margins = margins,
layout = wibox.container.margin,
left = style.titlebar.left,
right = style.titlebar.right,
bottom = style.titlebar.bottom,
top = style.titlebar.top
},options or {}),
bgimage = style.titlebar.root_bgimage_normal,
bg = style.titlebar.root_bg_normal,
fg = style.titlebar.root_fg_normal,
shape = style.titlebar.root_shape,
shape_border_color = style.titlebar.root_shape_border_color,
shape_border_width = style.titlebar.root_shape_border_width,
widget = wibox.container.background,
id = "titlebar_root"
},
layout = wibox.container.margin,
left = style.titlebar.root_margin_left,
right = style.titlebar.root_margin_right,
top = style.titlebar.root_margin_top,
bottom = style.titlebar.root_margin_bottom
}
end
end,
popup = function(style)
return function(widget,options)
return gears.table.join({
widget = {
{
widget,
margins = style.popup.margins,
layout = wibox.container.margin
},
bg = style.popup.bg_normal,
shape = style.popup.root_shape,
widget = wibox.container.background
},
bg = "#00000000",
shape = style.popup.shape,
visible = false,
ontop = true
},options or {})
end
end
}
}
return theme
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80