135 lines
4.7 KiB
Lua
135 lines
4.7 KiB
Lua
--------------------------------------------------
|
|
-- ██████╗██████╗ ██╗ ██╗██╗ ██╗ █████╗ --
|
|
-- ██╔════╝██╔══██╗╚██╗ ██╔╝██║ ██║██╔══██╗ --
|
|
-- ██║ ██████╔╝ ╚████╔╝ ██║ ██║███████║ --
|
|
-- ██║ ██╔══██╗ ╚██╔╝ ██║ ██║██╔══██║ --
|
|
-- ╚██████╗██║ ██║ ██║ ███████╗██║██║ ██║ --
|
|
-- ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝╚═╝ ╚═╝ --
|
|
--------------------------------------------------
|
|
local awful = require('awful')
|
|
local beautiful = require('beautiful')
|
|
local dpi = beautiful.xresources.apply_dpi
|
|
local gshape = require('gears.shape')
|
|
local gwallpaper = require('gears.wallpaper')
|
|
local gfilesystem = require('gears.filesystem')
|
|
local config = require('src.tools.config')
|
|
|
|
local capi = {
|
|
awesome = awesome,
|
|
screen = screen,
|
|
}
|
|
|
|
local function get_userconfig()
|
|
local data = config.read_json(gfilesystem.get_xdg_config_home() .. 'crylia_theme/crylia_theme.json')
|
|
if not data then
|
|
print('Warning: No crylia_theme.json found, using default config')
|
|
|
|
data = config.read_json('/etc/crylia_theme/crylia_theme.json')
|
|
end
|
|
|
|
assert(type(data) == 'table', 'Invalid config file (not a table)!')
|
|
|
|
return data
|
|
end
|
|
|
|
local function get_colorscheme()
|
|
local data = config.read_json(gfilesystem.get_xdg_config_home() .. 'crylia_theme/one_dark.json')
|
|
if not data then
|
|
print('Warning: No theme.json found, using default config')
|
|
|
|
data = config.read_json('/etc/crylia_theme/theme.json')
|
|
end
|
|
|
|
assert(type(data) == 'table', 'Invalid config file (not a table)!')
|
|
|
|
return data
|
|
end
|
|
|
|
local theme = {}
|
|
|
|
awesome.set_preferred_icon_size(128)
|
|
|
|
theme.user_config = get_userconfig()
|
|
theme.colorscheme = get_colorscheme()
|
|
|
|
theme.shape = {}
|
|
for i = 2, 30, 2 do
|
|
theme.shape[i] = function(w, h, cr)
|
|
gshape.rounded_rect(w, h, cr, dpi(i))
|
|
end
|
|
end
|
|
|
|
-- Default font, change it in user_config, not here.
|
|
theme.font = theme.user_config.font .. ' bold ' .. dpi(16)
|
|
|
|
--#region Client variables
|
|
theme.useless_gap = dpi(5)
|
|
theme.border_width = dpi(2)
|
|
theme.border_normal = theme.colorscheme.bg_1
|
|
theme.border_marked = theme.colorscheme.bg_red
|
|
--#endregion
|
|
|
|
--#region Tooltip variables
|
|
theme.tooltip_border_color = theme.colorscheme.border_color
|
|
theme.tooltip_bg = theme.colorscheme.bg
|
|
theme.tooltip_fg = theme.colorscheme.bg_teal
|
|
theme.tooltip_border_width = dpi(2)
|
|
theme.tooltip_gaps = dpi(15)
|
|
--#endregion
|
|
|
|
--#region Hotkeys variables
|
|
theme.hotkeys_bg = theme.colorscheme.bg
|
|
theme.hotkeys_fg = theme.colorscheme.fg
|
|
theme.hotkeys_border_width = dpi(2)
|
|
theme.hotkeys_border_color = theme.colorscheme.border_color
|
|
theme.hotkeys_modifiers_fg = theme.colorscheme.bg_teal
|
|
theme.hotkeys_description_font = theme.user_config.font
|
|
theme.hotkeys_font = theme.user_config.font
|
|
theme.hotkeys_group_margin = dpi(20)
|
|
theme.hotkeys_label_bg = theme.colorscheme.bg_teal
|
|
theme.hotkeys_label_fg = theme.colorscheme.bg
|
|
--#endregion
|
|
|
|
--#region Layout icons
|
|
local layout_path = gfilesystem.get_configuration_dir() .. 'src/assets/layout/'
|
|
|
|
theme.layout_cornerne = layout_path .. 'cornerne.png'
|
|
theme.layout_cornernw = layout_path .. 'cornernw.png'
|
|
theme.layout_cornerse = layout_path .. 'cornerse.png'
|
|
theme.layout_cornersw = layout_path .. 'cornersw.png'
|
|
theme.layout_dwindle = layout_path .. 'dwindle.png'
|
|
theme.layout_fairh = layout_path .. 'fairh.png'
|
|
theme.layout_fairv = layout_path .. 'fairv.png'
|
|
theme.layout_floating = layout_path .. 'floating.png'
|
|
theme.layout_fullscreen = layout_path .. 'fullscreen.png'
|
|
theme.layout_magnifier = layout_path .. 'magnifier.png'
|
|
theme.layout_max = layout_path .. 'max.png'
|
|
theme.layout_spiral = layout_path .. 'spiral.png'
|
|
theme.layout_tile = layout_path .. 'tile.png'
|
|
theme.layout_tilebottom = layout_path .. 'tilebottom.png'
|
|
theme.layout_tileleft = layout_path .. 'tileleft.png'
|
|
theme.layout_tiletop = layout_path .. 'tiletop.png'
|
|
--#endregion
|
|
|
|
theme.notification_spacing = dpi(20)
|
|
-- Systray theme variables
|
|
theme.bg_systray = theme.colorscheme.bg1
|
|
theme.systray_icon_spacing = dpi(10)
|
|
|
|
-- Wallpaper
|
|
beautiful.wallpaper = theme.user_config['wallpaper']
|
|
capi.screen.connect_signal('request::wallpaper', function(s)
|
|
if beautiful.wallpaper then
|
|
if type(beautiful.wallpaper) == 'string' then
|
|
gwallpaper.maximized(beautiful.wallpaper, s)
|
|
else
|
|
beautiful.wallpaper(s)
|
|
end
|
|
end
|
|
end)
|
|
|
|
beautiful.init(theme)
|
|
|
|
-- Load titlebar
|
|
--require('src.core.titlebar')()
|