elenapan/config/awesome/bars/skyfall.lua
elenapan db310f8e49 New theme: ephemeral, anti-aliased corners, app drawer, lock screen,
evil daemon system, dependency list update, README improvements.
2019-08-01 02:17:59 +03:00

173 lines
6.3 KiB
Lua

local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
local beautiful = require("beautiful")
local keys = require("keys")
local helpers = require("helpers")
local pad = helpers.pad
-- Helper function that updates a taglist item
local update_taglist = function (item, tag, index)
if tag.selected then
item.markup = helpers.colorize_text(beautiful.taglist_text_focused[index], beautiful.taglist_text_color_focused[index])
elseif tag.urgent then
item.markup = helpers.colorize_text(beautiful.taglist_text_urgent[index], beautiful.taglist_text_color_urgent[index])
elseif #tag:clients() > 0 then
item.markup = helpers.colorize_text(beautiful.taglist_text_occupied[index], beautiful.taglist_text_color_occupied[index])
else
item.markup = helpers.colorize_text(beautiful.taglist_text_empty[index], beautiful.taglist_text_color_empty[index])
end
end
-- Create a wibox for each screen and add it
awful.screen.connect_for_each_screen(function(s)
s.mytaglist = awful.widget.taglist {
screen = s,
filter = awful.widget.taglist.filter.all,
layout = wibox.layout.fixed.horizontal,
widget_template = {
widget = wibox.widget.textbox,
create_callback = function(self, tag, index, _)
self.align = "center"
self.valign = "center"
self.forced_width = dpi(25)
self.font = beautiful.taglist_text_font
update_taglist(self, tag, index)
end,
update_callback = function(self, tag, index, _)
update_taglist(self, tag, index)
end,
},
buttons = keys.taglist_buttons
}
-- Create a system tray widget
s.systray = wibox.widget.systray()
-- Create a wibox that will only show the tray
-- Hidden by default. Can be toggled with a keybind.
s.traybox = wibox({visible = false, ontop = true, shape = helpers.rrect(beautiful.border_radius), type = "dock"})
s.traybox.width = dpi(120)
s.traybox.height = beautiful.wibar_height - beautiful.screen_margin * 4
s.traybox.x = s.geometry.width - beautiful.screen_margin * 2 - s.traybox.width
s.traybox.y = s.geometry.height - s.traybox.height - beautiful.screen_margin * 2
-- s.traybox.y = s.geometry.height - s.traybox.height - s.traybox.height / 2
s.traybox.bg = beautiful.bg_systray
s.traybox:setup {
pad(1),
s.systray,
pad(1),
layout = wibox.layout.align.horizontal
}
s.traybox:buttons(gears.table.join(
-- Middle click - Hide traybox
awful.button({ }, 2, function ()
s.traybox.visible = false
end)
))
-- Hide traybox when mouse leaves
s.traybox:connect_signal("mouse::leave", function ()
s.traybox.visible = false
end)
-- Create text weather widget
local text_weather = require("noodle.text_weather")
> local weather_widget_icon = text_weather:get_all_children()[1]
weather_widget_icon.font = "Typicons 11"
local weather_widget_text = text_weather:get_all_children()[2]
weather_widget_text.font = "sans 9"
-- Create a window control widget
local close_button = wibox.widget.textbox()
close_button.font = "Typicons 11"
close_button.markup = helpers.colorize_text("", beautiful.xcolor1)
close_button:buttons(gears.table.join(
awful.button({ }, 1, function ()
if client.focus then
client.focus:kill()
end
end)
))
local maximize_button = wibox.widget.textbox()
maximize_button:buttons(gears.table.join(
awful.button({ }, 1, function ()
if client.focus then
client.focus.maximized = not client.focus.maximized
end
end)
))
maximize_button.font = "Typicons 11"
maximize_button.markup = helpers.colorize_text("", beautiful.xcolor5)
local minimize_button = wibox.widget.textbox()
minimize_button:buttons(gears.table.join(
awful.button({ }, 1, function ()
if client.focus then
client.focus.minimized = true
end
end)
))
minimize_button.font = "Typicons 11"
minimize_button.markup = helpers.colorize_text("", beautiful.xcolor6)
local window_buttons = wibox.widget {
minimize_button,
maximize_button,
close_button,
{ -- Padding
spacing = dpi(6),
layout = wibox.layout.fixed.horizontal
},
spacing = dpi(12),
layout = wibox.layout.fixed.horizontal
}
window_buttons:buttons(gears.table.join(
awful.button({ }, 2, function ()
awful.spawn.with_shell("rofi -matching fuzzy -show windowcd")
end),
awful.button({ }, 4, function ()
awful.client.focus.byidx(-1)
end),
awful.button({ }, 5, function ()
awful.client.focus.byidx(1)
end)
))
-- Create the wibox
s.mywibox = awful.wibar({ position = beautiful.wibar_position, screen = s, width = beautiful.wibar_width, height = beautiful.wibar_height, shape = helpers.rrect(beautiful.wibar_border_radius)})
-- Wibar items
-- Add or remove widgets here
s.mywibox:setup {
{
{ -- Some padding
layout = wibox.layout.fixed.horizontal
},
text_weather,
spacing = dpi(12),
layout = wibox.layout.fixed.horizontal
},
s.mytaglist,
window_buttons,
expand = "none",
layout = wibox.layout.align.horizontal
}
end)
local s = mouse.screen
-- Show traybox when the mouse touches the rightmost edge of the wibar
traybox_activator = wibox({ x = s.geometry.width - 1, y = s.geometry.height - beautiful.wibar_height, height = beautiful.wibar_height, width = 1, opacity = 0, visible = true, bg = beautiful.wibar_bg })
traybox_activator:connect_signal("mouse::enter", function ()
-- awful.screen.focused().traybox.visible = true
s.traybox.visible = true
end)
-- Every bar theme should provide these fuctions
function toggle_wibars()
local s = awful.screen.focused()
s.mywibox.visible = not s.mywibox.visible
end
function toggle_tray()
local s = awful.screen.focused()
s.traybox.visible = not s.traybox.visible
end