Skip to content

Commit

Permalink
feat(config): add lightness option for transparent bg (#75)
Browse files Browse the repository at this point in the history
The background usually becomes lighter when transparent background is enabled. The default is something that works relatively well for the types of wallpapers that I use, while still preserving the style and readability of the colorset quite well.
  • Loading branch information
ramojus authored Nov 2, 2024
1 parent 5dcfdfe commit 21089ad
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
7 changes: 7 additions & 0 deletions lua/mellifluous/colors/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,13 @@ function M.get_colors()

colors = apply_color_overrides(colors)
ensure_correct_color_types(colors)
if
config.transparent_background
and config.transparent_background.lightness
and type(config.transparent_background.lightness) == "function"
then
colors.bg = colors.bg:with_lightness(config.transparent_background.lightness(colors.bg))
end

colors = require("mellifluous.colors.shades").extend_with_shades(colors)

Expand Down
19 changes: 19 additions & 0 deletions lua/mellifluous/config.lua
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,25 @@ local function get_default_config()
},
transparent_background = {
enabled = false,
lightness = function(bg) -- used for bg shades
-- This method tries to keep brighter colorsets bright and
-- dimmer colorsets dim and still lighten the shades up so that
-- the colorsets have more chance to look good with transparent
-- background on brighter wallpapers.
local old_lightness = bg:get_hsl().l
local threshold = 20
local baseline = 10
if old_lightness < threshold then
-- We will assume that the dimmest of transparent
-- background over users wallpaper is at least of baseline
-- lightness. Presuming old range is [0, threshold], let's
-- position the lightness relatively in a new range of
-- [baseline, threshold].
local position = old_lightness / threshold
local new_lightness = baseline + ((threshold - baseline) * position)
return new_lightness
end
end,
floating_windows = true,
telescope = true,
file_tree = true,
Expand Down

0 comments on commit 21089ad

Please sign in to comment.