summaryrefslogtreecommitdiff
path: root/awesome/lib/beautiful/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'awesome/lib/beautiful/init.lua')
-rw-r--r--awesome/lib/beautiful/init.lua217
1 files changed, 0 insertions, 217 deletions
diff --git a/awesome/lib/beautiful/init.lua b/awesome/lib/beautiful/init.lua
deleted file mode 100644
index 0e72cbc..0000000
--- a/awesome/lib/beautiful/init.lua
+++ /dev/null
@@ -1,217 +0,0 @@
-----------------------------------------------------------------------------
---- Theme library.
---
--- @author Damien Leone <damien.leone@gmail.com>
--- @author Julien Danjou <julien@danjou.info>
--- @copyright 2008-2009 Damien Leone, Julien Danjou
--- @module beautiful
-----------------------------------------------------------------------------
-
--- Grab environment
-local os = os
-local pairs = pairs
-local type = type
-local dofile = dofile
-local setmetatable = setmetatable
-local lgi = require("lgi")
-local Pango = lgi.Pango
-local PangoCairo = lgi.PangoCairo
-local gears_debug = require("gears.debug")
-local protected_call = require("gears.protected_call")
-
-local xresources = require("beautiful.xresources")
-
-local beautiful = { xresources = xresources, mt = {} }
-
--- Local data
-local theme = {}
-local descs = setmetatable({}, { __mode = 'k' })
-local fonts = setmetatable({}, { __mode = 'v' })
-local active_font
-
---- The default font.
--- @beautiful beautiful.font
-
--- The default background color.
--- @beautiful beautiful.bg_normal
-
--- The default focused element background color.
--- @beautiful beautiful.bg_focus
-
--- The default urgent element background color.
--- @beautiful beautiful.bg_urgent
-
--- The default minimized element background color.
--- @beautiful beautiful.bg_minimize
-
--- The system tray background color.
--- Please note that only solid colors are currently supported.
--- @beautiful beautiful.bg_systray
-
--- The default focused element foreground (text) color.
--- @beautiful beautiful.fg_normal
-
--- The default focused element foreground (text) color.
--- @beautiful beautiful.fg_focus
-
--- The default urgent element foreground (text) color.
--- @beautiful beautiful.fg_urgent
-
--- The default minimized element foreground (text) color.
--- @beautiful beautiful.fg_minimize
-
---- The gap between clients.
--- @beautiful beautiful.useless_gap
--- @param[opt=0] number
-
---- The client border width.
--- @beautiful beautiful.border_width
-
---- The default clients border width.
--- Note that only solid colors are supported.
--- @beautiful beautiful.border_normal
-
---- The focused client border width.
--- Note that only solid colors are supported.
--- @beautiful beautiful.border_focus
-
---- The marked clients border width.
--- Note that only solid colors are supported.
--- @beautiful beautiful.border_marked
-
---- The wallpaper path.
--- @beautiful beautiful.wallpaper
-
--- The icon theme name.
--- It has to be a directory in `/usr/share/icons` or an XDG icon folder.
--- @beautiful beautiful.icon_theme
-
---- The Awesome icon path.
--- @beautiful beautiful.awesome_icon
-
---- Load a font from a string or a font description.
---
--- @see https://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string
--- @tparam string|lgi.Pango.FontDescription name Font, which can be a
--- string or a lgi.Pango.FontDescription.
--- @treturn table A table with `name`, `description` and `height`.
-local function load_font(name)
- name = name or active_font
- if name and type(name) ~= "string" then
- if descs[name] then
- name = descs[name]
- else
- name = name:to_string()
- end
- end
- if fonts[name] then
- return fonts[name]
- end
-
- -- Load new font
- local desc = Pango.FontDescription.from_string(name)
- local ctx = PangoCairo.font_map_get_default():create_context()
- ctx:set_resolution(beautiful.xresources.get_dpi())
-
- -- Apply default values from the context (e.g. a default font size)
- desc:merge(ctx:get_font_description(), false)
-
- -- Calculate font height.
- local metrics = ctx:get_metrics(desc, nil)
- local height = math.ceil((metrics:get_ascent() + metrics:get_descent()) / Pango.SCALE)
-
- local font = { name = name, description = desc, height = height }
- fonts[name] = font
- descs[desc] = name
- return font
-end
-
---- Set an active font
---
--- @param name The font
-local function set_font(name)
- active_font = load_font(name).name
-end
-
---- Get a font description.
---
--- See https://developer.gnome.org/pango/stable/pango-Fonts.html#PangoFontDescription.
--- @tparam string|lgi.Pango.FontDescription name The name of the font.
--- @treturn lgi.Pango.FontDescription
-function beautiful.get_font(name)
- return load_font(name).description
-end
-
---- Get a new font with merged attributes, based on another one.
---
--- See https://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string.
--- @tparam string|Pango.FontDescription name The base font.
--- @tparam string merge Attributes that should be merged, e.g. "bold".
--- @treturn lgi.Pango.FontDescription
-function beautiful.get_merged_font(name, merge)
- local font = beautiful.get_font(name)
- merge = Pango.FontDescription.from_string(merge)
- local merged = font:copy_static()
- merged:merge(merge, true)
- return beautiful.get_font(merged:to_string())
-end
-
---- Get the height of a font.
---
--- @param name Name of the font
-function beautiful.get_font_height(name)
- return load_font(name).height
-end
-
---- Init function, should be runned at the beginning of configuration file.
--- @tparam string|table config The theme to load. It can be either the path to
--- the theme file (returning a table) or directly the table
--- containing all the theme values.
-function beautiful.init(config)
- if config then
- local homedir = os.getenv("HOME")
-
- -- If `config` is the path to a theme file, run this file,
- -- otherwise if it is a theme table, save it.
- if type(config) == 'string' then
- -- Expand the '~' $HOME shortcut
- config = config:gsub("^~/", homedir .. "/")
- theme = protected_call(dofile, config)
- elseif type(config) == 'table' then
- theme = config
- end
-
- if theme then
- -- expand '~'
- if homedir then
- for k, v in pairs(theme) do
- if type(v) == "string" then theme[k] = v:gsub("^~/", homedir .. "/") end
- end
- end
-
- if theme.font then set_font(theme.font) end
- else
- return gears_debug.print_error("beautiful: error loading theme file " .. config)
- end
- else
- return gears_debug.print_error("beautiful: error loading theme: no theme specified")
- end
-end
-
---- Get the current theme.
---
--- @treturn table The current theme table.
-function beautiful.get()
- return theme
-end
-
-function beautiful.mt:__index(k)
- return theme[k]
-end
-
--- Set the default font
-set_font("sans 8")
-
-return setmetatable(beautiful, beautiful.mt)
-
--- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80