mirror of
https://github.com/awesomeWM/awesome
synced 2024-11-17 07:47:41 +01:00
04c757322c
The default `rc.lua` was using the focus/unfocus signals to set the border color along with `awful.rules`. This logic block was no longer aligned with the rest of `rc.lua` since it was the only place where `beautiful` variables where only used by `rc.lua`. On top of this, the new request handler also has extra contexts for the urgent and floating/maximixed use cases. So it can be used by themes to implement much smarter borders than just focus based ones. They were previously limited by the fact most of the (un-monkey-patchable) logic was in `rc.lua`. Note that this commit also shuffle the awful.rules order between the titlebar and the border and changes the tests accordignly. After some consideration, I came to the conclusion the previous behavior was bogus and the fact that the placement tests required to know about the titlebar height is simply a proof of that. The change was required in this commit because since the border is no longer in the default rules, a new buggy edge case surfaced.
134 lines
4.2 KiB
Lua
134 lines
4.2 KiB
Lua
---------------------------------------------
|
|
-- Awesome theme which follows xrdb config --
|
|
-- by Yauhen Kirylau --
|
|
---------------------------------------------
|
|
|
|
local theme_assets = require("beautiful.theme_assets")
|
|
local xresources = require("beautiful.xresources")
|
|
local dpi = xresources.apply_dpi
|
|
local xrdb = xresources.get_current_theme()
|
|
local gfs = require("gears.filesystem")
|
|
local themes_path = gfs.get_themes_dir()
|
|
|
|
-- inherit default theme
|
|
local theme = dofile(themes_path.."default/theme.lua")
|
|
-- load vector assets' generators for this theme
|
|
|
|
theme.font = "sans 8"
|
|
|
|
theme.bg_normal = xrdb.background
|
|
theme.bg_focus = xrdb.color12
|
|
theme.bg_urgent = xrdb.color9
|
|
theme.bg_minimize = xrdb.color8
|
|
theme.bg_systray = theme.bg_normal
|
|
|
|
theme.fg_normal = xrdb.foreground
|
|
theme.fg_focus = theme.bg_normal
|
|
theme.fg_urgent = theme.bg_normal
|
|
theme.fg_minimize = theme.bg_normal
|
|
|
|
theme.useless_gap = dpi(3)
|
|
theme.border_width = dpi(2)
|
|
theme.border_color_normal = xrdb.color0
|
|
theme.border_color_active = theme.bg_focus
|
|
theme.border_color_marked = xrdb.color10
|
|
|
|
-- There are other variable sets
|
|
-- overriding the default one when
|
|
-- defined, the sets are:
|
|
-- taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile]
|
|
-- tasklist_[bg|fg]_[focus|urgent]
|
|
-- titlebar_[bg|fg]_[normal|focus]
|
|
-- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
|
|
-- mouse_finder_[color|timeout|animate_timeout|radius|factor]
|
|
-- Example:
|
|
--theme.taglist_bg_focus = "#ff0000"
|
|
|
|
theme.tooltip_fg = theme.fg_normal
|
|
theme.tooltip_bg = theme.bg_normal
|
|
|
|
-- Variables set for theming the menu:
|
|
-- menu_[bg|fg]_[normal|focus]
|
|
-- menu_[border_color|border_width]
|
|
theme.menu_submenu_icon = themes_path.."default/submenu.png"
|
|
theme.menu_height = dpi(16)
|
|
theme.menu_width = dpi(100)
|
|
|
|
-- You can add as many variables as
|
|
-- you wish and access them by using
|
|
-- beautiful.variable in your rc.lua
|
|
--theme.bg_widget = "#cc0000"
|
|
|
|
-- Recolor Layout icons:
|
|
theme = theme_assets.recolor_layout(theme, theme.fg_normal)
|
|
|
|
-- Recolor titlebar icons:
|
|
--
|
|
local function darker(color_value, darker_n)
|
|
local result = "#"
|
|
for s in color_value:gmatch("[a-fA-F0-9][a-fA-F0-9]") do
|
|
local bg_numeric_value = tonumber("0x"..s) - darker_n
|
|
if bg_numeric_value < 0 then bg_numeric_value = 0 end
|
|
if bg_numeric_value > 255 then bg_numeric_value = 255 end
|
|
result = result .. string.format("%2.2x", bg_numeric_value)
|
|
end
|
|
return result
|
|
end
|
|
theme = theme_assets.recolor_titlebar(
|
|
theme, theme.fg_normal, "normal"
|
|
)
|
|
theme = theme_assets.recolor_titlebar(
|
|
theme, darker(theme.fg_normal, -60), "normal", "hover"
|
|
)
|
|
theme = theme_assets.recolor_titlebar(
|
|
theme, xrdb.color1, "normal", "press"
|
|
)
|
|
theme = theme_assets.recolor_titlebar(
|
|
theme, theme.fg_focus, "focus"
|
|
)
|
|
theme = theme_assets.recolor_titlebar(
|
|
theme, darker(theme.fg_focus, -60), "focus", "hover"
|
|
)
|
|
theme = theme_assets.recolor_titlebar(
|
|
theme, xrdb.color1, "focus", "press"
|
|
)
|
|
|
|
-- 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 = nil
|
|
|
|
-- Generate Awesome icon:
|
|
theme.awesome_icon = theme_assets.awesome_icon(
|
|
theme.menu_height, theme.bg_focus, theme.fg_focus
|
|
)
|
|
|
|
-- Generate taglist squares:
|
|
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
|
|
)
|
|
|
|
-- Try to determine if we are running light or dark colorscheme:
|
|
local bg_numberic_value = 0;
|
|
for s in theme.bg_normal:gmatch("[a-fA-F0-9][a-fA-F0-9]") do
|
|
bg_numberic_value = bg_numberic_value + tonumber("0x"..s);
|
|
end
|
|
local is_dark_bg = (bg_numberic_value < 383)
|
|
|
|
-- Generate wallpaper:
|
|
local wallpaper_bg = xrdb.color8
|
|
local wallpaper_fg = xrdb.color7
|
|
local wallpaper_alt_fg = xrdb.color12
|
|
if not is_dark_bg then
|
|
wallpaper_bg, wallpaper_fg = wallpaper_fg, wallpaper_bg
|
|
end
|
|
theme.wallpaper = function(s)
|
|
return theme_assets.wallpaper(wallpaper_bg, wallpaper_fg, wallpaper_alt_fg, s)
|
|
end
|
|
|
|
return theme
|
|
|
|
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|