awesome-copycats/themes/blackburn/theme.lua

271 lines
11 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[
Blackburn Awesome WM theme 3.0
github.com/copycat-killer
--]]
local gears = require("gears")
local lain = require("lain")
local awful = require("awful")
local wibox = require("wibox")
local os = { getenv = os.getenv }
local theme = {}
theme.dir = os.getenv("HOME") .. "/.config/awesome/themes/blackburn"
theme.wallpaper = theme.dir .. "/wall.png"
theme.font = "Misc Tamsyn 10.5"
theme.taglist_font = "Icons 10"
theme.fg_normal = "#D7D7D7"
theme.fg_focus = "#F6784F"
theme.bg_normal = "#060606"
theme.bg_focus = "#060606"
theme.fg_urgent = "#CC9393"
theme.bg_urgent = "#2A1F1E"
theme.border_width = 1
theme.border_normal = "#0E0E0E"
theme.border_focus = "#F79372"
theme.taglist_fg_focus = "#F6784F"
theme.taglist_bg_focus = "#060606"
theme.tasklist_fg_focus = "#F6784F"
theme.tasklist_bg_focus = "#060606"
theme.menu_height = 16
theme.menu_width = 130
theme.menu_submenu_icon = theme.dir .. "/icons/submenu.png"
theme.awesome_icon = theme.dir .."/icons/awesome.png"
theme.taglist_squares_sel = theme.dir .. "/icons/square_sel.png"
theme.taglist_squares_unsel = theme.dir .. "/icons/square_unsel.png"
theme.layout_tile = theme.dir .. "/icons/tile.png"
theme.layout_tileleft = theme.dir .. "/icons/tileleft.png"
theme.layout_tilebottom = theme.dir .. "/icons/tilebottom.png"
theme.layout_tiletop = theme.dir .. "/icons/tiletop.png"
theme.layout_fairv = theme.dir .. "/icons/fairv.png"
theme.layout_fairh = theme.dir .. "/icons/fairh.png"
theme.layout_spiral = theme.dir .. "/icons/spiral.png"
theme.layout_dwindle = theme.dir .. "/icons/dwindle.png"
theme.layout_max = theme.dir .. "/icons/max.png"
theme.layout_fullscreen = theme.dir .. "/icons/fullscreen.png"
theme.layout_magnifier = theme.dir .. "/icons/magnifier.png"
theme.layout_floating = theme.dir .. "/icons/floating.png"
theme.tasklist_plain_task_name = true
theme.tasklist_disable_icon = true
theme.useless_gap = 0
theme.titlebar_close_button_focus = theme.dir .. "/icons/titlebar/close_focus.png"
theme.titlebar_close_button_normal = theme.dir .. "/icons/titlebar/close_normal.png"
theme.titlebar_ontop_button_focus_active = theme.dir .. "/icons/titlebar/ontop_focus_active.png"
theme.titlebar_ontop_button_normal_active = theme.dir .. "/icons/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_inactive = theme.dir .. "/icons/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_inactive = theme.dir .. "/icons/titlebar/ontop_normal_inactive.png"
theme.titlebar_sticky_button_focus_active = theme.dir .. "/icons/titlebar/sticky_focus_active.png"
theme.titlebar_sticky_button_normal_active = theme.dir .. "/icons/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_inactive = theme.dir .. "/icons/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_inactive = theme.dir .. "/icons/titlebar/sticky_normal_inactive.png"
theme.titlebar_floating_button_focus_active = theme.dir .. "/icons/titlebar/floating_focus_active.png"
theme.titlebar_floating_button_normal_active = theme.dir .. "/icons/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_inactive = theme.dir .. "/icons/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_inactive = theme.dir .. "/icons/titlebar/floating_normal_inactive.png"
theme.titlebar_maximized_button_focus_active = theme.dir .. "/icons/titlebar/maximized_focus_active.png"
theme.titlebar_maximized_button_normal_active = theme.dir .. "/icons/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_inactive = theme.dir .. "/icons/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_inactive = theme.dir .. "/icons/titlebar/maximized_normal_inactive.png"
awful.util.tagnames = { "ƀ", "Ƅ", "Ɗ", "ƈ", "ƙ" }
local markup = lain.util.markup
local separators = lain.util.separators
local gray = "#9E9C9A"
-- Textclock
local mytextclock = wibox.widget.textclock(" %H:%M ")
mytextclock.font = theme.font
-- Calendar
lain.widget.calendar({
attach_to = { mytextclock },
notification_preset = {
font = "Misc Tamsyn 11",
fg = theme.fg_normal,
bg = theme.bg_normal
}})
--[[ Mail IMAP check
-- commented because it needs to be set before use
local mail = lain.widget.imap({
timeout = 180,
server = "server",
mail = "mail",
password = "keyring get mail",
notification_preset = { fg = white }
settings = function()
mail = ""
count = ""
if mailcount > 0 then
mail = "Mail "
count = mailcount .. " "
end
widget:set_markup(markup.font(theme.font, markup(gray, mail) .. count))
end
})
--]]
-- MPD
theme.mpd = lain.widget.mpd({
settings = function()
mpd_notification_preset.fg = white
artist = mpd_now.artist .. " "
title = mpd_now.title .. " "
if mpd_now.state == "pause" then
artist = "mpd "
title = "paused "
elseif mpd_now.state == "stop" then
artist = ""
title = ""
end
widget:set_markup(markup.font(theme.font, markup(gray, artist) .. title .. " "))
end
})
-- /home fs
theme.fs = lain.widget.fs({
partition = "/home",
options = "--exclude-type=tmpfs",
notification_preset = { fg = white, bg = theme.bg_normal, font = "Misc Tamsyn 10.5" },
settings = function()
fs_header = ""
fs_p = ""
if tonumber(fs_now.used) >= 90 then
fs_header = " Hdd "
fs_p = fs_now.used
end
widget:set_markup(markup.font(theme.font, markup(gray, fs_header) .. fs_p))
end
})
-- Battery
local bat = lain.widget.bat({
settings = function()
bat_header = " Bat "
bat_p = bat_now.perc .. " "
widget:set_markup(markup.font(theme.font, markup(gray, bat_header) .. bat_p))
end
})
-- ALSA volume
theme.volume = lain.widget.alsa({
--togglechannel = "IEC958,3",
settings = function()
header = " Vol "
vlevel = volume_now.level
if volume_now.status == "off" then
vlevel = vlevel .. "M "
else
vlevel = vlevel .. " "
end
widget:set_markup(markup.font(theme.font, markup(gray, header) .. vlevel))
end
})
-- Weather
theme.weather = lain.widget.weather({
city_id = 2643743, -- placeholder (London)
settings = function()
units = math.floor(weather_now["main"]["temp"])
widget:set_markup(" " .. units .. " ")
end
})
-- Separators
local first = wibox.widget.textbox('<span font="Misc Tamsyn 4"> </span>')
local arrl_pre = separators.arrow_right("alpha", "#1A1A1A")
local arrl_post = separators.arrow_right("#1A1A1A", "alpha")
local barheight = 18
local barcolor = gears.color({
type = "linear",
from = { barheight, 0 },
to = { barheight, barheight },
stops = { {0, theme.bg_focus }, {0.8, theme.border_normal}, {1, "#1A1A1A"} }
})
theme.titlebar_bg = barcolor
theme.titlebar_bg_focus = gears.color({
type = "linear",
from = { barheight, 0 },
to = { barheight, barheight },
stops = { {0, theme.bg_normal}, {0.5, theme.border_normal}, {1, "#492417"} }
})
function theme.at_screen_connect(s)
-- Quake application
s.quake = lain.util.quake({ app = awful.util.terminal })
-- 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)
-- 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(s, awful.widget.taglist.filter.all, awful.util.taglist_buttons)
-- Create a tasklist widget
s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, awful.util.tasklist_buttons, { bg_normal = barcolor, bg_focus = barcolor })
-- Create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s, height = 18, bg = barcolor })
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
first,
s.mytaglist,
arrl_pre,
s.mylayoutbox,
arrl_post,
s.mypromptbox,
first,
},
s.mytasklist, -- Middle widget
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
wibox.widget.systray(),
first,
theme.mpd.widget,
--mail.widget,
theme.weather.icon,
theme.weather.widget,
theme.fs.widget,
bat,
theme.volume.widget,
mytextclock,
},
}
end
return theme