-- 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 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 wibar_height = 26 local wibar_width = 56 theme.horizontal_button_bg_focus = { type = "linear", from = {0,0}, to = {0,wibar_height}, stops = { {0,"#32322C"}, {1,"#4E4E46"} } } theme.horizontal_button_bg_normal = { type = "linear", from = {0,0}, to = {0,wibar_height}, stops = { {0,"#51514E"}, {1,"#343431"} } } theme.horizontal_button_border_bg = "#51514E" theme.button_bg_focus = { type = "radial", from = {wibar_width/2,-0.5*wibar_width,wibar_width/10}, to = {wibar_width/2,-0.5*wibar_width,wibar_width*2}, stops = { { 0 , "#FFFFFFBB"}, { 0.45, "#DF744E99"}, { 0.55, "#DF744E99"}, { 1, "#FFFFFF44"} } } theme.button_bg_normal = { type = "radial", from = {wibar_width/2,-0.5*wibar_width,wibar_width/10}, to = {wibar_width/2,-0.2*wibar_width,wibar_width*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 = {wibar_width/2,wibar_width/(-3),wibar_width/8}, to = {wibar_width/2,wibar_width/(-5),wibar_width*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 _,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["volume-high-symbolic"] = themes_path.."unity/icons/volume-high-symbolic.png" theme["volume-medium-symbolic"] = themes_path.."unity/icons/volume-medium-symbolic.png" theme["volume-low-symbolic"] = themes_path.."unity/icons/volume-low-symbolic.png" theme["volume-muted-symbolic"] = themes_path.."unity/icons/volume-muted-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 _,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", "volume-high-symbolic", "volume-medium-symbolic", "volume-low-symbolic", "volume-muted-symbolic"}) 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 = { hidden_size = 2, 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 = wibar_height, width = wibar_width+6, 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 = { width = 15, height = 15, shape = gears.shape.circle, border_width = 3, border_color = theme.bg_normal, paddings = {2,2,2,2} }, icon = { width = 25, height = 25 } }, -- }}} -- {{{ 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 }, icon = { height = 60, width = 100 } }, -- }}} 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 = { icon = { margins = 2 }, button = { width = 160, height = wibar_width-4, margins = 4, shape_focus = theme.button_shape, shape_normal = theme.button_shape, shape_urgent = theme.button_shape, shape_minimize = theme.button_shape, shape_border_width_normal = dpi(1), shape_border_width_focus = dpi(1), shape_border_width_urgent = dpi(1), shape_border_width_minimize = dpi(1), bg_normal = theme.horizontal_button_bg_normal, bg_focus = theme.horizontal_button_bg_focus, bg_urgent = theme.bg_urgent, bg_minimize = theme.bg_minimize, shape_border_color_normal = theme.horizontal_button_border_bg, shape_border_color_focus = theme.horizontal_button_border_bg, shape_border_color_minimize = theme.horizontal_button_border_bg, shape_border_color_urgent = theme.horizontal_button_border_bg, vertical = { margins = 2, shape_border_width_normal = dpi(1), shape_border_width_focus = dpi(1), shape_border_width_urgent = dpi(1), shape_border_width_minimize = dpi(1), 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 } } }, launcher = { icon = { width = wibar_width, height = wibar_width, margins = 2 }, button = { forced_height = wibar_width, forced_width = wibar_width, margins = 2, bg_normal = theme.horizontal_button_bg_normal, bg_focus = theme.horizontal_button_bg_focus, shape_border_width = dpi(1), shape_border_color = theme.horizontal_button_border_bg, vertical = { margins = 1, 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 }, onpress = function(widget) widget:set_bg(theme.horizontal_button_bg_focus) end, onrelease = function(widget) widget:set_bg(theme.horizontal_button_bg_normal) end } }, lockscreen = { popup = { margins = 0 }, icon = { width = 150, height = 150 } }, 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, height = 28, }, wibar_left = { bg_normal = "#0D0D0966", border_width = dpi(1), border_color = "#26262666" }, wibar_bottom = { bg_normal = theme.bar_bg_normal, fg_normal = theme.fg_normal, height = 28, margins = 0 }, wibar_right = { 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