dotfiles/awesome/themes/kadet/theme.lua
2020-05-17 19:54:41 +02:00

397 lines
16 KiB
Lua

local gears = require("gears")
local lain = require("lain")
local awful = require("awful")
local wibox = require("wibox")
local os, math, string = os, math, string
local fonts = {
mono_regular = "Jetbrains Mono Bold 8",
mono_bold = "Jetbrains Mono ExtraBold 8"
}
fonts.widget = "Jetbrains Mono Bold 7"
local colors = {
dark = "#161616",
light = "#dedede",
accent = "#ff9700",
attention = "#fc5d19",
transparent = "#00000000",
transparency = "30",
}
colors.background = colors.dark .. colors.transparency
colors.foreground = colors.dark
colors.widget_bg = colors.dark
local theme = {}
theme.dir = os.getenv("HOME") .. "/.config/awesome/themes/kadet"
theme.wallpaper = theme.dir .. "/wallpapers/kadet.png"
theme.font = fonts.mono_regular
theme.taglist_font = fonts.mono_bold
theme.tasklist_font = fonts.mono_regular
theme.bg_systray = colors.accent
theme.systray_icon_spacing = 8
theme.fg_normal = colors.light
theme.bg_normal = colors.dark .. "dd"
theme.fg_wibar = colors.dark
theme.bg_wibar = colors.background
theme.bg_focus = colors.dark
theme.fg_focus = colors.accent
theme.bg_urgent = colors.attention
theme.fg_urgent = colors.dark
theme.fg_widget = colors.light
theme.taglist_bg_focus = colors.dark
theme.taglist_fg_focus = colors.accent
theme.taglist_bg_occupied = colors.dark .. "40"
theme.taglist_fg_occupied = colors.dark
theme.taglist_bg_empty = colors.tramsparent
theme.taglist_fg_empty = colors.dark
theme.taglist_bg_urgent = "#C92132"
theme.taglist_fg_urgent = "#282828"
theme.tasklist_bg_normal = "#32302f"
theme.tasklist_fg_normal = "#ebdbb2"
theme.tasklist_bg_focus = "#32302f"
theme.tasklist_fg_focus = "#ebdbb2"
theme.tasklist_bg_urgent = "#C92132"
theme.tasklist_fg_urgent = "#32302f"
theme.border_width = 0
theme.border_normal = "#111111"
theme.border_focus = "#000000"
theme.border_marked = "#CC9393"
theme.titlebar_bg_normal = "#111111"
theme.titlebar_bg_focus = "#000000"
theme.titlebar_fg_normal = colors.white
theme.titlebar_fg_focus = colors.white
theme.menu_height = 24
theme.menu_width = 200
theme.notification_font = fonts.mono_regular
theme.notification_bg = colors.dark .. "dd"
theme.notification_fg = theme.fg_normal
theme.notification_border_width = 0
theme.notification_border_color = colors.accent
theme.notification_shape = gears.shape.rectangle
theme.notification_opacity = 1
theme.notification_margin = 30
--theme.warning = theme.dir .. "/icons/status/warning.png"
theme.notification_max_width = 500
theme.notification_icon_size = 64
--theme.notification_height = 200
theme.menu_submenu_icon = theme.dir .. "/icons/submenu.png"
theme.awesome_icon = theme.dir .. "/icons/awesome.png"
-- Layout icons
theme.layout_tile = theme.dir .. "/icons/layout/tileright.png"
theme.layout_tileleft = theme.dir .. "/icons/layout/tileleft.png"
theme.layout_tilebottom = theme.dir .. "/icons/layout/tilebottom.png"
theme.layout_tiletop = theme.dir .. "/icons/layout/tiletop.png"
theme.layout_fairv = theme.dir .. "/icons/layout/fairv.png"
theme.layout_fairh = theme.dir .. "/icons/layout/fairh.png"
theme.layout_spiral = theme.dir .. "/icons/layout/spiral.png"
theme.layout_centerwork = theme.dir .. "/icons/layout/centerwork.png"
theme.layout_dwindle = theme.dir .. "/icons/layout/dwindle.png"
theme.layout_max = theme.dir .. "/icons/layout/max.png"
theme.layout_fullscreen = theme.dir .. "/icons/layout/fullscreen.png"
theme.layout_magnifier = theme.dir .. "/icons/layout/magnifier.png"
theme.layout_floating = theme.dir .. "/icons/layout/floating.png"
theme.layout_cornerse = theme.dir .. "/icons/layout/cprmerse.png"
theme.layout_cornersw = theme.dir .. "/icons/layout/cornersw.png"
theme.layout_cornerne = theme.dir .. "/icons/layout/cprmerne.png"
theme.layout_cornernw = theme.dir .. "/icons/layout/cornernw.png"
theme.tasklist_disable_icon = true
theme.useless_gap = 3
theme.master_width_factor = 0.66
-- titlebar
theme.titlebar_close_button_focus = theme.dir .. "/icons/titlebar/close.png"
theme.titlebar_close_button_normal = theme.dir .. "/icons/titlebar/close-inactive.png"
theme.titlebar_ontop_button_focus_active = theme.dir .. "/icons/titlebar/top.png"
theme.titlebar_ontop_button_focus_inactive = theme.dir .. "/icons/titlebar/top-inactive.png"
theme.titlebar_sticky_button_focus_active = theme.dir .. "/icons/titlebar/sticky.png"
theme.titlebar_sticky_button_focus_inactive = theme.dir .. "/icons/titlebar/sticky-inactive.png"
theme.titlebar_floating_button_focus_active = theme.dir .. "/icons/titlebar/floating.png"
theme.titlebar_floating_button_focus_inactive = theme.dir .. "/icons/titlebar/floating-inactive.png"
theme.titlebar_maximized_button_focus_active = theme.dir .. "/icons/titlebar/maximized.png"
theme.titlebar_maximized_button_focus_inactive = theme.dir .. "/icons/titlebar/maximized-inactive.png"
local image = {}
function icon(dir, icon)
return {
layout = wibox.layout.margin,
top = 3, bottom = 3, left = 1, right = 1,
wibox.widget.imagebox(theme.dir .. "/icons/" .. dir .. "/" .. icon .. ".png")
}
end
-- systray
image.systray_start = icon("bar", "start")
image.systray_end = icon("bar", "end")
image.icons = {
cpu = icon("widget", "cpu"),
hdd = icon("widget", "hdd"),
mem = icon("widget", "memory"),
temp = icon("widget", "temp"),
}
-- colors
theme.green = "#00b159"
theme.red = "#d64d4d"
theme.yellow = "#cc9c00"
theme.blue = "#428bca"
theme.darkred = "#c92132"
theme.darkgreen = "#4d7358"
theme.darkyellow = "#f18e38"
theme.gray = "#5e5e5e"
theme.violet = "#8c8ccd"
theme.pink = "#B85C8A"
theme.black = theme.bg_normal
-- Panel
local markup = lain.util.markup
-- Widgets
local clock = awful.widget.textclock("<span font=\"" .. fonts.mono_bold .. "\" color=\"" .. colors.dark .. "\"> %H:%M </span>")
local clock_widget = wibox.container.background(wibox.container.margin(wibox.widget { clock, layout = wibox.layout.align.horizontal }, 0, 1), colors.transparent)
local date = awful.widget.textclock("<span font=\"" .. fonts.mono_bold .. "\" color=\"" .. colors.dark .. "\"> %a %d %b </span>")
local date_widget = wibox.container.background(wibox.container.margin(wibox.widget { date, layout = wibox.layout.align.horizontal }, 0, 1), colors.transparent)
-- Calendar
local calendar = lain.widget.calendar({
cal = "cal --color=always",
attach_to = { date_widget },
followtag = true,
notification_preset = {
font = fonts.mono_regular,
fg = theme.fg_normal,
bg = theme.bg_normal,
position = "top_middle",
screen = awful.mouse.screen,
}
})
-- MEM
local mem = lain.widget.mem({
settings = function()
widget:set_markup(markup.font(fonts.widget, markup.fg.color(theme.fg_widget, " " .. mem_now.used .. "MB [" .. mem_now.perc .. "%]")))
end
})
local mem_widget = wibox.widget { image.icons.mem, mem.widget, layout = wibox.layout.align.horizontal }
-- CPU
local cpu = lain.widget.cpu({
settings = function()
widget:set_markup(markup.font(fonts.widget, markup.fg.color(theme.fg_widget, " " .. cpu_now.usage .. "% ")))
end
})
local cpu_widget = wibox.widget { image.icons.cpu, cpu.widget, layout = wibox.layout.align.horizontal }
-- Coretemp (lain, average)
local temp_icon = wibox.widget.imagebox(theme.widget_temp)
local temp = lain.widget.temp({
settings = function()
widget:set_markup(markup.font(fonts.widget, markup.fg.color(theme.fg_widget, " " .. coretemp_now .. "° ")))
end
})
local temp_widget = wibox.widget { image.icons.temp, temp.widget, layout = wibox.layout.align.horizontal }
-- FS
local fs_icon = wibox.widget.imagebox(theme.widget_hdd)
local fs = lain.widget.fs({
notification_preset = { fg = theme.fg_normal, bg = theme.bg_normal, font = fonts.widget },
followtag = true,
settings = function()
local fsp = string.format(" %3.2f %s ", fs_now["/home"].free, fs_now["/home"].units)
widget:set_markup(markup.font(fonts.widget, markup.fg.color(theme.fg_widget, fsp)))
end
})
local fs_widget = wibox.widget { image.icons.hdd, fs.widget, layout = wibox.layout.align.horizontal }
function theme.connect(s)
-- Quake application
s.quake = lain.util.quake({
app = "ghostwriter",
followtag = true,
width = 0.5,
height = 1,
})
-- If wallpaper is a function, call it with the screen
local wallpaper = theme.wallpaper
if type(wallpaper) == "function" then
wallpaper = wallpaper(s)
end
gears.wallpaper.maximized(wallpaper, s, true)
-- Tags
--awful.tag(awful.util.tagnames, s, awful.layout.layouts[1])
layout = {
awful.layout.layouts[1],
awful.layout.layouts[1],
awful.layout.layouts[8],
awful.layout.layouts[7],
awful.layout.layouts[6],
awful.layout.layouts[1],
}
awful.tag({ " </> ", " >_ ", " web ", " & ", " etc ", " # " }, s, layout)
-- Create a promptbox for each screen
s.mypromptbox = awful.widget.prompt()
-- Create an imagebox widget which will contains an icon indicating which layout we're using.
-- We need one layoutbox per screen.
s.mylayoutbox = awful.widget.layoutbox(s)
s.mylayoutbox:buttons(awful.util.table.join(
awful.button({ }, 1, function () awful.layout.inc( 1) end),
awful.button({ }, 3, function () awful.layout.inc(-1) end),
awful.button({ }, 4, function () awful.layout.inc( 1) end),
awful.button({ }, 5, function () awful.layout.inc(-1) end)))
-- Create a taglist widget
s.mytaglist = awful.widget.taglist {
screen = s,
filter = awful.widget.taglist.filter.all,
style = {
shape = function(cr, width, height) return gears.shape.parallelogram(cr, width, height, width - 8) end
},
layout = {
spacing = 2,
layout = wibox.layout.fixed.horizontal
},
widget_template = {
{
{
{
id = 'text_role',
widget = wibox.widget.textbox,
},
layout = wibox.layout.fixed.horizontal,
},
left = 16,
right = 16,
widget = wibox.container.margin
},
id = 'background_role',
widget = wibox.container.background,
},
buttons = awful.util.taglist_buttons
}
-- Create a tasklist widget
--s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, awful.util.tasklist_buttons)
-- Create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s, height = 18, bg = theme.bg_wibar, fg = theme.fg_wibar, type = dock })
s.tray = wibox.widget.systray()
-- s.tray:setup {
-- layout = wibox.layout.margin,
-- widget = wibox.container.background,
-- bg = "#ff0000"
-- }
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
expand = 'none',
{ -- Left widgets
layout = wibox.layout.margin,
left = 8,
{
layout = wibox.layout.fixed.horizontal,
s.mytaglist,
s.mypromptbox,
}
},
-- s.mytasklist, -- Middle widget
{
layout = wibox.layout.fixed.horizontal,
date_widget,
},
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
{
layout = wibox.layout.margin,
right = -8,
{
widget = wibox.container.background,
shape = function (cr, w, h) gears.shape.parallelogram(cr, w, h, w - 8) end,
color = "#000000",
bg = "#000000",
{
layout = wibox.layout.margin,
left = 20, right = 20,
{
layout = wibox.layout.fixed.horizontal,
spacing = 8,
-- Fs widget
fs_widget,
-- Temp
temp_widget,
-- CPU widget
cpu_widget,
-- Mem widget
mem_widget,
}
}
},
},
-- tray
{
widget = wibox.container.background,
shape = function (cr, w, h) gears.shape.parallelogram(cr, w, h, w - 8) end,
bg = "#FF9800",
{
layout = wibox.layout.margin,
left = 8, right = 8,
{
layout = wibox.layout.fixed.horizontal,
s.tray,
clock_widget,
}
}
},
-- Layout box
{
layout = wibox.layout.margin,
left = -8, right = -8,
{
widget = wibox.container.background,
bg = "#000000",
shape = function (cr, w, h) gears.shape.parallelogram(cr, w, h, w - 8) end,
{
layout = wibox.layout.margin,
s.mylayoutbox,
left = 16,
right = 16,
top = 1,
bottom = 1,
}
}
},
},
}
end
return theme