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

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. -- Reno Unity - Unity theme for Reno desktop
  2. --[[
  3. Reno Unity - A theme for Reno desktop
  4. Written in 2022 by Yessiest (yessiest@memeware.net)
  5. 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.
  6. 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/>.
  7. --]]
  8. local theme_assets = require("beautiful.theme_assets")
  9. local xresources = require("beautiful.xresources")
  10. local dpi = xresources.apply_dpi
  11. local gears = require("gears")
  12. local gfs = require("gears.filesystem")
  13. local themes_path = root_path.."/themes/"
  14. local theme = {}
  15. theme.font = "Ubuntu 8"
  16. theme.bg_normal = "#19191D"
  17. theme.bg_focus = "#3E3E3E"
  18. theme.bg_urgent = "#2E2E2E"
  19. theme.bg_minimize = "#2E2E2E"
  20. theme.bg_highlight = "#45433D"
  21. theme.bg_systray = theme.bg_normal
  22. theme.fg_normal = "#e1dec7"
  23. theme.fg_focus = "#e1dec7"
  24. theme.fg_urgent = "#e1dec7"
  25. theme.fg_minimize = "#e1dec7"
  26. theme.window_rounding = 5
  27. theme.useless_gap = dpi(0)
  28. -- technically speaking these are irrelevant since they're not exactly smart
  29. -- borders
  30. theme.border_width = dpi(0)
  31. theme.border_normal = "#c0c0c0"
  32. theme.border_focus = "#c0c0c0"
  33. theme.border_marked = "#c0c0c0"
  34. local bsize = 50
  35. theme.button_bg_focus = {
  36. type = "radial",
  37. from = {bsize/2,-0.5*bsize,bsize/10},
  38. to = {bsize/2,-0.5*bsize,bsize*2},
  39. stops = {
  40. { 0 , "#FFFFFFBB"},
  41. { 0.45, "#DF744E99"},
  42. { 0.55, "#DF744E99"},
  43. { 1, "#FFFFFF44"}
  44. }
  45. }
  46. theme.button_bg_normal = {
  47. type = "radial",
  48. from = {bsize/2,-0.5*bsize,bsize/10},
  49. to = {bsize/2,-0.2*bsize,bsize*1.5},
  50. stops = {
  51. { 0 , "#FFFFFFFF"},
  52. { 0.5, "#33333333"},
  53. { 1, "#FFFFFF22"}
  54. }
  55. }
  56. theme.button_shape = function(cr,width,height)
  57. return require("gears").shape.rounded_rect(cr,width,height,2)
  58. end
  59. theme.bar_bg_focus = {
  60. type = "linear",
  61. from = { 0, 20 },
  62. to = { 0, 0 },
  63. stops = { { 0, "#3C3B37"} , { 1 , "#59574E"} }
  64. }
  65. theme.bar_bg_normal = {
  66. type = "linear",
  67. from = { 0, 20 },
  68. to = { 0, 0 },
  69. stops = { { 0, "#3C3B37"} , { 1 , "#41403D"} }
  70. }
  71. theme.bar_bg_inverted_normal = {
  72. type = "linear",
  73. from = { 0, 20 },
  74. to = { 0, 0 },
  75. stops = { { 0 , "#41403D"}, { 1, "#3C3B37"} }
  76. }
  77. theme.bar_bg_inverted_focus = {
  78. type = "linear",
  79. from = { 0, 20 },
  80. to = { 0, 0 },
  81. stops = { { 0 , "#59574E"}, { 1, "#3C3B37"} }
  82. }
  83. theme.bar_border_color = {
  84. type = "radial",
  85. from = {bsize/2,bsize/(-3),bsize/8},
  86. to = {bsize/2,bsize/(-5),bsize*1},
  87. stops = {
  88. { 0 , "#FFFFFF66"},
  89. { 1, "#43434366"},
  90. }
  91. }
  92. theme.titlebar_bg_focus = theme.bar_bg_focus
  93. theme.titlebar_bg_normal = theme.bar_bg_normal
  94. local taglist_square_size = dpi(4)
  95. theme.taglist_squares_sel = theme_assets.taglist_squares_sel(
  96. taglist_square_size, theme.fg_normal
  97. )
  98. theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
  99. taglist_square_size, theme.fg_normal
  100. )
  101. theme.menu_height = dpi(15)
  102. theme.menu_width = dpi(100)
  103. theme.systray_icon_spacing = 2
  104. -- Define the image to load
  105. theme.titlebar_ontop_button_normal_inactive = themes_path.."unity/titlebar/ontop_normal_inactive.png"
  106. theme.titlebar_ontop_button_focus_inactive = themes_path.."unity/titlebar/ontop_focus_inactive.png"
  107. theme.titlebar_ontop_button_normal_active = themes_path.."unity/titlebar/ontop_normal_active.png"
  108. theme.titlebar_ontop_button_focus_active = themes_path.."unity/titlebar/ontop_focus_active.png"
  109. theme.titlebar_sticky_button_normal_inactive = themes_path.."unity/titlebar/sticky_normal_inactive.png"
  110. theme.titlebar_sticky_button_focus_inactive = themes_path.."unity/titlebar/sticky_focus_inactive.png"
  111. theme.titlebar_sticky_button_normal_active = themes_path.."unity/titlebar/sticky_normal_active.png"
  112. theme.titlebar_sticky_button_focus_active = themes_path.."unity/titlebar/sticky_focus_active.png"
  113. theme.titlebar_floating_button_normal_inactive = themes_path.."unity/titlebar/floating_normal_inactive.png"
  114. theme.titlebar_floating_button_focus_inactive = themes_path.."unity/titlebar/floating_focus_inactive.png"
  115. theme.titlebar_floating_button_normal_active = themes_path.."unity/titlebar/floating_normal_active.png"
  116. theme.titlebar_floating_button_focus_active = themes_path.."unity/titlebar/floating_focus_active.png"
  117. theme = theme_assets.recolor_titlebar(theme,theme.fg_normal,"normal")
  118. theme = theme_assets.recolor_titlebar(theme,theme.fg_focus,"focus")
  119. theme.titlebar_close_button_normal = themes_path.."unity/titlebar/close_normal.png"
  120. theme.titlebar_close_button_focus = themes_path.."unity/titlebar/close_focus.png"
  121. theme.titlebar_minimize_button_normal = themes_path.."unity/titlebar/minimize_normal.png"
  122. theme.titlebar_minimize_button_focus = themes_path.."unity/titlebar/minimize_focus.png"
  123. theme.titlebar_maximized_button_normal_inactive = themes_path.."unity/titlebar/maximized_normal_inactive.png"
  124. theme.titlebar_maximized_button_focus_inactive = themes_path.."unity/titlebar/maximized_focus_inactive.png"
  125. theme.titlebar_maximized_button_normal_active = themes_path.."unity/titlebar/maximized_normal_active.png"
  126. theme.titlebar_maximized_button_focus_active = themes_path.."unity/titlebar/maximized_focus_active.png"
  127. -- You can use your own layout icons like this:
  128. theme.layout_fairh = themes_path.."unity/layouts/fairhw.png"
  129. theme.layout_fairv = themes_path.."unity/layouts/fairvw.png"
  130. theme.layout_floating = themes_path.."unity/layouts/floatingw.png"
  131. theme.layout_magnifier = themes_path.."unity/layouts/magnifierw.png"
  132. theme.layout_max = themes_path.."unity/layouts/maxw.png"
  133. theme.layout_fullscreen = themes_path.."unity/layouts/fullscreenw.png"
  134. theme.layout_tilebottom = themes_path.."unity/layouts/tilebottomw.png"
  135. theme.layout_tileleft = themes_path.."unity/layouts/tileleftw.png"
  136. theme.layout_tile = themes_path.."unity/layouts/tilew.png"
  137. theme.layout_tiletop = themes_path.."unity/layouts/tiletopw.png"
  138. theme.layout_spiral = themes_path.."unity/layouts/spiralw.png"
  139. theme.layout_dwindle = themes_path.."unity/layouts/dwindlew.png"
  140. theme.layout_cornernw = themes_path.."unity/layouts/cornernww.png"
  141. theme.layout_cornerne = themes_path.."unity/layouts/cornernew.png"
  142. theme.layout_cornersw = themes_path.."unity/layouts/cornersww.png"
  143. theme.layout_cornerse = themes_path.."unity/layouts/cornersew.png"
  144. -- Generate Awesome icon:
  145. theme.awesome_icon = theme_assets.awesome_icon(
  146. theme.menu_height, theme.bg_focus, theme.fg_focus
  147. )
  148. theme.hotkeys_border_width = 3
  149. theme.hotkeys_border_color = theme.bg_focus
  150. theme.hotkeys_modifiers_fg = theme.fg_normal
  151. theme.hotkeys_label_fg = theme.fg_normal
  152. ---theme.bgimage_outset
  153. -- Define the icon theme for application icons. If not set then the icons
  154. -- from /usr/share/icons and /usr/share/icons/hicolor will be used.
  155. theme.icon_theme = "Humanity"
  156. -- Icons
  157. local icons = {
  158. "battery-caution-charging-symbolic",
  159. "battery-empty-charging-symbolic",
  160. "battery-full-charging-symbolic",
  161. "battery-good-charging-symbolic",
  162. "battery-low-charging-symbolic"
  163. }
  164. for k,v in pairs(icons) do
  165. theme[v] = themes_path.."unity/icons/"..v..".png"
  166. theme[v:gsub("-charging","")] = themes_path.."unity/icons/"..v:gsub("-charging","")..".png"
  167. end
  168. theme["battery-full-charged-symbolic"] = themes_path.."unity/icons/battery-full-charged-symbolic.png"
  169. theme["battery-missing-symbolic"] = themes_path.."unity/icons/battery-missing-symbolic.png"
  170. theme["ac-adapter-symbolic"] = themes_path.."unity/icons/ac-adapter-symbolic.png"
  171. theme["backlight-symbolic"] = themes_path.."unity/icons/backlight-symbolic.png"
  172. theme["notifications-area-symbolic"] = themes_path.."unity/icons/notifications-area-symbolic.png"
  173. theme["mpc-previous-symbolic"] = themes_path.."unity/icons/mpc-previous-symbolic.png"
  174. theme["mpc-play-symbolic"] = themes_path.."unity/icons/mpc-play-symbolic.png"
  175. theme["mpc-pause-symbolic"] = themes_path.."unity/icons/mpc-pause-symbolic.png"
  176. theme["mpc-next-symbolic"] = themes_path.."unity/icons/mpc-next-symbolic.png"
  177. theme["action-poweroff-symbolic"] = themes_path.."unity/icons/action-poweroff-symbolic.png"
  178. theme["action-lock-screen-symbolic"] = themes_path.."unity/icons/action-lock-screen-symbolic.png"
  179. theme["action-suspend-symbolic"] = themes_path.."unity/icons/action-suspend-symbolic.png"
  180. theme.wallpaper = themes_path.."unity/background.png"
  181. theme.wallpapers_icon = themes_path.."unity/icons/wallpapers.png"
  182. -- Default icon for clients
  183. -- This one has to be baked as a surface to avoid memory leaks
  184. theme.icon_default = themes_path.."unity/icons/unknown-app.png"
  185. for k,v in pairs({
  186. "battery-caution-symbolic",
  187. "battery-empty-symbolic",
  188. "battery-full-symbolic",
  189. "battery-good-symbolic",
  190. "battery-low-symbolic",
  191. "battery-caution-charging-symbolic",
  192. "battery-empty-charging-symbolic",
  193. "battery-full-charging-symbolic",
  194. "battery-good-charging-symbolic",
  195. "battery-low-charging-symbolic",
  196. "battery-full-charged-symbolic",
  197. "battery-missing-symbolic",
  198. "ac-adapter-symbolic",
  199. "backlight-symbolic",
  200. "notifications-area-symbolic",
  201. "mpc-previous-symbolic",
  202. "mpc-play-symbolic",
  203. "mpc-pause-symbolic",
  204. "mpc-next-symbolic",
  205. "action-poweroff-symbolic",
  206. "action-lock-screen-symbolic",
  207. "action-suspend-symbolic",
  208. "wallpapers_icon",
  209. "icon_default"}) do
  210. if theme[v] and gears.filesystem.file_readable(theme[v]) then
  211. theme[v] = gears.color.recolor_image(theme[v],theme.fg_normal)
  212. end
  213. end
  214. -- Notification popups settings
  215. theme.notification_width = 240
  216. theme.notification_height = 60
  217. theme.widgets = {
  218. -- {{{ Widget base
  219. default = {
  220. container = {
  221. shape = function(cr,width,height)
  222. return require("gears").shape.rounded_rect(cr,width,height,2)
  223. end,
  224. bgimage_highlight = theme.bgimage_inset
  225. },
  226. button = {
  227. shape = theme.button_shape,
  228. onpress = function(widget)
  229. widget:set_bg(theme.bg_focus)
  230. end,
  231. onrelease = function(widget)
  232. widget:set_bg(theme.bg_normal)
  233. end
  234. },
  235. popup = {
  236. shape = function(cr,width,height)
  237. return gears.shape.rounded_rect(cr,width,height,4)
  238. end,
  239. root_shape = function(cr,width,height)
  240. return gears.shape.rounded_rect(cr,width,height,6)
  241. end,
  242. },
  243. titlebar = {
  244. root_shape = function(cr,width,height)
  245. return gears.shape.partially_rounded_rect(cr,width,height,
  246. true,true,false,false,6) end,
  247. root_bg_focus = theme.titlebar_bg_focus,
  248. root_bg_normal = theme.titlebar_bg_normal,
  249. top = 2,
  250. bottom = 2,
  251. left = 3,
  252. right = 3
  253. },
  254. wibar = {
  255. shape = function(cr,width,height)
  256. return gears.shape.rounded_rect(cr,width,height,0)
  257. end,
  258. height = 26,
  259. width = 60,
  260. margins = 3,
  261. stretch = true
  262. },
  263. slider = {
  264. shape = function(cr,width,height)
  265. return gears.shape.rounded_rect(cr,width,height,0)
  266. end,
  267. height = 20,
  268. width = 140,
  269. bg_focus = theme.bg_normal,
  270. bg_normal = theme.bg_focus,
  271. handle_width = 8,
  272. handle_border_color = theme.bg_normal,
  273. handle_border_width = 2,
  274. bar_height = 6,
  275. bar_border_color = theme.bg_focus,
  276. bar_border_width = 2
  277. },
  278. checkbox = {
  279. shape = gears.shape.circle,
  280. shape_border_width = 3,
  281. shaoe_border_color = theme.bg_focus
  282. },
  283. },
  284. -- }}}
  285. -- {{{ Menus
  286. generic_menu = {
  287. base = {
  288. spacing = 2,
  289. menu_slide = true
  290. },
  291. button = {
  292. bg_normal = theme.bg_highlight,
  293. onpress = function(widget)
  294. widget:set_bg(theme.bg_focus)
  295. end,
  296. onrelease = function(widget)
  297. widget:set_bg(theme.bg_highlight)
  298. end,
  299. forced_height = 20,
  300. forced_width = 160
  301. },
  302. },
  303. -- }}}
  304. -- {{{ Popup activating icons
  305. generic_iconified_widget = {
  306. button = {
  307. margins = 1,
  308. bg_normal = "#00000000",
  309. onpress = function(widget)
  310. widget:set_bg(theme.bg_normal)
  311. end,
  312. onrelease = function(widget)
  313. widget:set_bg("#00000000")
  314. end
  315. }
  316. },
  317. -- }}}
  318. -- {{{ Bars/Panels/Menu popups
  319. generic_composite_widget = {
  320. base = {
  321. spacing = 2
  322. }
  323. },
  324. -- }}}
  325. -- {{{ Status panel widgets
  326. generic_status_widget = {
  327. container = {
  328. margins = 2,
  329. bg_normal = "#00000000",
  330. },
  331. button = {
  332. margins = 1,
  333. bg_normal = "#00000000",
  334. onpress = function() end,
  335. onrelease = function() end,
  336. }
  337. },
  338. -- }}}
  339. -- {{{ Various button lists
  340. generic_button_list = {
  341. button = {
  342. bg_normal = theme.bg_highlight,
  343. onpress = function(widget)
  344. widget:set_bg(theme.bg_focus)
  345. end,
  346. onrelease = function(widget)
  347. widget:set_bg(theme.bg_highlight)
  348. end,
  349. forced_width = 20,
  350. forced_height = 20
  351. },
  352. base = {
  353. spacing = 2
  354. }
  355. },
  356. -- }}}
  357. -- {{{ All widgets that fit into a single line
  358. generic_oneline_widget = {
  359. container = {
  360. bgimage_normal = theme.bgimage_inset
  361. },
  362. button = {
  363. margins = 2,
  364. onpress = function(widget)
  365. widget:set_bg(theme.bg_normal)
  366. end,
  367. onrelease = function(widget)
  368. widget:set_bg("#00000000")
  369. end,
  370. bg_normal = "#00000000"
  371. }
  372. },
  373. -- }}}
  374. -- {{{ All kinds of widget popups
  375. generic_popup = {
  376. button = {
  377. width = 180,
  378. height = 40
  379. },
  380. article = {
  381. icon_size = 30
  382. },
  383. },
  384. -- }}}
  385. soundclown = {
  386. --[[ --Uncomment to leetify that MPC
  387. container = {
  388. bg_normal = "#0c0c0c",
  389. fg_normal = "#00FF00"
  390. },
  391. ]]
  392. base = {
  393. width = 140
  394. },
  395. },
  396. subpanel = {
  397. container = {
  398. bgimage_normal = theme.bgimage_inset,
  399. bg_normal = theme.bar_bg_inverted_normal,
  400. margins = 0,
  401. shape = function(cr,width,height)
  402. return gears.shape.rounded_rect(cr,width,height,8)
  403. end
  404. }
  405. },
  406. taglist = {
  407. base = {
  408. spacing = 2,
  409. layout = require("wibox").layout.flex.horizontal
  410. },
  411. button = {
  412. bgimage_focus = theme.bgimage_inset,
  413. bgimage_normal = theme.bgimage_outset,
  414. },
  415. container = {
  416. margins = 3
  417. }
  418. },
  419. tasklist = {
  420. button = {
  421. width = 160,
  422. height = 44,
  423. margins = 5,
  424. shape_focus = theme.button_shape,
  425. shape_normal = theme.button_shape,
  426. shape_urgent = theme.button_shape,
  427. shape_minimize = theme.button_shape,
  428. bg_normal = theme.button_bg_normal,
  429. bg_focus = theme.button_bg_focus,
  430. bg_urgent = theme.bg_urgent,
  431. bg_minimize = theme.bg_minimize,
  432. shape_border_color_normal = theme.bar_border_color,
  433. shape_border_color_focus = theme.bar_border_color,
  434. shape_border_color_urgent = theme.bar_border_color,
  435. shape_border_color_minimize = theme.bar_border_color,
  436. shape_border_width_normal = dpi(1),
  437. shape_border_width_focus = dpi(1),
  438. shape_border_width_urgent = dpi(1),
  439. shape_border_width_minimize = dpi(1),
  440. }
  441. },
  442. launcher = {
  443. button = {
  444. margins = 5,
  445. bg_normal = theme.button_bg_normal,
  446. bg_focus = theme.button_bg_focus,
  447. shape_border_width = dpi(1),
  448. shape_border_color = theme.bar_border_color,
  449. onpress = function(widget)
  450. widget:set_bg(theme.button_bg_focus)
  451. end,
  452. onrelease = function(widget)
  453. widget:set_bg(theme.button_bg_normal)
  454. end
  455. }
  456. },
  457. lockscreen = {
  458. popup = {
  459. margins = 0
  460. }
  461. },
  462. lockbar = {
  463. base = {
  464. height = 22
  465. }
  466. },
  467. lockpanel = {
  468. base = {
  469. icon_height = 60,
  470. icon_width = 60,
  471. panel_height = 300,
  472. panel_width = 200,
  473. panel_bgimage = theme.bgimage_outset
  474. },
  475. container = {
  476. shape = function(cr,width,height)
  477. return gears.shape.rounded_rect(cr,width,height,8)
  478. end,
  479. shape_border_color = theme.bg_highlight,
  480. shape_border_width = dpi(2)
  481. }
  482. },
  483. systray = {
  484. container = {
  485. margins = 2,
  486. shape = function(cr,width,height)
  487. return gears.shape.rounded_rect(cr,width,height,4)
  488. end,
  489. shape_border_color = theme.bg_normal,
  490. shape_border_width = dpi(2)
  491. }
  492. },
  493. lock_clock = {
  494. textbox = {
  495. font = "Ubuntu Mono 20"
  496. }
  497. },
  498. titlebar = {
  499. titlebar_top = {
  500. onfocus = function(titlebar)
  501. local root = titlebar:get_children_by_id("titlebar_root")[1]
  502. root:set_bg(theme.titlebar_bg_focus)
  503. root:set_shape(function(cr,width,height)
  504. return gears.shape.partially_rounded_rect(cr,width,height,
  505. true,true,false,false,6) end)
  506. end,
  507. onunfocus = function(titlebar)
  508. local root = titlebar:get_children_by_id("titlebar_root")[1]
  509. root:set_bg(theme.titlebar_bg_normal)
  510. root:set_shape(function(cr,width,height)
  511. return gears.shape.partially_rounded_rect(cr,width,height,
  512. true,true,false,false,6) end)
  513. end,
  514. bg_focus = "#00000000",
  515. bg_normal = "#00000000",
  516. fg_focus = "#FAFAFA",
  517. fg_normal = theme.fg_normal,
  518. size = 22,
  519. spacing = 1
  520. },
  521. titlebar_left = {
  522. size = 2,
  523. bg_focus = "#3C3B37",
  524. bg_normal = "#3C3B37",
  525. },
  526. titlebar_right = {
  527. size = 2,
  528. bg_focus = "#3C3B37",
  529. bg_normal = "#3C3B37",
  530. },
  531. titlebar_bottom = {
  532. size = 2,
  533. bg_focus = "#3C3B37",
  534. bg_normal = "#3C3B37",
  535. }
  536. },
  537. wibar = {
  538. wibar_top = {
  539. bg_normal = theme.bar_bg_normal,
  540. fg_normal = theme.fg_normal,
  541. size = 22,
  542. },
  543. wibar_left = {
  544. bg_normal = "#0D0D0966",
  545. border_width = dpi(1),
  546. border_color = "#26262666"
  547. }
  548. }
  549. }
  550. local wibox = require("wibox")
  551. theme.templates = {
  552. templates = {
  553. titlebar = function(style)
  554. return function(layout,options)
  555. local margins = style.titlebar.margins
  556. if (style.titlebar.left or
  557. style.titlebar.right or
  558. style.titlebar.bottom or
  559. style.titlebar.top) then
  560. margins = nil
  561. end
  562. return {
  563. {
  564. gears.table.join({
  565. layout,
  566. margins = margins,
  567. layout = wibox.container.margin,
  568. left = style.titlebar.left,
  569. right = style.titlebar.right,
  570. bottom = style.titlebar.bottom,
  571. top = style.titlebar.top
  572. },options or {}),
  573. bgimage = style.titlebar.root_bgimage_normal,
  574. bg = style.titlebar.root_bg_normal,
  575. fg = style.titlebar.root_fg_normal,
  576. shape = style.titlebar.root_shape,
  577. shape_border_color = style.titlebar.root_shape_border_color,
  578. shape_border_width = style.titlebar.root_shape_border_width,
  579. widget = wibox.container.background,
  580. id = "titlebar_root"
  581. },
  582. layout = wibox.container.margin,
  583. left = style.titlebar.root_margin_left,
  584. right = style.titlebar.root_margin_right,
  585. top = style.titlebar.root_margin_top,
  586. bottom = style.titlebar.root_margin_bottom
  587. }
  588. end
  589. end,
  590. popup = function(style)
  591. return function(widget,options)
  592. return gears.table.join({
  593. widget = {
  594. {
  595. widget,
  596. margins = style.popup.margins,
  597. layout = wibox.container.margin
  598. },
  599. bg = style.popup.bg_normal,
  600. shape = style.popup.root_shape,
  601. widget = wibox.container.background
  602. },
  603. bg = "#00000000",
  604. shape = style.popup.shape,
  605. visible = false,
  606. ontop = true
  607. },options or {})
  608. end
  609. end
  610. }
  611. }
  612. return theme
  613. -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80