1
0
Fork 0
mirror of https://github.com/lcpz/awesome-copycats.git synced 2024-10-22 20:41:22 +00:00
awesome-copycats/themes/powerarrow-dark/theme.lua
Jeferson Siqueira cde80cc06d Using string.format() on the net widget in powerarrow-dark.
As the net usage varies, so the numbers on the widget does. The problem is
that it makes the whole widget bar to go back and forth as the numbers change.
Adding a 'padding' number of zeroes reduces the number of 'moves' of the
widget row, and does not reduces the visibility of the widgets.
2019-11-10 16:20:21 +00:00

347 lines
15 KiB
Lua

--[[
Powerarrow Dark Awesome WM theme
github.com/lcpz
--]]
local gears = require("gears")
local lain = require("lain")
local awful = require("awful")
local wibox = require("wibox")
local dpi = require("beautiful.xresources").apply_dpi
local os = os
local my_table = awful.util.table or gears.table -- 4.{0,1} compatibility
local theme = {}
theme.dir = os.getenv("HOME") .. "/.config/awesome/themes/powerarrow-dark"
theme.wallpaper = theme.dir .. "/wall.png"
theme.font = "Terminus 9"
theme.fg_normal = "#DDDDFF"
theme.fg_focus = "#EA6F81"
theme.fg_urgent = "#CC9393"
theme.bg_normal = "#1A1A1A"
theme.bg_focus = "#313131"
theme.bg_urgent = "#1A1A1A"
theme.border_width = dpi(1)
theme.border_normal = "#3F3F3F"
theme.border_focus = "#7F7F7F"
theme.border_marked = "#CC9393"
theme.tasklist_bg_focus = "#1A1A1A"
theme.titlebar_bg_focus = theme.bg_focus
theme.titlebar_bg_normal = theme.bg_normal
theme.titlebar_fg_focus = theme.fg_focus
theme.menu_height = dpi(16)
theme.menu_width = dpi(140)
theme.menu_submenu_icon = theme.dir .. "/icons/submenu.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.widget_ac = theme.dir .. "/icons/ac.png"
theme.widget_battery = theme.dir .. "/icons/battery.png"
theme.widget_battery_low = theme.dir .. "/icons/battery_low.png"
theme.widget_battery_empty = theme.dir .. "/icons/battery_empty.png"
theme.widget_mem = theme.dir .. "/icons/mem.png"
theme.widget_cpu = theme.dir .. "/icons/cpu.png"
theme.widget_temp = theme.dir .. "/icons/temp.png"
theme.widget_net = theme.dir .. "/icons/net.png"
theme.widget_hdd = theme.dir .. "/icons/hdd.png"
theme.widget_music = theme.dir .. "/icons/note.png"
theme.widget_music_on = theme.dir .. "/icons/note_on.png"
theme.widget_vol = theme.dir .. "/icons/vol.png"
theme.widget_vol_low = theme.dir .. "/icons/vol_low.png"
theme.widget_vol_no = theme.dir .. "/icons/vol_no.png"
theme.widget_vol_mute = theme.dir .. "/icons/vol_mute.png"
theme.widget_mail = theme.dir .. "/icons/mail.png"
theme.widget_mail_on = theme.dir .. "/icons/mail_on.png"
theme.tasklist_plain_task_name = true
theme.tasklist_disable_icon = true
theme.useless_gap = dpi(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"
local markup = lain.util.markup
local separators = lain.util.separators
-- Textclock
local clockicon = wibox.widget.imagebox(theme.widget_clock)
local clock = awful.widget.watch(
"date +'%a %d %b %R'", 60,
function(widget, stdout)
widget:set_markup(" " .. markup.font(theme.font, stdout))
end
)
-- Calendar
theme.cal = lain.widget.cal({
attach_to = { clock },
notification_preset = {
font = "Terminus 10",
fg = theme.fg_normal,
bg = theme.bg_normal
}
})
-- Mail IMAP check
local mailicon = wibox.widget.imagebox(theme.widget_mail)
--[[ commented because it needs to be set before use
mailicon:buttons(my_table.join(awful.button({ }, 1, function () awful.spawn(mail) end)))
theme.mail = lain.widget.imap({
timeout = 180,
server = "server",
mail = "mail",
password = "keyring get mail",
settings = function()
if mailcount > 0 then
widget:set_markup(markup.font(theme.font, " " .. mailcount .. " "))
mailicon:set_image(theme.widget_mail_on)
else
widget:set_text("")
mailicon:set_image(theme.widget_mail)
end
end
})
--]]
-- MPD
local musicplr = awful.util.terminal .. " -title Music -g 130x34-320+16 -e ncmpcpp"
local mpdicon = wibox.widget.imagebox(theme.widget_music)
mpdicon:buttons(my_table.join(
awful.button({ modkey }, 1, function () awful.spawn.with_shell(musicplr) end),
awful.button({ }, 1, function ()
os.execute("mpc prev")
theme.mpd.update()
end),
awful.button({ }, 2, function ()
os.execute("mpc toggle")
theme.mpd.update()
end),
awful.button({ }, 3, function ()
os.execute("mpc next")
theme.mpd.update()
end)))
theme.mpd = lain.widget.mpd({
settings = function()
if mpd_now.state == "play" then
artist = " " .. mpd_now.artist .. " "
title = mpd_now.title .. " "
mpdicon:set_image(theme.widget_music_on)
elseif mpd_now.state == "pause" then
artist = " mpd "
title = "paused "
else
artist = ""
title = ""
mpdicon:set_image(theme.widget_music)
end
widget:set_markup(markup.font(theme.font, markup("#EA6F81", artist) .. title))
end
})
-- MEM
local memicon = wibox.widget.imagebox(theme.widget_mem)
local mem = lain.widget.mem({
settings = function()
widget:set_markup(markup.font(theme.font, " " .. mem_now.used .. "MB "))
end
})
-- CPU
local cpuicon = wibox.widget.imagebox(theme.widget_cpu)
local cpu = lain.widget.cpu({
settings = function()
widget:set_markup(markup.font(theme.font, " " .. cpu_now.usage .. "% "))
end
})
-- Coretemp
local tempicon = wibox.widget.imagebox(theme.widget_temp)
local temp = lain.widget.temp({
settings = function()
widget:set_markup(markup.font(theme.font, " " .. coretemp_now .. "°C "))
end
})
-- / fs
local fsicon = wibox.widget.imagebox(theme.widget_hdd)
--[[ commented because it needs Gio/Glib >= 2.54
theme.fs = lain.widget.fs({
notification_preset = { fg = theme.fg_normal, bg = theme.bg_normal, font = "Terminus 10" },
settings = function()
widget:set_markup(markup.font(theme.font, " " .. fs_now["/"].percentage .. "% "))
end
})
--]]
-- Battery
local baticon = wibox.widget.imagebox(theme.widget_battery)
local bat = lain.widget.bat({
settings = function()
if bat_now.status and bat_now.status ~= "N/A" then
if bat_now.ac_status == 1 then
baticon:set_image(theme.widget_ac)
elseif not bat_now.perc and tonumber(bat_now.perc) <= 5 then
baticon:set_image(theme.widget_battery_empty)
elseif not bat_now.perc and tonumber(bat_now.perc) <= 15 then
baticon:set_image(theme.widget_battery_low)
else
baticon:set_image(theme.widget_battery)
end
widget:set_markup(markup.font(theme.font, " " .. bat_now.perc .. "% "))
else
widget:set_markup(markup.font(theme.font, " AC "))
baticon:set_image(theme.widget_ac)
end
end
})
-- ALSA volume
local volicon = wibox.widget.imagebox(theme.widget_vol)
theme.volume = lain.widget.alsa({
settings = function()
if volume_now.status == "off" then
volicon:set_image(theme.widget_vol_mute)
elseif tonumber(volume_now.level) == 0 then
volicon:set_image(theme.widget_vol_no)
elseif tonumber(volume_now.level) <= 50 then
volicon:set_image(theme.widget_vol_low)
else
volicon:set_image(theme.widget_vol)
end
widget:set_markup(markup.font(theme.font, " " .. volume_now.level .. "% "))
end
})
-- Net
local neticon = wibox.widget.imagebox(theme.widget_net)
local net = lain.widget.net({
settings = function()
widget:set_markup(markup.font(theme.font,
markup("#7AC82E", " " .. string.format("%06.1f", net_now.received))
.. " " ..
markup("#46A8C3", " " .. string.format("%06.1f", net_now.sent) .. " ")))
end
})
-- Separators
local spr = wibox.widget.textbox(' ')
local arrl_dl = separators.arrow_left(theme.bg_focus, "alpha")
local arrl_ld = separators.arrow_left("alpha", theme.bg_focus)
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(my_table.join(
awful.button({}, 1, function () awful.layout.inc( 1) end),
awful.button({}, 2, function () awful.layout.set( awful.layout.layouts[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)
-- Create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s, height = dpi(18), bg = theme.bg_normal, fg = theme.fg_normal })
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
--spr,
s.mytaglist,
s.mypromptbox,
spr,
},
s.mytasklist, -- Middle widget
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
wibox.widget.systray(),
spr,
arrl_ld,
wibox.container.background(mpdicon, theme.bg_focus),
wibox.container.background(theme.mpd.widget, theme.bg_focus),
arrl_dl,
volicon,
theme.volume.widget,
arrl_ld,
wibox.container.background(mailicon, theme.bg_focus),
--wibox.container.background(theme.mail.widget, theme.bg_focus),
arrl_dl,
memicon,
mem.widget,
arrl_ld,
wibox.container.background(cpuicon, theme.bg_focus),
wibox.container.background(cpu.widget, theme.bg_focus),
arrl_dl,
tempicon,
temp.widget,
arrl_ld,
wibox.container.background(fsicon, theme.bg_focus),
--wibox.container.background(theme.fs.widget, theme.bg_focus),
arrl_dl,
baticon,
bat.widget,
arrl_ld,
wibox.container.background(neticon, theme.bg_focus),
wibox.container.background(net.widget, theme.bg_focus),
arrl_dl,
clock,
spr,
arrl_ld,
wibox.container.background(s.mylayoutbox, theme.bg_focus),
},
}
end
return theme