-- 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 . --]] 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