add: some ui and widgets
This commit is contained in:
parent
65d75f2fc3
commit
18dbc601b7
|
@ -20,7 +20,7 @@ local screen_width = awful.screen.focused().geometry.width
|
||||||
local screen_height = awful.screen.focused().geometry.height
|
local screen_height = awful.screen.focused().geometry.height
|
||||||
|
|
||||||
|
|
||||||
-- dash
|
-- dashboard
|
||||||
------------
|
------------
|
||||||
|
|
||||||
-- Helpers
|
-- Helpers
|
||||||
|
@ -70,43 +70,37 @@ local function create_boxed_widget(widget_to_be_boxed, width, height, bg_color)
|
||||||
return boxed_widget
|
return boxed_widget
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Widget
|
-- Widget
|
||||||
local profile = require("ui.dash.profile")
|
local profile = require("ui.dashboard.profile")
|
||||||
local music = require("ui.dash.music")
|
local music = require("ui.dashboard.music")
|
||||||
local media = require("ui.dash.mediakeys")
|
local media = require("ui.dashboard.mediakeys")
|
||||||
local time = require("ui.dash.time")
|
local time = require("ui.dashboard.time")
|
||||||
local date = require("ui.dash.date")
|
local date = require("ui.dashboard.date")
|
||||||
local todo = require("ui.dash.todo")
|
local todo = require("ui.dashboard.todo")
|
||||||
local weather = require("ui.dash.weather")
|
local weather = require("ui.dashboard.weather")
|
||||||
local stats = require("ui.dash.stats")
|
local stats = require("ui.dashboard.stats")
|
||||||
local notifs = require("ui.dash.notifs")
|
local notifs = require("ui.dashboard.notifs")
|
||||||
|
|
||||||
|
|
||||||
local time_boxed = create_boxed_widget(centered_widget(time), dpi(260), dpi(95), beautiful.transparent)
|
local time_boxed = create_boxed_widget(centered_widget(time), dpi(260), dpi(95), beautiful.transparent)
|
||||||
local date_boxed = create_boxed_widget(date, dpi(120), dpi(50), beautiful.dash_box_bg)
|
local date_boxed = create_boxed_widget(date, dpi(120), dpi(50), beautiful.dashboard_box_bg)
|
||||||
local todo_boxed = create_boxed_widget(todo, dpi(120), dpi(120), beautiful.dash_box_bg)
|
local todo_boxed = create_boxed_widget(todo, dpi(120), dpi(120), beautiful.dashboard_box_bg)
|
||||||
local weather_boxed = create_boxed_widget(weather, dpi(120), dpi(120), beautiful.dash_box_bg)
|
local weather_boxed = create_boxed_widget(weather, dpi(120), dpi(120), beautiful.dashboard_box_bg)
|
||||||
local stats_boxed = create_boxed_widget(stats, dpi(120), dpi(190), beautiful.dash_box_bg)
|
local stats_boxed = create_boxed_widget(stats, dpi(120), dpi(190), beautiful.dashboard_box_bg)
|
||||||
local notifs_boxed = create_boxed_widget(notifs, dpi(260), dpi(155), beautiful.dash_box_bg)
|
local notifs_boxed = create_boxed_widget(notifs, dpi(260), dpi(190), beautiful.dashboard_box_bg)
|
||||||
|
|
||||||
-- Dashboard
|
-- dashboard
|
||||||
dash = wibox({
|
dashboard = wibox({
|
||||||
type = "dock",
|
type = "dock",
|
||||||
screen = screen.primary,
|
|
||||||
height = screen_height,
|
|
||||||
width = beautiful.dash_width or dpi(300),
|
|
||||||
ontop = true,
|
ontop = true,
|
||||||
|
screen = screen.primary,
|
||||||
|
height = screen_height - dpi(50),
|
||||||
|
width = beautiful.dashboard_width or dpi(300),
|
||||||
visible = false
|
visible = false
|
||||||
})
|
})
|
||||||
|
dashboard.y = dpi(25)
|
||||||
awful.placement.left(dash)
|
dashboard.bg = "#00000000"
|
||||||
|
|
||||||
dash:buttons(gears.table.join(
|
|
||||||
-- Middle click - Hide dash
|
|
||||||
awful.button({}, 2, function()
|
|
||||||
dash_hide()
|
|
||||||
end)
|
|
||||||
))
|
|
||||||
|
|
||||||
local slide = rubato.timed{
|
local slide = rubato.timed{
|
||||||
pos = dpi(-300),
|
pos = dpi(-300),
|
||||||
|
@ -115,7 +109,7 @@ local slide = rubato.timed{
|
||||||
duration = 0.8,
|
duration = 0.8,
|
||||||
easing = rubato.quadratic,
|
easing = rubato.quadratic,
|
||||||
awestore_compat = true,
|
awestore_compat = true,
|
||||||
subscribed = function(pos) dash.x = pos end
|
subscribed = function(pos) dashboard.x = pos end
|
||||||
}
|
}
|
||||||
|
|
||||||
local slide_strut = rubato.timed{
|
local slide_strut = rubato.timed{
|
||||||
|
@ -125,68 +119,72 @@ local slide_strut = rubato.timed{
|
||||||
duration = 0.8,
|
duration = 0.8,
|
||||||
easing = rubato.quadratic,
|
easing = rubato.quadratic,
|
||||||
awestore_compat = true,
|
awestore_compat = true,
|
||||||
subscribed = function(width) dash:struts{left = width, right = 0, top = 0, bottom = 0} end
|
subscribed = function(width) dashboard:struts{left = width, right = 0, top = 0, bottom = 0} end
|
||||||
}
|
}
|
||||||
|
|
||||||
local dash_status = false
|
local dashboard_status = false
|
||||||
|
|
||||||
slide.ended:subscribe(function()
|
slide.ended:subscribe(function()
|
||||||
if dash_status then
|
if dashboard_status then
|
||||||
dash.visible = false
|
dashboard.visible = false
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
dash_show = function()
|
dashboard_show = function()
|
||||||
dash.visible = true
|
dashboard.visible = true
|
||||||
slide:set(0)
|
slide:set(100)
|
||||||
slide_strut:set(300)
|
slide_strut:set(375)
|
||||||
dash_status = false
|
dashboard_status = false
|
||||||
end
|
end
|
||||||
|
|
||||||
dash_hide = function()
|
dashboard_hide = function()
|
||||||
slide:set(-300)
|
slide:set(-375)
|
||||||
slide_strut:set(0)
|
slide_strut:set(0)
|
||||||
dash_status = true
|
dashboard_status = true
|
||||||
end
|
end
|
||||||
|
|
||||||
dash_toggle = function()
|
dashboard_toggle = function()
|
||||||
if dash.visible then
|
if dashboard.visible then
|
||||||
dash_hide()
|
dashboard_hide()
|
||||||
else
|
else
|
||||||
dash_show()
|
dashboard_show()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
dash:setup {
|
dashboard:setup {
|
||||||
{
|
{
|
||||||
nil,
|
|
||||||
{
|
{
|
||||||
time_boxed,
|
nil,
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
profile,
|
{
|
||||||
stats_boxed,
|
profile,
|
||||||
layout = wibox.layout.fixed.vertical
|
stats_boxed,
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
{
|
||||||
|
date_boxed,
|
||||||
|
todo_boxed,
|
||||||
|
weather_boxed,
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
date_boxed,
|
music,
|
||||||
todo_boxed,
|
media,
|
||||||
weather_boxed,
|
layout = wibox.layout.fixed.horizontal
|
||||||
layout = wibox.layout.fixed.vertical
|
|
||||||
},
|
},
|
||||||
layout = wibox.layout.fixed.horizontal
|
notifs_boxed,
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
expand = "none",
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
},
|
},
|
||||||
{
|
margins = dpi(10),
|
||||||
music,
|
widget = wibox.container.margin
|
||||||
media,
|
|
||||||
layout = wibox.layout.fixed.horizontal
|
|
||||||
},
|
|
||||||
notifs_boxed,
|
|
||||||
layout = wibox.layout.fixed.vertical
|
|
||||||
},
|
},
|
||||||
expand = "none",
|
bg = beautiful.xbackground,
|
||||||
layout = wibox.layout.align.horizontal
|
shape = helpers.rrect(beautiful.dashboard_radius),
|
||||||
},
|
widget = wibox.container.background
|
||||||
margins = dpi(10),
|
}
|
||||||
widget = wibox.container.margin
|
|
||||||
}
|
|
|
@ -16,6 +16,9 @@ local helpers = require("helpers")
|
||||||
-- Media Keys
|
-- Media Keys
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
--playerctl
|
||||||
|
local playerctl = require("module.bling").signal.playerctl.lib()
|
||||||
|
|
||||||
-- Helpers
|
-- Helpers
|
||||||
local create_media_button = function(symbol, color, command, playpause)
|
local create_media_button = function(symbol, color, command, playpause)
|
||||||
|
|
||||||
|
@ -27,12 +30,12 @@ local create_media_button = function(symbol, color, command, playpause)
|
||||||
widget = wibox.widget.textbox()
|
widget = wibox.widget.textbox()
|
||||||
}
|
}
|
||||||
|
|
||||||
awesome.connect_signal("bling::playerctl::status", function(playing)
|
playerctl:connect_signal("playback_status", function(_, playing, __)
|
||||||
if playpause then
|
if playpause then
|
||||||
if playing then
|
if playing then
|
||||||
icon.markup = helpers.colorize_text("", color)
|
icon:set_markup_silently(helpers.colorize_text("", color))
|
||||||
else
|
else
|
||||||
icon.markup = helpers.colorize_text("", color)
|
icon:set_markup_silently(helpers.colorize_text("", color))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
@ -51,9 +54,9 @@ local create_media_button = function(symbol, color, command, playpause)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Widget
|
-- Widget
|
||||||
local media_play_command = function() helpers.music_control("toggle") end
|
local media_play_command = function() playerctl:play_pause() end
|
||||||
local media_prev_command = function() helpers.music_control("prev") end
|
local media_prev_command = function() playerctl:previous() end
|
||||||
local media_next_command = function() helpers.music_control("next") end
|
local media_next_command = function() playerctl:next() end
|
||||||
|
|
||||||
local media_play = create_media_button("", beautiful.xforeground, media_play_command, true)
|
local media_play = create_media_button("", beautiful.xforeground, media_play_command, true)
|
||||||
local media_prev = create_media_button("", beautiful.xforeground, media_prev_command, false)
|
local media_prev = create_media_button("", beautiful.xforeground, media_prev_command, false)
|
||||||
|
@ -72,7 +75,7 @@ local media = wibox.widget{
|
||||||
margins = dpi(9),
|
margins = dpi(9),
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
bg = beautiful.dash_box_bg,
|
bg = beautiful.dashboard_box_bg,
|
||||||
shape = helpers.rrect(5),
|
shape = helpers.rrect(5),
|
||||||
forced_width = dpi(40),
|
forced_width = dpi(40),
|
||||||
forced_height = dpi(120),
|
forced_height = dpi(120),
|
|
@ -18,7 +18,6 @@ local helpers = require("helpers")
|
||||||
|
|
||||||
local music_text = wibox.widget{
|
local music_text = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
markup = helpers.colorize_text("Music", beautiful.xforeground .. "b3"),
|
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
||||||
|
@ -40,7 +39,7 @@ local filter_color = {
|
||||||
type = 'linear',
|
type = 'linear',
|
||||||
from = {0, 0},
|
from = {0, 0},
|
||||||
to = {0, 120},
|
to = {0, 120},
|
||||||
stops = {{0, beautiful.dash_box_bg .. "cc"}, {1, beautiful.dash_box_bg}}
|
stops = {{0, beautiful.dashboard_box_bg .. "cc"}, {1, beautiful.dashboard_box_bg}}
|
||||||
}
|
}
|
||||||
|
|
||||||
local music_art_filter = wibox.widget {
|
local music_art_filter = wibox.widget {
|
||||||
|
@ -54,50 +53,56 @@ local music_art_filter = wibox.widget {
|
||||||
widget = wibox.container.rotate
|
widget = wibox.container.rotate
|
||||||
}
|
}
|
||||||
|
|
||||||
local music_artist = wibox.widget{
|
local music_title = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 12",
|
font = beautiful.font_name .. "medium 9",
|
||||||
markup = helpers.colorize_text("Nothing Playing", beautiful.xforeground .. "e6"),
|
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
||||||
|
|
||||||
local music_title = wibox.widget{
|
local music_artist = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 9",
|
font = beautiful.font_name .. "medium 12",
|
||||||
markup = helpers.colorize_text("Nothing Playing", beautiful.xforeground .. "b3"),
|
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
||||||
|
|
||||||
local music_pos = wibox.widget{
|
local music_pos = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
markup = helpers.colorize_text("- / -", beautiful.xforeground .. "66"),
|
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
||||||
|
|
||||||
awesome.connect_signal("bling::playerctl::status", function(playing)
|
|
||||||
|
-- playerctl
|
||||||
|
---------------
|
||||||
|
|
||||||
|
local playerctl = require("module.bling").signal.playerctl.lib()
|
||||||
|
|
||||||
|
playerctl:connect_signal("metadata", function(_, title, artist, album_path, __, ___, ____)
|
||||||
|
if title == "" then title = "Nothing Playing" end
|
||||||
|
if artist == "" then artist = "Nothing Playing" end
|
||||||
|
if album_path == "" then album_path = gears.filesystem.get_configuration_dir() .. "theme/assets/no_music.png" end
|
||||||
|
|
||||||
|
music_art:set_image(gears.surface.load_uncached(album_path))
|
||||||
|
music_title:set_markup_silently(helpers.colorize_text(title, beautiful.xforeground .. "b3"))
|
||||||
|
music_artist:set_markup_silently(helpers.colorize_text(artist, beautiful.xforeground .. "e6"))
|
||||||
|
end)
|
||||||
|
|
||||||
|
playerctl:connect_signal("playback_status", function(_, playing, __)
|
||||||
if playing then
|
if playing then
|
||||||
music_text.markup = helpers.colorize_text("Now Playing", beautiful.xforeground .. "cc")
|
music_text:set_markup_silently(helpers.colorize_text("Now Playing", beautiful.xforeground .. "cc"))
|
||||||
else
|
else
|
||||||
music_text.markup = helpers.colorize_text("Music", beautiful.xforeground .. "cc")
|
music_text:set_markup_silently(helpers.colorize_text("Music", beautiful.xforeground .. "cc"))
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
awesome.connect_signal("bling::playerctl::title_artist_album", function(title_current, artist_current, art_path)
|
playerctl:connect_signal("position", function(_, interval_sec, length_sec, player_name)
|
||||||
|
local pos_now = tostring(os.date("!%M:%S", math.floor(interval_sec)))
|
||||||
|
local pos_length = tostring(os.date("!%M:%S", math.floor(length_sec)))
|
||||||
|
local pos_markup = helpers.colorize_text(pos_now .. " / " .. pos_length, beautiful.xforeground .. "66")
|
||||||
|
|
||||||
music_art:set_image(gears.surface.load_uncached(art_path))
|
music_pos:set_markup_silently(pos_markup)
|
||||||
|
|
||||||
music_title:set_markup_silently('<span foreground="' .. beautiful.xforeground .. 'b3">' .. title_current .. '</span>')
|
|
||||||
music_artist:set_markup_silently('<span foreground="' .. beautiful.xforeground .. 'e6">' .. artist_current .. '</span>')
|
|
||||||
end)
|
end)
|
||||||
|
|
||||||
awesome.connect_signal("bling::playerctl::position", function(pos, length)
|
|
||||||
local pos_now = tostring(os.date("!%M:%S", math.floor(pos)))
|
|
||||||
local pos_length = tostring(os.date("!%M:%S", math.floor(length)))
|
|
||||||
local pos_markup = pos_now .. " / " .. pos_length
|
|
||||||
|
|
||||||
music_pos.markup = helpers.colorize_text(pos_markup, beautiful.xforeground .. "66")
|
|
||||||
end)
|
|
||||||
|
|
||||||
local music = wibox.widget{
|
local music = wibox.widget{
|
||||||
{
|
{
|
||||||
|
@ -151,7 +156,7 @@ local music = wibox.widget{
|
||||||
},
|
},
|
||||||
layout = wibox.layout.stack
|
layout = wibox.layout.stack
|
||||||
},
|
},
|
||||||
bg = beautiful.dash_box_bg,
|
bg = beautiful.dashboard_box_bg,
|
||||||
shape = helpers.rrect(dpi(5)),
|
shape = helpers.rrect(dpi(5)),
|
||||||
forced_width = dpi(200),
|
forced_width = dpi(200),
|
||||||
forced_height = dpi(120),
|
forced_height = dpi(120),
|
|
@ -21,7 +21,7 @@ local helpers = require("helpers")
|
||||||
|
|
||||||
local notifs_text = wibox.widget{
|
local notifs_text = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
markup = helpers.colorize_text("Notifications", beautiful.dash_box_fg),
|
markup = helpers.colorize_text("Notifications", beautiful.dashboard_box_fg),
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
||||||
|
@ -64,18 +64,6 @@ local notifs_empty = wibox.widget {
|
||||||
|
|
||||||
local notifs_container = wibox.widget{
|
local notifs_container = wibox.widget{
|
||||||
spacing = dpi(6),
|
spacing = dpi(6),
|
||||||
spacing_widget = {
|
|
||||||
{
|
|
||||||
bg = beautiful.xcolor0,
|
|
||||||
shape = gears.shape.rounded_rect,
|
|
||||||
widget = wibox.container.background,
|
|
||||||
},
|
|
||||||
top = dpi(2),
|
|
||||||
bottom = dpi(2),
|
|
||||||
left = dpi(53),
|
|
||||||
right = dpi(6),
|
|
||||||
widget = wibox.container.margin
|
|
||||||
},
|
|
||||||
forced_width = beautiful.notifs_width or dpi(240),
|
forced_width = beautiful.notifs_width or dpi(240),
|
||||||
layout = wibox.layout.fixed.vertical
|
layout = wibox.layout.fixed.vertical
|
||||||
}
|
}
|
||||||
|
@ -149,7 +137,7 @@ local create_notif = function(icon, n, width)
|
||||||
layout = wibox.layout.align.horizontal
|
layout = wibox.layout.align.horizontal
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
markup = helpers.colorize_text(n.message, beautiful.dash_box_fg),
|
markup = helpers.colorize_text(n.message, beautiful.dashboard_box_fg),
|
||||||
align = "left",
|
align = "left",
|
||||||
font = beautiful.font_name .. "medium 8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
forced_width = dpi(165),
|
forced_width = dpi(165),
|
||||||
|
@ -166,12 +154,12 @@ local create_notif = function(icon, n, width)
|
||||||
},
|
},
|
||||||
layout = wibox.layout.align.horizontal
|
layout = wibox.layout.align.horizontal
|
||||||
},
|
},
|
||||||
margins = dpi(6),
|
margins = dpi(8),
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
bg = beautiful.xcolor0,
|
bg = beautiful.xcolor0,
|
||||||
shape = helpers.rrect(dpi(4)),
|
shape = helpers.rrect(dpi(4)),
|
||||||
forced_height = dpi(104),
|
forced_height = dpi(66),
|
||||||
widget = wibox.container.background
|
widget = wibox.container.background
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ local helpers = require("helpers")
|
||||||
|
|
||||||
local stats_text = wibox.widget{
|
local stats_text = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
markup = helpers.colorize_text("Stats", beautiful.dash_box_fg),
|
markup = helpers.colorize_text("Stats", beautiful.dashboard_box_fg),
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
||||||
|
@ -134,15 +134,16 @@ awesome.connect_signal("signal::ram", function(used, total)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
vol:buttons(gears.table.join(
|
vol:buttons(gears.table.join(
|
||||||
|
awful.button({}, 1, function() helpers.volume_control(0) end),
|
||||||
-- Scrolling
|
-- Scrolling
|
||||||
awful.button({}, 4, function() helpers.volume_control(2) end),
|
awful.button({}, 4, function() helpers.volume_control(5) end),
|
||||||
awful.button({}, 5, function() helpers.volume_control(-2) end)
|
awful.button({}, 5, function() helpers.volume_control(-5) end)
|
||||||
))
|
))
|
||||||
|
|
||||||
brightness:buttons(gears.table.join(
|
brightness:buttons(gears.table.join(
|
||||||
-- Scrolling
|
-- Scrolling
|
||||||
awful.button({}, 4, function() awful.spawn.with_shell("brightnessctl set 2%+ -q") end),
|
awful.button({}, 4, function() awful.spawn.with_shell("brightnessctl set 5%+ -q") end),
|
||||||
awful.button({}, 5, function() awful.spawn.with_shell("brightnessctl set 2%- -q") end)
|
awful.button({}, 5, function() awful.spawn.with_shell("brightnessctl set 5%- -q") end)
|
||||||
))
|
))
|
||||||
|
|
||||||
local stats = wibox.widget{
|
local stats = wibox.widget{
|
|
@ -17,7 +17,7 @@ local helpers = require("helpers")
|
||||||
|
|
||||||
local todo_text = wibox.widget{
|
local todo_text = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
markup = helpers.colorize_text("Todo", beautiful.dash_box_fg),
|
markup = helpers.colorize_text("Todo", beautiful.dashboard_box_fg),
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
|
@ -18,7 +18,7 @@ local helpers = require("helpers")
|
||||||
|
|
||||||
local weather_text = wibox.widget{
|
local weather_text = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
markup = helpers.colorize_text("Weather unavailable", beautiful.dash_box_fg),
|
markup = helpers.colorize_text("Weather unavailable", beautiful.dashboard_box_fg),
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ awesome.connect_signal("signal::weather", function(temperature, description, ico
|
||||||
end
|
end
|
||||||
|
|
||||||
weather_icon.markup = icon_widget
|
weather_icon.markup = icon_widget
|
||||||
weather_text.markup = helpers.colorize_text(description, beautiful.dash_box_fg)
|
weather_text.markup = helpers.colorize_text(description, beautiful.dashboard_box_fg)
|
||||||
weather_temp.markup = temperature .. weather_temp_symbol
|
weather_temp.markup = temperature .. weather_temp_symbol
|
||||||
end)
|
end)
|
||||||
|
|
|
@ -33,3 +33,4 @@ else
|
||||||
end
|
end
|
||||||
|
|
||||||
require("ui.decorations.titlebar")
|
require("ui.decorations.titlebar")
|
||||||
|
require("ui.decorations.music")
|
||||||
|
|
468
config/awesome/ui/decorations/music.lua
Normal file
468
config/awesome/ui/decorations/music.lua
Normal file
|
@ -0,0 +1,468 @@
|
||||||
|
-- Standard awesome library
|
||||||
|
local gears = require("gears")
|
||||||
|
local awful = require("awful")
|
||||||
|
|
||||||
|
-- Theme library
|
||||||
|
local beautiful = require("beautiful")
|
||||||
|
|
||||||
|
-- Ruled
|
||||||
|
local ruled = require("ruled")
|
||||||
|
|
||||||
|
-- Widget library
|
||||||
|
local wibox = require("wibox")
|
||||||
|
|
||||||
|
-- Helpers
|
||||||
|
local helpers = require("helpers")
|
||||||
|
|
||||||
|
|
||||||
|
-- Music icon
|
||||||
|
----------------
|
||||||
|
|
||||||
|
local big_music_icon = wibox.widget{
|
||||||
|
align = "center",
|
||||||
|
font = beautiful.icon_font_name .. "Bold 16",
|
||||||
|
markup = helpers.colorize_text("", beautiful.xcolor4),
|
||||||
|
widget = wibox.widget.textbox()
|
||||||
|
}
|
||||||
|
|
||||||
|
local small_music_icon = wibox.widget{
|
||||||
|
align = "center",
|
||||||
|
font = beautiful.icon_font_name .. "Bold 12",
|
||||||
|
markup = helpers.colorize_text("", beautiful.xforeground),
|
||||||
|
widget = wibox.widget.textbox()
|
||||||
|
}
|
||||||
|
|
||||||
|
local container_music_icon = wibox.widget {
|
||||||
|
big_music_icon,
|
||||||
|
{
|
||||||
|
small_music_icon,
|
||||||
|
top = dpi(12),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
spacing = dpi(-8),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
}
|
||||||
|
|
||||||
|
local music_icon = wibox.widget{
|
||||||
|
nil,
|
||||||
|
{
|
||||||
|
container_music_icon,
|
||||||
|
spacing = dpi(14),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
expand = "none",
|
||||||
|
layout = wibox.layout.align.horizontal,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Helpers
|
||||||
|
-------------
|
||||||
|
|
||||||
|
local control_button_bg = "#00000000"
|
||||||
|
local control_button_bg_hover = beautiful.xcolor0
|
||||||
|
local control_button = function(c, symbol, color, font, size, on_click, on_right_click)
|
||||||
|
local icon = wibox.widget{
|
||||||
|
markup = helpers.colorize_text(symbol, color),
|
||||||
|
font = font,
|
||||||
|
align = "center",
|
||||||
|
valign = "center",
|
||||||
|
widget = wibox.widget.textbox()
|
||||||
|
}
|
||||||
|
|
||||||
|
local button = wibox.widget {
|
||||||
|
icon,
|
||||||
|
bg = control_button_bg,
|
||||||
|
shape = helpers.rrect(dpi(5)),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local container = wibox.widget {
|
||||||
|
button,
|
||||||
|
strategy = "min",
|
||||||
|
width = dpi(30),
|
||||||
|
widget = wibox.container.constraint,
|
||||||
|
}
|
||||||
|
|
||||||
|
container:buttons(gears.table.join(
|
||||||
|
awful.button({ }, 1, on_click),
|
||||||
|
awful.button({ }, 3, on_right_click)
|
||||||
|
))
|
||||||
|
|
||||||
|
container:connect_signal("mouse::enter", function ()
|
||||||
|
button.bg = control_button_bg_hover
|
||||||
|
end)
|
||||||
|
container:connect_signal("mouse::leave", function ()
|
||||||
|
button.bg = control_button_bg
|
||||||
|
end)
|
||||||
|
|
||||||
|
return container
|
||||||
|
end
|
||||||
|
|
||||||
|
local music_play_pause = control_button(c, "", beautiful.xforeground, beautiful.icon_font_name .. "Round 22", dpi(30), function()
|
||||||
|
awful.spawn.with_shell("mpc -q toggle")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Loop button
|
||||||
|
local loop = control_button(c, "", beautiful.xforeground, beautiful.icon_font_name .. "Round 12", dpi(30), function()
|
||||||
|
awful.spawn.with_shell("mpc repeat")
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Shuffle playlist
|
||||||
|
local shuffle = control_button(c, "", beautiful.xforeground, beautiful.icon_font_name .. "Round 12", dpi(30), function()
|
||||||
|
awful.spawn.with_shell("mpc random")
|
||||||
|
end)
|
||||||
|
|
||||||
|
local function create_slider_widget(slider_color)
|
||||||
|
local slider_widget = wibox.widget {
|
||||||
|
{
|
||||||
|
id = "slider",
|
||||||
|
max_value = 100,
|
||||||
|
value = 20,
|
||||||
|
margins = {
|
||||||
|
top = dpi(7),
|
||||||
|
bottom = dpi(7),
|
||||||
|
left = dpi(6),
|
||||||
|
right = dpi(6),
|
||||||
|
},
|
||||||
|
forced_width = dpi(60),
|
||||||
|
shape = gears.shape.rounded_bar,
|
||||||
|
bar_shape = gears.shape.rounded_bar,
|
||||||
|
color = slider_color,
|
||||||
|
background_color = beautiful.xcolor0,
|
||||||
|
widget = wibox.widget.progressbar
|
||||||
|
},
|
||||||
|
expand = "none",
|
||||||
|
forced_width = 60,
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
}
|
||||||
|
|
||||||
|
return slider_widget
|
||||||
|
end
|
||||||
|
|
||||||
|
local stats_tooltip = wibox.widget {
|
||||||
|
visible = false,
|
||||||
|
top_only = true,
|
||||||
|
layout = wibox.layout.stack
|
||||||
|
}
|
||||||
|
|
||||||
|
local tooltip_counter = 0
|
||||||
|
local function create_tooltip(w)
|
||||||
|
local tooltip = wibox.widget {
|
||||||
|
font = beautiful.font_name .. "bold 10",
|
||||||
|
align = "right",
|
||||||
|
valign = "center",
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip_counter = tooltip_counter + 1
|
||||||
|
local index = tooltip_counter
|
||||||
|
|
||||||
|
stats_tooltip:insert(index, tooltip)
|
||||||
|
|
||||||
|
w:connect_signal("mouse::enter", function()
|
||||||
|
-- Raise tooltip to the top of the stack
|
||||||
|
stats_tooltip:set(1, tooltip)
|
||||||
|
stats_tooltip.visible = true
|
||||||
|
end)
|
||||||
|
w:connect_signal("mouse::leave", function ()
|
||||||
|
stats_tooltip.visible = false
|
||||||
|
end)
|
||||||
|
|
||||||
|
return tooltip
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Decorations
|
||||||
|
----------------
|
||||||
|
|
||||||
|
local music_art = wibox.widget {
|
||||||
|
image = gears.filesystem.get_configuration_dir() .. "theme/assets/no_music.png",
|
||||||
|
resize = true,
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
}
|
||||||
|
|
||||||
|
local music_art_container = wibox.widget{
|
||||||
|
music_art,
|
||||||
|
shape = helpers.rrect(dpi(5)),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local music_now = wibox.widget{
|
||||||
|
font = beautiful.font_name .. "bold 10",
|
||||||
|
valign = "center",
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
local music_pos = wibox.widget{
|
||||||
|
font = beautiful.font_name .. "bold 10",
|
||||||
|
valign = "center",
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
local music_bar = wibox.widget {
|
||||||
|
max_value = 100,
|
||||||
|
value = 0,
|
||||||
|
background_color = beautiful.xcolor0,
|
||||||
|
color = beautiful.xcolor4,
|
||||||
|
forced_height = dpi(3),
|
||||||
|
widget = wibox.widget.progressbar
|
||||||
|
}
|
||||||
|
|
||||||
|
music_bar:connect_signal("button::press", function(_, lx, __, button, ___, w)
|
||||||
|
if button == 1 then
|
||||||
|
awful.spawn.with_shell("mpc seek " .. math.ceil(lx * 100 / w.width) .. "%")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
local music_play_pause_textbox = music_play_pause:get_all_children()[1]:get_all_children()[1]
|
||||||
|
local loop_textbox = loop:get_all_children()[1]:get_all_children()[1]
|
||||||
|
local shuffle_textbox = shuffle:get_all_children()[1]:get_all_children()[1]
|
||||||
|
|
||||||
|
-- Volume
|
||||||
|
--------
|
||||||
|
|
||||||
|
local vol_color = beautiful.xcolor4
|
||||||
|
local vol_slider = create_slider_widget(vol_color)
|
||||||
|
local vol_tooltip = create_tooltip(vol_slider)
|
||||||
|
|
||||||
|
local vol_icon = wibox.widget{
|
||||||
|
align = "center",
|
||||||
|
font = "icomoon 16",
|
||||||
|
markup = "",
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
local vol_button = wibox.widget{
|
||||||
|
vol_icon,
|
||||||
|
bg = control_button_bg,
|
||||||
|
shape = helpers.rrect(dpi(5)),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local vol = wibox.widget {
|
||||||
|
vol_button,
|
||||||
|
strategy = "min",
|
||||||
|
width = dpi(30),
|
||||||
|
widget = wibox.container.constraint,
|
||||||
|
}
|
||||||
|
|
||||||
|
vol:connect_signal("mouse::enter", function ()
|
||||||
|
vol_button.bg = control_button_bg_hover
|
||||||
|
end)
|
||||||
|
vol:connect_signal("mouse::leave", function ()
|
||||||
|
vol_button.bg = control_button_bg
|
||||||
|
end)
|
||||||
|
vol:buttons(gears.table.join(
|
||||||
|
awful.button({}, 1, function() helpers.volume_control(0) end)
|
||||||
|
))
|
||||||
|
|
||||||
|
awesome.connect_signal("signal::volume", function(value, muted)
|
||||||
|
local fill_color
|
||||||
|
local vol_value = value or 0
|
||||||
|
|
||||||
|
if muted then
|
||||||
|
vol_icon.markup = helpers.colorize_text("", beautiful.xcolor8)
|
||||||
|
fill_color = beautiful.xcolor8
|
||||||
|
else
|
||||||
|
vol_icon.markup = helpers.colorize_text("", beautiful.xforeground)
|
||||||
|
fill_color = vol_color
|
||||||
|
end
|
||||||
|
|
||||||
|
vol_slider.slider.value = vol_value
|
||||||
|
vol_slider.slider.color = fill_color
|
||||||
|
vol_tooltip.markup = helpers.colorize_text(vol_value .. "%", vol_color)
|
||||||
|
end)
|
||||||
|
|
||||||
|
vol_slider:buttons(gears.table.join(
|
||||||
|
awful.button({}, 1, function() helpers.volume_control(0) end),
|
||||||
|
-- Scrolling
|
||||||
|
awful.button({}, 4, function() helpers.volume_control(5) end),
|
||||||
|
awful.button({}, 5, function() helpers.volume_control(-5) end)
|
||||||
|
))
|
||||||
|
|
||||||
|
-- Playerctl
|
||||||
|
---------------
|
||||||
|
|
||||||
|
local playerctl = require("module.bling").signal.playerctl.lib()
|
||||||
|
local music_length = 0
|
||||||
|
|
||||||
|
playerctl:connect_signal("metadata", function(_, title, artist, album_path, album, ___, player_name)
|
||||||
|
if player_name == "mpd" then
|
||||||
|
local m_now = artist .. " - " .. title .. "/" .. album
|
||||||
|
|
||||||
|
music_art:set_image(gears.surface.load_uncached(album_path))
|
||||||
|
music_now:set_markup_silently(m_now)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
playerctl:connect_signal("position", function(_, interval_sec, length_sec, player_name)
|
||||||
|
if player_name == "mpd" then
|
||||||
|
local pos_now = tostring(os.date("!%M:%S", math.floor(interval_sec)))
|
||||||
|
local pos_length = tostring(os.date("!%M:%S", math.floor(length_sec)))
|
||||||
|
local pos_markup = pos_now .. helpers.colorize_text(" / " .. pos_length, beautiful.xcolor8)
|
||||||
|
|
||||||
|
music_art:set_image(gears.surface.load_uncached(album_path))
|
||||||
|
music_pos:set_markup_silently(pos_markup)
|
||||||
|
music_bar.value = (interval_sec / length_sec) * 100
|
||||||
|
music_length = length_sec
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
playerctl:connect_signal("playback_status", function(_, playing, player_name)
|
||||||
|
if player_name == "mpd" then
|
||||||
|
if playing then
|
||||||
|
music_play_pause_textbox:set_markup_silently(helpers.colorize_text("", beautiful.xcolor4))
|
||||||
|
else
|
||||||
|
music_play_pause_textbox:set_markup_silently(helpers.colorize_text("", beautiful.xcolor4))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
playerctl:connect_signal("loop_status", function(_, loop_status, player_name)
|
||||||
|
if player_name == "mpd" then
|
||||||
|
if loop_status == "none" then
|
||||||
|
loop_textbox:set_markup_silently("")
|
||||||
|
else
|
||||||
|
loop_textbox:set_markup_silently("")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
playerctl:connect_signal("shuffle", function(_, shuffle, player_name)
|
||||||
|
if player_name == "mpd" then
|
||||||
|
if shuffle then
|
||||||
|
shuffle_textbox:set_markup_silently("")
|
||||||
|
else
|
||||||
|
shuffle_textbox:set_markup_silently("")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local music_create_decoration = function (c)
|
||||||
|
|
||||||
|
-- Hide default titlebar
|
||||||
|
awful.titlebar.hide(c, beautiful.titlebar_pos)
|
||||||
|
|
||||||
|
-- Titlebar
|
||||||
|
awful.titlebar(c, { position = "top", size = beautiful.titlebar_size, bg = beautiful.xbackground }):setup {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
vol,
|
||||||
|
nil,
|
||||||
|
vol_slider,
|
||||||
|
spacing = dpi(2),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
stats_tooltip,
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
},
|
||||||
|
top = dpi(10),
|
||||||
|
bottom = dpi(10),
|
||||||
|
right = dpi(10),
|
||||||
|
left = dpi(15),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
forced_width = dpi(200),
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
{
|
||||||
|
widget = music_icon
|
||||||
|
},
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Sidebar
|
||||||
|
awful.titlebar(c, { position = "left", size = dpi(200), bg = beautiful.xbackground }):setup {
|
||||||
|
{
|
||||||
|
nil,
|
||||||
|
{
|
||||||
|
music_art_container,
|
||||||
|
bottom = dpi(20),
|
||||||
|
left = dpi(25),
|
||||||
|
right = dpi(25),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
expand = "none",
|
||||||
|
layout = wibox.layout.align.vertical
|
||||||
|
},
|
||||||
|
bg = beautiful.bg_accent,
|
||||||
|
shape = helpers.prrect(dpi(10), false, true, false, false),
|
||||||
|
widget = wibox.container.background,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Toolbar
|
||||||
|
awful.titlebar(c, { position = "bottom", size = dpi(63), bg = beautiful.bg_secondary }):setup {
|
||||||
|
music_bar,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
-- Go to playlist and focus currently playing song
|
||||||
|
control_button(c, "", beautiful.xforeground, beautiful.icon_font_name .. "Round 14", dpi(30), function()
|
||||||
|
awful.spawn.with_shell("mpc -q prev")
|
||||||
|
end),
|
||||||
|
-- Toggle play pause
|
||||||
|
music_play_pause,
|
||||||
|
-- Go to list of playlists
|
||||||
|
control_button(c, "", beautiful.xforeground, beautiful.icon_font_name .. "Round 14", dpi(30), function()
|
||||||
|
awful.spawn.with_shell("mpc -q next")
|
||||||
|
end),
|
||||||
|
layout = wibox.layout.flex.horizontal
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
step_function = wibox.container.scroll
|
||||||
|
.step_functions
|
||||||
|
.waiting_nonlinear_back_and_forth,
|
||||||
|
speed = 50,
|
||||||
|
{
|
||||||
|
widget = music_now,
|
||||||
|
},
|
||||||
|
-- forced_width = dpi(110),
|
||||||
|
widget = wibox.container.scroll.horizontal
|
||||||
|
},
|
||||||
|
left = dpi(15),
|
||||||
|
right = dpi(20),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
{
|
||||||
|
music_pos,
|
||||||
|
{
|
||||||
|
loop,
|
||||||
|
shuffle,
|
||||||
|
-- Go to list of playlists
|
||||||
|
control_button(c, "", beautiful.xforeground, beautiful.icon_font_name .. "Round 12", dpi(30), function()
|
||||||
|
helpers.send_key(c, "1")
|
||||||
|
end),
|
||||||
|
-- Go to visualizer
|
||||||
|
control_button(c, "", beautiful.xforeground, "icomoon 12", dpi(30), function()
|
||||||
|
helpers.send_key(c, "8")
|
||||||
|
end),
|
||||||
|
layout = wibox.layout.flex.horizontal
|
||||||
|
},
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
},
|
||||||
|
margins = dpi(15),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
layout = wibox.layout.align.vertical
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Set custom decoration flags
|
||||||
|
c.custom_decoration = { top = true, left = true, bottom = true }
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add the titlebar whenever a new music client is spawned
|
||||||
|
ruled.client.connect_signal("request::rules", function()
|
||||||
|
ruled.client.append_rule {
|
||||||
|
id = "music",
|
||||||
|
rule = {instance = "music"},
|
||||||
|
callback = music_create_decoration
|
||||||
|
}
|
||||||
|
end)
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
local lock_screen = require("ui.lockscreen")
|
local lock_screen = require("ui.lockscreen")
|
||||||
lock_screen.init()
|
lock_screen.init()
|
||||||
|
|
||||||
|
require("ui.bar")
|
||||||
|
require("ui.dashboard")
|
||||||
|
require("ui.decorations")
|
||||||
require("ui.notifs")
|
require("ui.notifs")
|
||||||
require("ui.tooltip")
|
require("ui.tooltip")
|
||||||
require("ui.bar")
|
|
||||||
require("ui.dash")
|
|
||||||
require("ui.decorations")
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ require("ui.notifs.notifications-center")
|
||||||
naughty.config.defaults.ontop = true
|
naughty.config.defaults.ontop = true
|
||||||
naughty.config.defaults.screen = awful.screen.focused()
|
naughty.config.defaults.screen = awful.screen.focused()
|
||||||
naughty.config.defaults.timeout = 3
|
naughty.config.defaults.timeout = 3
|
||||||
naughty.config.defaults.title = "System Notification"
|
naughty.config.defaults.title = "Notification"
|
||||||
naughty.config.defaults.position = "bottom_right"
|
naughty.config.defaults.position = "bottom_right"
|
||||||
|
|
||||||
-- Timeouts
|
-- Timeouts
|
||||||
|
@ -33,19 +33,19 @@ naughty.config.presets.low.timeout = 3
|
||||||
naughty.config.presets.critical.timeout = 0
|
naughty.config.presets.critical.timeout = 0
|
||||||
|
|
||||||
naughty.config.presets.normal = {
|
naughty.config.presets.normal = {
|
||||||
font = beautiful.font,
|
font = beautiful.font_name .. "medium 8",
|
||||||
fg = beautiful.fg_normal,
|
fg = beautiful.fg_normal,
|
||||||
bg = beautiful.bg_normal
|
bg = beautiful.bg_normal
|
||||||
}
|
}
|
||||||
|
|
||||||
naughty.config.presets.low = {
|
naughty.config.presets.low = {
|
||||||
font = beautiful.font,
|
font = beautiful.font_name .. "medium 8",
|
||||||
fg = beautiful.fg_normal,
|
fg = beautiful.fg_normal,
|
||||||
bg = beautiful.bg_normal
|
bg = beautiful.bg_normal
|
||||||
}
|
}
|
||||||
|
|
||||||
naughty.config.presets.critical = {
|
naughty.config.presets.critical = {
|
||||||
font = beautiful.font_name .. "10",
|
font = beautiful.font_name .. "medium 8",
|
||||||
fg = beautiful.xcolor1,
|
fg = beautiful.xcolor1,
|
||||||
bg = beautiful.bg_normal,
|
bg = beautiful.bg_normal,
|
||||||
timeout = 0
|
timeout = 0
|
||||||
|
@ -74,7 +74,7 @@ naughty.connect_signal("request::display", function(n)
|
||||||
id = "text_role",
|
id = "text_role",
|
||||||
align = "center",
|
align = "center",
|
||||||
valign = "center",
|
valign = "center",
|
||||||
font = beautiful.font_name .. "8",
|
font = beautiful.font_name .. "medium 8",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
left = dpi(6),
|
left = dpi(6),
|
||||||
|
@ -84,7 +84,7 @@ naughty.connect_signal("request::display", function(n)
|
||||||
bg = beautiful.xcolor0,
|
bg = beautiful.xcolor0,
|
||||||
forced_height = dpi(25),
|
forced_height = dpi(25),
|
||||||
forced_width = dpi(20),
|
forced_width = dpi(20),
|
||||||
shape = helpers.rrect(dpi(4)),
|
shape = helpers.rrect(dpi(6)),
|
||||||
widget = wibox.container.background
|
widget = wibox.container.background
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,6 +99,8 @@ naughty.connect_signal("request::display", function(n)
|
||||||
widget = naughty.list.actions
|
widget = naughty.list.actions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
helpers.add_hover_cursor(actions, "hand2")
|
||||||
|
|
||||||
naughty.layout.box {
|
naughty.layout.box {
|
||||||
notification = n,
|
notification = n,
|
||||||
type = "notification",
|
type = "notification",
|
||||||
|
@ -115,7 +117,7 @@ naughty.connect_signal("request::display", function(n)
|
||||||
image = appicon,
|
image = appicon,
|
||||||
resize = true,
|
resize = true,
|
||||||
clip_shape = helpers.rrect(
|
clip_shape = helpers.rrect(
|
||||||
beautiful.border_radius - 3),
|
dpi(6)),
|
||||||
widget = wibox.widget.imagebox
|
widget = wibox.widget.imagebox
|
||||||
},
|
},
|
||||||
strategy = "max",
|
strategy = "max",
|
||||||
|
@ -128,18 +130,18 @@ naughty.connect_signal("request::display", function(n)
|
||||||
{
|
{
|
||||||
markup = n.app_name,
|
markup = n.app_name,
|
||||||
align = "left",
|
align = "left",
|
||||||
font = beautiful.font,
|
font = beautiful.font_name .. "medium 9",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
markup = time,
|
markup = time,
|
||||||
align = "right",
|
align = "right",
|
||||||
font = beautiful.font,
|
font = beautiful.font_name .. "medium 9",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
layout = wibox.layout.align.horizontal
|
layout = wibox.layout.align.horizontal
|
||||||
},
|
},
|
||||||
top = dpi(7),
|
top = dpi(5),
|
||||||
left = dpi(20),
|
left = dpi(20),
|
||||||
right = dpi(20),
|
right = dpi(20),
|
||||||
bottom = dpi(5),
|
bottom = dpi(5),
|
||||||
|
@ -159,13 +161,12 @@ naughty.connect_signal("request::display", function(n)
|
||||||
.waiting_nonlinear_back_and_forth,
|
.waiting_nonlinear_back_and_forth,
|
||||||
speed = 50,
|
speed = 50,
|
||||||
{
|
{
|
||||||
markup = "<span weight='bold'>" ..
|
markup = n.title,
|
||||||
n.title .. "</span>",
|
font = beautiful.font_name .. "medium 9",
|
||||||
font = beautiful.font,
|
|
||||||
align = "left",
|
align = "left",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
forced_width = dpi(204),
|
forced_width = dpi(205),
|
||||||
widget = wibox.container.scroll
|
widget = wibox.container.scroll
|
||||||
.horizontal
|
.horizontal
|
||||||
},
|
},
|
||||||
|
@ -173,7 +174,7 @@ naughty.connect_signal("request::display", function(n)
|
||||||
{
|
{
|
||||||
markup = n.message,
|
markup = n.message,
|
||||||
align = "left",
|
align = "left",
|
||||||
font = beautiful.font,
|
font = beautiful.font_name .. "medium 8",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
right = 10,
|
right = 10,
|
||||||
|
@ -197,7 +198,7 @@ naughty.connect_signal("request::display", function(n)
|
||||||
image = n.icon,
|
image = n.icon,
|
||||||
resize = true,
|
resize = true,
|
||||||
clip_shape = helpers.rrect(
|
clip_shape = helpers.rrect(
|
||||||
beautiful.border_radius - 3),
|
dpi(6)),
|
||||||
widget = wibox.widget.imagebox
|
widget = wibox.widget.imagebox
|
||||||
},
|
},
|
||||||
strategy = "max",
|
strategy = "max",
|
||||||
|
@ -208,10 +209,10 @@ naughty.connect_signal("request::display", function(n)
|
||||||
expand = "none",
|
expand = "none",
|
||||||
layout = wibox.layout.align.vertical
|
layout = wibox.layout.align.vertical
|
||||||
},
|
},
|
||||||
top = dpi(0),
|
top = dpi(10),
|
||||||
left = dpi(10),
|
left = dpi(10),
|
||||||
right = dpi(10),
|
right = dpi(10),
|
||||||
bottom = dpi(0),
|
bottom = dpi(5),
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
layout = wibox.layout.fixed.horizontal
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
@ -224,13 +225,11 @@ naughty.connect_signal("request::display", function(n)
|
||||||
},
|
},
|
||||||
layout = wibox.layout.fixed.vertical
|
layout = wibox.layout.fixed.vertical
|
||||||
},
|
},
|
||||||
top = dpi(0),
|
top = dpi(5),
|
||||||
bottom = dpi(5),
|
bottom = dpi(5),
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
bg = beautiful.xbackground,
|
bg = beautiful.xbackground,
|
||||||
border_width = 0,
|
|
||||||
border_color = beautiful.widget_border_color,
|
|
||||||
shape = helpers.rrect(beautiful.border_radius),
|
shape = helpers.rrect(beautiful.border_radius),
|
||||||
widget = wibox.container.background
|
widget = wibox.container.background
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,8 @@ local helpers = require("helpers")
|
||||||
|
|
||||||
-- Header
|
-- Header
|
||||||
local notif_header = wibox.widget {
|
local notif_header = wibox.widget {
|
||||||
markup = '<b>Notifications</b>',
|
markup = "Notifications Center",
|
||||||
font = beautiful.font_name .. "12",
|
font = beautiful.font_name .. "Bold 12",
|
||||||
align = 'center',
|
align = 'center',
|
||||||
valign = 'center',
|
valign = 'center',
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
|
@ -34,7 +34,7 @@ local notif_header = wibox.widget {
|
||||||
-- Clear button
|
-- Clear button
|
||||||
local clear = wibox.widget {
|
local clear = wibox.widget {
|
||||||
markup = "",
|
markup = "",
|
||||||
font = beautiful.icon_font_name .. "14",
|
font = beautiful.icon_font_name .. "Round 16",
|
||||||
align = "center",
|
align = "center",
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
|
@ -46,7 +46,7 @@ clear:buttons(gears.table.join(
|
||||||
end)
|
end)
|
||||||
))
|
))
|
||||||
|
|
||||||
helpers.add_hover_cursor(clear, "hand1")
|
helpers.add_hover_cursor(clear, "hand2")
|
||||||
|
|
||||||
-- Empty notifs
|
-- Empty notifs
|
||||||
local empty = wibox.widget {
|
local empty = wibox.widget {
|
||||||
|
@ -56,32 +56,33 @@ local empty = wibox.widget {
|
||||||
layout = wibox.layout.align.horizontal,
|
layout = wibox.layout.align.horizontal,
|
||||||
nil,
|
nil,
|
||||||
{
|
{
|
||||||
markup = "",
|
image = beautiful.notification_icon,
|
||||||
font = beautiful.icon_font_name .. "28",
|
forced_width = dpi(60),
|
||||||
align = "center",
|
forced_height = dpi(60),
|
||||||
|
halign = "center",
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.imagebox
|
||||||
},
|
},
|
||||||
nil
|
nil
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
markup = 'You have no notifs!',
|
markup = 'You have no notifs!',
|
||||||
font = beautiful.font_name .. '10',
|
font = beautiful.font_name .. 'medium 10',
|
||||||
align = 'center',
|
align = 'center',
|
||||||
valign = 'center',
|
valign = 'center',
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
layout = wibox.layout.fixed.vertical,
|
layout = wibox.layout.fixed.vertical,
|
||||||
spacing = dpi(5)
|
spacing = dpi(10)
|
||||||
},
|
},
|
||||||
top = dpi(75),
|
top = dpi(100),
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Mouse scroll
|
-- Mouse scroll
|
||||||
local notif_container = wibox.layout.fixed.vertical()
|
local notif_container = wibox.layout.fixed.vertical()
|
||||||
notif_container.spacing = dpi(15)
|
notif_container.spacing = dpi(15)
|
||||||
notif_container.forced_width = beautiful.notifs_width or dpi(270)
|
notif_container.forced_width = dpi(270)
|
||||||
|
|
||||||
local remove_notif_empty = true
|
local remove_notif_empty = true
|
||||||
|
|
||||||
|
@ -100,52 +101,118 @@ remove_notifbox = function(box)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local create_notif = function(icon, n, width)
|
local return_date_time = function(format)
|
||||||
local time = os.date("%H:%M")
|
return os.date(format)
|
||||||
local box = {}
|
end
|
||||||
|
|
||||||
local dismiss = wibox.widget {
|
local parse_to_seconds = function(time)
|
||||||
markup = helpers.colorize_text("", beautiful.xcolor1),
|
local hourInSec = tonumber(string.sub(time, 1, 2)) * 3600
|
||||||
font = beautiful.icon_font_name .. "9",
|
local minInSec = tonumber(string.sub(time, 4, 5)) * 60
|
||||||
|
local getSec = tonumber(string.sub(time, 7, 8))
|
||||||
|
return (hourInSec + minInSec + getSec)
|
||||||
|
end
|
||||||
|
|
||||||
|
local create_notif = function(icon, n, width)
|
||||||
|
|
||||||
|
--Time
|
||||||
|
local time_of_pop = return_date_time('%H:%M:%S')
|
||||||
|
local exact_time = return_date_time('%I:%M %p')
|
||||||
|
local exact_date_time = return_date_time('%b %d, %I:%M %p')
|
||||||
|
|
||||||
|
local timepop = wibox.widget {
|
||||||
|
id = 'time_pop',
|
||||||
|
markup = nil,
|
||||||
|
font = beautiful.font_name .. "medium 8",
|
||||||
align = "center",
|
align = "center",
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textbox
|
visible = true,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
local time_of_popup = gears.timer {
|
||||||
|
timeout = 60,
|
||||||
|
call_now = true,
|
||||||
|
autostart = true,
|
||||||
|
callback = function()
|
||||||
|
|
||||||
|
local time_difference = nil
|
||||||
|
|
||||||
|
time_difference = parse_to_seconds(return_date_time('%H:%M:%S')) - parse_to_seconds(time_of_pop)
|
||||||
|
time_difference = tonumber(time_difference)
|
||||||
|
|
||||||
|
if time_difference < 60 then
|
||||||
|
timepop:set_markup('now')
|
||||||
|
|
||||||
|
elseif time_difference >= 60 and time_difference < 3600 then
|
||||||
|
local time_in_minutes = math.floor(time_difference / 60)
|
||||||
|
timepop:set_markup(time_in_minutes .. 'm ago')
|
||||||
|
|
||||||
|
elseif time_difference >= 3600 and time_difference < 86400 then
|
||||||
|
timepop:set_markup(exact_time)
|
||||||
|
|
||||||
|
elseif time_difference >= 86400 then
|
||||||
|
timepop:set_markup(exact_date_time)
|
||||||
|
return false
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
collectgarbage('collect')
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
local box = {}
|
||||||
|
|
||||||
|
-- Dismiss button
|
||||||
|
local dismiss= wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
markup = helpers.colorize_text("", beautiful.xcolor1),
|
||||||
|
font = beautiful.icon_font_name .. "Round 10",
|
||||||
|
align = "center",
|
||||||
|
valign = "center",
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
margins = dpi(2),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
shape = gears.shape.circle,
|
||||||
|
widget = wibox.container.background
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dismiss:connect_signal("mouse::enter", function()
|
||||||
|
dismiss.bg = beautiful.xcolor8
|
||||||
|
end)
|
||||||
|
|
||||||
|
dismiss:connect_signal("mouse::leave", function()
|
||||||
|
dismiss.bg = beautiful.xcolor0
|
||||||
|
end)
|
||||||
|
|
||||||
dismiss:buttons(gears.table.join(
|
dismiss:buttons(gears.table.join(
|
||||||
awful.button({}, 1, function()
|
awful.button({}, 1, function()
|
||||||
_G.remove_notifbox(box)
|
_G.remove_notifbox(box)
|
||||||
end)
|
end)
|
||||||
))
|
))
|
||||||
|
|
||||||
helpers.add_hover_cursor(dismiss, "hand1")
|
helpers.add_hover_cursor(dismiss, "hand2")
|
||||||
|
|
||||||
|
|
||||||
|
-- Create notifs
|
||||||
box = wibox.widget {
|
box = wibox.widget {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
{
|
image = icon,
|
||||||
{
|
resize = true,
|
||||||
image = icon,
|
clip_shape = helpers.rrect(dpi(6)),
|
||||||
resize = true,
|
halign = "center",
|
||||||
clip_shape = helpers.rrect(dpi(2)),
|
valign = "center",
|
||||||
halign = "center",
|
widget = wibox.widget.imagebox
|
||||||
valign = "center",
|
|
||||||
widget = wibox.widget.imagebox
|
|
||||||
},
|
|
||||||
strategy = 'exact',
|
|
||||||
height = 40,
|
|
||||||
width = 40,
|
|
||||||
widget = wibox.container.constraint
|
|
||||||
},
|
|
||||||
layout = wibox.layout.align.vertical
|
|
||||||
},
|
},
|
||||||
left = dpi(14),
|
strategy = 'exact',
|
||||||
right = dpi(4),
|
height = dpi(50),
|
||||||
top = dpi(12),
|
width = dpi(50),
|
||||||
bottom = dpi(12),
|
widget = wibox.container.constraint
|
||||||
widget = wibox.container.margin
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
@ -154,75 +221,65 @@ local create_notif = function(icon, n, width)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
step_function = wibox.container.scroll
|
step_function = wibox.container.scroll
|
||||||
.step_functions
|
.step_functions
|
||||||
.waiting_nonlinear_back_and_forth,
|
.waiting_nonlinear_back_and_forth,
|
||||||
speed = 50,
|
speed = 50,
|
||||||
{
|
{
|
||||||
markup = "<b>" .. n.title .. "</b>",
|
markup = n.title,
|
||||||
font = beautiful.font_name .. "10",
|
font = beautiful.font_name .. "medium 10",
|
||||||
align = "left",
|
align = "left",
|
||||||
-- visible = title_visible,
|
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
forced_width = dpi(140),
|
forced_width = dpi(140),
|
||||||
widget = wibox.container.scroll.horizontal
|
widget = wibox.container.scroll.horizontal
|
||||||
},
|
},
|
||||||
|
nil,
|
||||||
{
|
{
|
||||||
{
|
timepop,
|
||||||
dismiss,
|
layout = wibox.layout.fixed.horizontal
|
||||||
halign = "right",
|
|
||||||
widget = wibox.container.place
|
|
||||||
},
|
|
||||||
left = dpi(10),
|
|
||||||
widget = wibox.container.margin
|
|
||||||
},
|
},
|
||||||
layout = wibox.layout.fixed.horizontal
|
expand = "none",
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
step_function = wibox.container.scroll
|
step_function = wibox.container.scroll
|
||||||
.step_functions
|
.step_functions
|
||||||
.waiting_nonlinear_back_and_forth,
|
.waiting_nonlinear_back_and_forth,
|
||||||
speed = 50,
|
speed = 50,
|
||||||
{
|
{
|
||||||
markup = n.message,
|
markup = n.message,
|
||||||
|
font = beautiful.font_name .. "medium 8",
|
||||||
align = "left",
|
align = "left",
|
||||||
font = beautiful.font_name .. "9",
|
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.textbox
|
||||||
},
|
},
|
||||||
forced_width = dpi(125),
|
forced_width = dpi(165),
|
||||||
widget = wibox.container.scroll.horizontal
|
widget = wibox.container.scroll.horizontal
|
||||||
},
|
},
|
||||||
|
nil,
|
||||||
{
|
{
|
||||||
{
|
dismiss,
|
||||||
markup = time,
|
layout = wibox.layout.fixed.horizontal
|
||||||
align = "right",
|
|
||||||
valign = "bottom",
|
|
||||||
font = beautiful.font,
|
|
||||||
widget = wibox.widget.textbox
|
|
||||||
},
|
|
||||||
left = dpi(10),
|
|
||||||
widget = wibox.container.margin
|
|
||||||
},
|
},
|
||||||
layout = wibox.layout.fixed.horizontal
|
expand = "none",
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
},
|
},
|
||||||
|
spacing = dpi(2),
|
||||||
layout = wibox.layout.fixed.vertical
|
layout = wibox.layout.fixed.vertical
|
||||||
},
|
},
|
||||||
nil,
|
|
||||||
expand = "none",
|
expand = "none",
|
||||||
layout = wibox.layout.align.vertical
|
layout = wibox.layout.align.vertical
|
||||||
},
|
},
|
||||||
margins = dpi(8),
|
left = dpi(12),
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
layout = wibox.layout.align.horizontal
|
layout = wibox.layout.align.horizontal
|
||||||
},
|
},
|
||||||
top = dpi(2),
|
margins = dpi(8),
|
||||||
bottom = dpi(2),
|
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
bg = beautiful.xcolor0,
|
bg = beautiful.xcolor0,
|
||||||
shape = helpers.rrect(dpi(2)),
|
shape = helpers.rrect(dpi(6)),
|
||||||
widget = wibox.container.background
|
widget = wibox.container.background
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,6 +319,7 @@ naughty.connect_signal("request::display", function(n)
|
||||||
notif_container:insert(1, create_notif(appicon, n, width))
|
notif_container:insert(1, create_notif(appicon, n, width))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- Init widgets
|
||||||
local notif_center = wibox.widget {
|
local notif_center = wibox.widget {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
@ -278,37 +336,30 @@ local notif_center = wibox.widget {
|
||||||
},
|
},
|
||||||
notif_container,
|
notif_container,
|
||||||
|
|
||||||
spacing = dpi(10),
|
spacing = dpi(20),
|
||||||
layout = wibox.layout.fixed.vertical
|
layout = wibox.layout.fixed.vertical
|
||||||
}
|
}
|
||||||
|
|
||||||
notifs = wibox({
|
notifs = wibox({
|
||||||
type = "dock",
|
type = "dock",
|
||||||
screen = screen.primary,
|
screen = screen.primary,
|
||||||
height = beautiful.notifs_height or dpi(310),
|
height = dpi(380),
|
||||||
width = beautiful.notifs_width or dpi(270),
|
width = dpi(300),
|
||||||
shape = helpers.rrect(dpi(8)),
|
shape = helpers.rrect(beautiful.border_radius),
|
||||||
ontop = true,
|
ontop = true,
|
||||||
visible = false
|
visible = false
|
||||||
})
|
})
|
||||||
|
notifs.y = dpi(365)
|
||||||
|
|
||||||
awful.placement.bottom_left(
|
-- Rubato
|
||||||
notifs,
|
|
||||||
{
|
|
||||||
honor_workarea = true,
|
|
||||||
margins = {
|
|
||||||
left = beautiful.wibar_width + 11
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
local slide = rubato.timed{
|
local slide = rubato.timed{
|
||||||
pos = dpi(896),
|
pos = dpi(-300),
|
||||||
rate = 60,
|
rate = 60,
|
||||||
intro = 0.025,
|
intro = 0.3,
|
||||||
duration = 0.5,
|
duration = 0.8,
|
||||||
easing = rubato.quadratic,
|
easing = rubato.quadratic,
|
||||||
awestore_compat = true,
|
awestore_compat = true,
|
||||||
subscribed = function(pos) notifs.y = pos end
|
subscribed = function(pos) notifs.x = pos end
|
||||||
}
|
}
|
||||||
|
|
||||||
local notifs_status = false
|
local notifs_status = false
|
||||||
|
@ -319,14 +370,15 @@ slide.ended:subscribe(function()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- Make toogle button
|
||||||
notifs_show = function()
|
notifs_show = function()
|
||||||
notifs.visible = true
|
notifs.visible = true
|
||||||
slide:set(dpi(448))
|
slide:set(dpi(100))
|
||||||
notifs_status = false
|
notifs_status = false
|
||||||
end
|
end
|
||||||
|
|
||||||
notifs_hide = function()
|
notifs_hide = function()
|
||||||
slide:set(dpi(896))
|
slide:set(dpi(-375))
|
||||||
notifs_status = true
|
notifs_status = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -338,6 +390,7 @@ notifs_toggle = function()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- notifs setup
|
||||||
notifs:setup {
|
notifs:setup {
|
||||||
notif_center,
|
notif_center,
|
||||||
margins = dpi(15),
|
margins = dpi(15),
|
||||||
|
|
|
@ -12,13 +12,20 @@ local wibox = require("wibox")
|
||||||
-- Helpers
|
-- Helpers
|
||||||
local helpers = require("helpers")
|
local helpers = require("helpers")
|
||||||
|
|
||||||
-- Pop up
|
|
||||||
|
-- Pop Up Notification
|
||||||
------------
|
------------
|
||||||
|
|
||||||
local pop_icon = wibox.widget{
|
local pop_icon = wibox.widget{
|
||||||
font = beautiful.icon_font_name .. "Round 48",
|
{
|
||||||
align = "center",
|
id = "icon",
|
||||||
widget = wibox.widget.textbox
|
resize = true,
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
},
|
||||||
|
forced_height = dpi(150),
|
||||||
|
top = dpi(12),
|
||||||
|
bottom = dpi(12),
|
||||||
|
widget = wibox.container.margin
|
||||||
}
|
}
|
||||||
|
|
||||||
local pop_bar = wibox.widget {
|
local pop_bar = wibox.widget {
|
||||||
|
@ -28,7 +35,7 @@ local pop_bar = wibox.widget {
|
||||||
color = beautiful.bg_accent,
|
color = beautiful.bg_accent,
|
||||||
shape = gears.shape.rounded_bar,
|
shape = gears.shape.rounded_bar,
|
||||||
bar_shape = gears.shape.rounded_bar,
|
bar_shape = gears.shape.rounded_bar,
|
||||||
forced_height = dpi(5),
|
forced_height = dpi(24),
|
||||||
widget = wibox.widget.progressbar
|
widget = wibox.widget.progressbar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,16 +54,22 @@ pop:setup {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
helpers.vertical_pad(dpi(10)),
|
layout = wibox.layout.align.horizontal,
|
||||||
|
expand = 'none',
|
||||||
|
nil,
|
||||||
pop_icon,
|
pop_icon,
|
||||||
layout = wibox.layout.fixed.vertical
|
nil
|
||||||
},
|
},
|
||||||
nil,
|
layout = wibox.layout.fixed.vertical
|
||||||
pop_bar,
|
|
||||||
layout = wibox.layout.align.vertical
|
|
||||||
},
|
},
|
||||||
margins = dpi(30),
|
{
|
||||||
widget = wibox.container.margin
|
pop_bar,
|
||||||
|
left = dpi(24),
|
||||||
|
right = dpi(24),
|
||||||
|
bottom = dpi(24),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
layout = wibox.layout.align.vertical
|
||||||
},
|
},
|
||||||
bg = beautiful.xbackground,
|
bg = beautiful.xbackground,
|
||||||
shape = helpers.rrect(beautiful.pop_border_radius),
|
shape = helpers.rrect(beautiful.pop_border_radius),
|
||||||
|
@ -83,27 +96,127 @@ end
|
||||||
|
|
||||||
local vol_first_time = true
|
local vol_first_time = true
|
||||||
awesome.connect_signal("signal::volume", function(value, muted)
|
awesome.connect_signal("signal::volume", function(value, muted)
|
||||||
|
local icon = beautiful.volume_icon
|
||||||
|
|
||||||
if vol_first_time then
|
if vol_first_time then
|
||||||
vol_first_time = false
|
vol_first_time = false
|
||||||
else
|
else
|
||||||
pop_icon.markup = ""
|
local vol_icon = gears.color.recolor_image(icon, beautiful.xforeground)
|
||||||
|
icon = vol_icon
|
||||||
pop_bar.value = value
|
pop_bar.value = value
|
||||||
|
|
||||||
if muted then
|
if muted then
|
||||||
pop_icon.markup = ""
|
local muted_icon = gears.color.recolor_image(icon, beautiful.xcolor8)
|
||||||
|
icon = muted_icon
|
||||||
pop_bar.color = beautiful.xcolor8
|
pop_bar.color = beautiful.xcolor8
|
||||||
else
|
else
|
||||||
pop_bar.color = beautiful.pop_vol_color
|
pop_bar.color = beautiful.pop_vol_color
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
pop_icon.icon.image = icon
|
||||||
toggle_pop()
|
toggle_pop()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
awesome.connect_signal("signal::brightness", function(value)
|
awesome.connect_signal("signal::brightness", function(value)
|
||||||
pop_icon.markup = ""
|
local icon = beautiful.brightness_icon
|
||||||
pop_bar.value = value
|
|
||||||
pop_bar.color = beautiful.pop_brightness_color
|
|
||||||
|
|
||||||
|
if value ~= 0 then
|
||||||
|
pop_bar.color = beautiful.pop_brightness_color
|
||||||
|
else
|
||||||
|
local bri_icon = gears.color.recolor_image(icon, beautiful.xcolor8)
|
||||||
|
icon = bri_icon
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
pop_bar.value = value
|
||||||
|
pop_icon.icon.image = icon
|
||||||
toggle_pop()
|
toggle_pop()
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
-- Layout list
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
local layout_list = awful.widget.layoutlist {
|
||||||
|
source = awful.widget.layoutlist.source.default_layouts, -- DOC_HIDE
|
||||||
|
spacing = dpi(24),
|
||||||
|
base_layout = wibox.widget {
|
||||||
|
spacing = dpi(24),
|
||||||
|
forced_num_cols = 4,
|
||||||
|
layout = wibox.layout.grid.vertical
|
||||||
|
},
|
||||||
|
widget_template = {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
id = "icon_role",
|
||||||
|
forced_height = dpi(68),
|
||||||
|
forced_width = dpi(68),
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
},
|
||||||
|
margins = dpi(24),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
id = "background_role",
|
||||||
|
forced_width = dpi(68),
|
||||||
|
forced_height = dpi(68),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local layout_popup = awful.popup {
|
||||||
|
widget = wibox.widget {
|
||||||
|
{layout_list, margins = dpi(24), widget = wibox.container.margin},
|
||||||
|
bg = beautiful.xbackground,
|
||||||
|
shape = helpers.rrect(beautiful.border_radius),
|
||||||
|
border_color = beautiful.widget_border_color,
|
||||||
|
border_width = beautiful.widget_border_width,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
placement = awful.placement.centered,
|
||||||
|
ontop = true,
|
||||||
|
visible = false,
|
||||||
|
bg = beautiful.xbackground .. "00"
|
||||||
|
}
|
||||||
|
|
||||||
|
function gears.table.iterate_value(t, value, step_size, filter, start_at)
|
||||||
|
local k = gears.table.hasitem(t, value, true, start_at)
|
||||||
|
if not k then return end
|
||||||
|
|
||||||
|
step_size = step_size or 1
|
||||||
|
local new_key = gears.math.cycle(#t, k + step_size)
|
||||||
|
|
||||||
|
if filter and not filter(t[new_key]) then
|
||||||
|
for i = 1, #t do
|
||||||
|
local k2 = gears.math.cycle(#t, new_key + i)
|
||||||
|
if filter(t[k2]) then return t[k2], k2 end
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
return t[new_key], new_key
|
||||||
|
end
|
||||||
|
|
||||||
|
awful.keygrabber {
|
||||||
|
start_callback = function() layout_popup.visible = true end,
|
||||||
|
stop_callback = function() layout_popup.visible = false end,
|
||||||
|
export_keybindings = true,
|
||||||
|
stop_event = "release",
|
||||||
|
stop_key = {"Escape", "Super_L", "Super_R", "Mod4"},
|
||||||
|
keybindings = {
|
||||||
|
{
|
||||||
|
{modkey, "Shift"}, " ", function()
|
||||||
|
awful.layout.set(gears.table.iterate_value(layout_list.layouts,
|
||||||
|
layout_list.current_layout, -1),
|
||||||
|
nil)
|
||||||
|
end
|
||||||
|
}, {
|
||||||
|
{modkey}, " ", function()
|
||||||
|
awful.layout.set(gears.table.iterate_value(layout_list.layouts,
|
||||||
|
layout_list.current_layout, 1),
|
||||||
|
nil)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -21,10 +21,9 @@ local screen_width = awful.screen.focused().geometry.width
|
||||||
local screen_height = awful.screen.focused().geometry.height
|
local screen_height = awful.screen.focused().geometry.height
|
||||||
|
|
||||||
|
|
||||||
-- Tooltip
|
|
||||||
------------
|
|
||||||
|
|
||||||
-- Helpers
|
-- Helpers
|
||||||
|
-------------
|
||||||
|
|
||||||
local function create_boxed_widget(widget_to_be_boxed, width, height, inner_pad)
|
local function create_boxed_widget(widget_to_be_boxed, width, height, inner_pad)
|
||||||
local box_container = wibox.container.background()
|
local box_container = wibox.container.background()
|
||||||
box_container.bg = beautiful.xcolor0
|
box_container.bg = beautiful.xcolor0
|
||||||
|
@ -56,114 +55,120 @@ local function create_boxed_widget(widget_to_be_boxed, width, height, inner_pad)
|
||||||
return boxed_widget
|
return boxed_widget
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Battery
|
|
||||||
local batt_bar = wibox.widget {
|
|
||||||
max_value = 100,
|
|
||||||
value = 20,
|
|
||||||
background_color = beautiful.transparent,
|
|
||||||
color = beautiful.xcolor8,
|
|
||||||
widget = wibox.widget.progressbar
|
|
||||||
}
|
|
||||||
|
|
||||||
local batt_bar_container = wibox.widget {
|
-- Battery
|
||||||
batt_bar,
|
-------------
|
||||||
direction = "east",
|
|
||||||
widget = wibox.container.rotate
|
|
||||||
}
|
|
||||||
|
|
||||||
local batt_icon = wibox.widget{
|
local batt_bar = wibox.widget {
|
||||||
markup = helpers.colorize_text("", beautiful.xcolor1),
|
max_value = 100,
|
||||||
font = beautiful.icon_font_name .. "Round 18",
|
value = 20,
|
||||||
align = "center",
|
background_color = beautiful.transparent,
|
||||||
valign = "center",
|
color = beautiful.xcolor8,
|
||||||
widget = wibox.widget.textbox
|
widget = wibox.widget.progressbar
|
||||||
}
|
}
|
||||||
|
|
||||||
local batt_icon_container = wibox.widget{
|
local batt_bar_container = wibox.widget {
|
||||||
|
batt_bar,
|
||||||
|
direction = "east",
|
||||||
|
widget = wibox.container.rotate
|
||||||
|
}
|
||||||
|
|
||||||
|
local batt_icon = wibox.widget{
|
||||||
|
markup = helpers.colorize_text("", beautiful.xcolor1),
|
||||||
|
font = beautiful.icon_font_name .. "Round 18",
|
||||||
|
align = "center",
|
||||||
|
valign = "center",
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
local batt_icon_container = wibox.widget{
|
||||||
|
nil,
|
||||||
|
{
|
||||||
nil,
|
nil,
|
||||||
{
|
batt_icon,
|
||||||
nil,
|
|
||||||
batt_icon,
|
|
||||||
expand = "none",
|
|
||||||
layout = wibox.layout.align.vertical
|
|
||||||
},
|
|
||||||
expand = "none",
|
expand = "none",
|
||||||
layout = wibox.layout.align.horizontal
|
layout = wibox.layout.align.vertical
|
||||||
}
|
},
|
||||||
|
expand = "none",
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
}
|
||||||
|
|
||||||
local batt = wibox.widget{
|
local batt = wibox.widget{
|
||||||
batt_bar_container,
|
batt_bar_container,
|
||||||
batt_icon_container,
|
batt_icon_container,
|
||||||
layout = wibox.layout.stack
|
layout = wibox.layout.stack
|
||||||
}
|
}
|
||||||
|
|
||||||
local batt_val = 0
|
local batt_val = 0
|
||||||
local batt_charger
|
local batt_charger
|
||||||
|
|
||||||
awesome.connect_signal("signal::battery", function(value)
|
awesome.connect_signal("signal::battery", function(value)
|
||||||
batt_val = value
|
batt_val = value
|
||||||
awesome.emit_signal("widget::battery")
|
awesome.emit_signal("widget::battery")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
awesome.connect_signal("signal::charger", function(state)
|
awesome.connect_signal("signal::charger", function(state)
|
||||||
batt_charger = state
|
batt_charger = state
|
||||||
awesome.emit_signal("widget::battery")
|
awesome.emit_signal("widget::battery")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
awesome.connect_signal("widget::battery", function()
|
awesome.connect_signal("widget::battery", function()
|
||||||
local b = ""
|
local b = ""
|
||||||
local fill_color = beautiful.xcolor2
|
local fill_color = beautiful.xcolor2
|
||||||
|
|
||||||
if batt_val >= 88 and batt_val <= 100 then
|
if batt_val >= 88 and batt_val <= 100 then
|
||||||
b = ""
|
b = ""
|
||||||
elseif batt_val >= 76 and batt_val < 88 then
|
elseif batt_val >= 76 and batt_val < 88 then
|
||||||
b = ""
|
b = ""
|
||||||
elseif batt_val >= 64 and batt_val < 76 then
|
elseif batt_val >= 64 and batt_val < 76 then
|
||||||
b = ""
|
b = ""
|
||||||
elseif batt_val >= 52 and batt_val < 64 then
|
elseif batt_val >= 52 and batt_val < 64 then
|
||||||
b = ""
|
b = ""
|
||||||
elseif batt_val >= 40 and batt_val < 52 then
|
elseif batt_val >= 40 and batt_val < 52 then
|
||||||
b = ""
|
b = ""
|
||||||
elseif batt_val >= 28 and batt_val < 40 then
|
elseif batt_val >= 28 and batt_val < 40 then
|
||||||
b = ""
|
b = ""
|
||||||
elseif batt_val >= 16 and batt_val < 28 then
|
elseif batt_val >= 16 and batt_val < 28 then
|
||||||
b = ""
|
b = ""
|
||||||
else
|
else
|
||||||
b = ""
|
b = ""
|
||||||
end
|
end
|
||||||
|
|
||||||
if batt_charger then
|
if batt_charger then
|
||||||
b = ""
|
b = ""
|
||||||
if batt_val >= 11 and batt_val <= 30 then
|
|
||||||
fill_color = beautiful.xcolor3
|
|
||||||
elseif batt_val <= 10 then
|
|
||||||
fill_color = beautiful.xcolor1
|
|
||||||
end
|
|
||||||
else
|
|
||||||
if batt_val >= 11 and batt_val <= 30 then
|
if batt_val >= 11 and batt_val <= 30 then
|
||||||
fill_color = beautiful.xcolor3
|
fill_color = beautiful.xcolor3
|
||||||
elseif batt_val <= 10 then
|
elseif batt_val <= 10 then
|
||||||
fill_color = beautiful.xcolor1
|
fill_color = beautiful.xcolor1
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
if batt_val >= 11 and batt_val <= 30 then
|
||||||
|
fill_color = beautiful.xcolor3
|
||||||
|
elseif batt_val <= 10 then
|
||||||
|
fill_color = beautiful.xcolor1
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
batt_bar.value = batt_val
|
batt_bar.value = batt_val
|
||||||
batt_icon.markup = helpers.colorize_text(b, fill_color)
|
batt_icon.markup = helpers.colorize_text(b, fill_color)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
---- Calendar
|
|
||||||
|
|
||||||
-- Date
|
-- Date
|
||||||
|
----------
|
||||||
|
|
||||||
local date_day = wibox.widget{
|
local date_day = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 9",
|
font = beautiful.font_name .. "bold 10",
|
||||||
format = helpers.colorize_text("%A", beautiful.xcolor4),
|
format = helpers.colorize_text("%A", beautiful.xcolor4),
|
||||||
|
align = "center",
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textclock
|
widget = wibox.widget.textclock
|
||||||
}
|
}
|
||||||
|
|
||||||
local date_month = wibox.widget{
|
local date_month = wibox.widget{
|
||||||
font = beautiful.font_name .. "bold 14",
|
font = beautiful.font_name .. "bold 14",
|
||||||
format = "%d %B",
|
format = "%d %B %Y",
|
||||||
|
align = "center",
|
||||||
valign = "center",
|
valign = "center",
|
||||||
widget = wibox.widget.textclock
|
widget = wibox.widget.textclock
|
||||||
}
|
}
|
||||||
|
@ -175,11 +180,14 @@ local date = wibox.widget{
|
||||||
layout = wibox.layout.align.vertical
|
layout = wibox.layout.align.vertical
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
-- Separator
|
-- Separator
|
||||||
|
---------------
|
||||||
|
|
||||||
local separator = wibox.widget{
|
local separator = wibox.widget{
|
||||||
{
|
{
|
||||||
bg = beautiful.xcolor5,
|
bg = beautiful.xcolor5,
|
||||||
shape = helpers.rrect(dpi(3)),
|
shape = helpers.rrect(dpi(5)),
|
||||||
forced_width = dpi(3),
|
forced_width = dpi(3),
|
||||||
widget = wibox.container.background
|
widget = wibox.container.background
|
||||||
},
|
},
|
||||||
|
@ -187,22 +195,16 @@ local separator = wibox.widget{
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Time
|
|
||||||
local time_hour = wibox.widget{
|
|
||||||
font = beautiful.font_name .. "bold 18",
|
|
||||||
format = "%H",
|
|
||||||
align = "center",
|
|
||||||
widget = wibox.widget.textclock
|
|
||||||
}
|
|
||||||
|
|
||||||
local time_min = wibox.widget{
|
-- Analog clock
|
||||||
font = beautiful.font_name .. "bold 18",
|
------------------
|
||||||
format = "%M",
|
|
||||||
align = "center",
|
local analog_clock = require("ui.widgets.analog_clock")
|
||||||
widget = wibox.widget.textclock
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Wifi
|
-- Wifi
|
||||||
|
----------
|
||||||
|
|
||||||
local wifi_status_icon = wibox.widget{
|
local wifi_status_icon = wibox.widget{
|
||||||
markup = "Offline",
|
markup = "Offline",
|
||||||
font = beautiful.icon_font_name .. "Round 14",
|
font = beautiful.icon_font_name .. "Round 14",
|
||||||
|
@ -213,12 +215,10 @@ local wifi_status_icon = wibox.widget{
|
||||||
|
|
||||||
local wifi = wibox.widget{
|
local wifi = wibox.widget{
|
||||||
wifi_status_icon,
|
wifi_status_icon,
|
||||||
forced_width = dpi(35),
|
forced_width = dpi(30),
|
||||||
forced_height = dpi(35),
|
forced_height = dpi(30),
|
||||||
bg = beautiful.xcolor0,
|
bg = beautiful.xcolor8,
|
||||||
shape = helpers.rrect(beautiful.tooltip_box_border_radius),
|
shape = gears.shape.circle,
|
||||||
shape_border_width = dpi(3),
|
|
||||||
shape_border_color = beautiful.xcolor1,
|
|
||||||
widget = wibox.container.background
|
widget = wibox.container.background
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,7 +243,10 @@ awesome.connect_signal("widget::network", function ()
|
||||||
wifi_status_icon.markup = helpers.colorize_text(w, fill_color)
|
wifi_status_icon.markup = helpers.colorize_text(w, fill_color)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
-- UpTime
|
-- UpTime
|
||||||
|
------------
|
||||||
|
|
||||||
local uptime_label = wibox.widget{
|
local uptime_label = wibox.widget{
|
||||||
font = beautiful.font_name .. "medium 9",
|
font = beautiful.font_name .. "medium 9",
|
||||||
markup = helpers.colorize_text("Uptime", beautiful.xcolor5),
|
markup = helpers.colorize_text("Uptime", beautiful.xcolor5),
|
||||||
|
@ -277,52 +280,57 @@ local uptime_container = wibox.widget{
|
||||||
layout = wibox.layout.align.horizontal
|
layout = wibox.layout.align.horizontal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
-- Widget
|
-- Widget
|
||||||
local date_boxed = create_boxed_widget(date, dpi(110), dpi(50), true)
|
------------
|
||||||
local hour_boxed = create_boxed_widget(time_hour, dpi(50), dpi(50), true)
|
|
||||||
local min_boxed = create_boxed_widget(time_min, dpi(50), dpi(50), true)
|
|
||||||
local batt_boxed = create_boxed_widget(batt, dpi(50), dpi(110))
|
local batt_boxed = create_boxed_widget(batt, dpi(50), dpi(110))
|
||||||
local uptime_boxed = create_boxed_widget(uptime_container, dpi(170), dpi(50), true)
|
local uptime_boxed = create_boxed_widget(uptime_container, dpi(170), dpi(50), true)
|
||||||
|
local analog_clock_boxed = create_boxed_widget(analog_clock, dpi(110), dpi(110), true)
|
||||||
|
|
||||||
-- Tooltip
|
|
||||||
cal_tooltip = wibox({
|
-- Tooltip setup
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
stats_tooltip = wibox({
|
||||||
type = "dock",
|
type = "dock",
|
||||||
screen = screen.primary,
|
screen = screen.primary,
|
||||||
height = dpi(200),
|
height = beautiful.tooltip_height,
|
||||||
width = dpi(200),
|
width = beautiful.tooltip_width,
|
||||||
shape = helpers.rrect(beautiful.tooltip_border_radius - 1),
|
shape = helpers.rrect(beautiful.tooltip_box_border_radius),
|
||||||
bg = beautiful.transparent,
|
bg = beautiful.transparent,
|
||||||
ontop = true,
|
ontop = true,
|
||||||
visible = false
|
visible = false
|
||||||
})
|
})
|
||||||
|
|
||||||
awful.placement.bottom_left(cal_tooltip, {honor_workarea = true, margins = {left = beautiful.wibar_width + 11, bottom = dpi(44)}})
|
awful.placement.bottom_left(stats_tooltip, {
|
||||||
|
margins = {
|
||||||
|
left = beautiful.wibar_width + 55,
|
||||||
|
bottom = dpi(33)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
cal_tooltip_show = function()
|
stats_tooltip_show = function()
|
||||||
cal_tooltip.visible = true
|
stats_tooltip.visible = true
|
||||||
end
|
end
|
||||||
|
|
||||||
cal_tooltip_hide = function()
|
stats_tooltip_hide = function()
|
||||||
cal_tooltip.visible = false
|
stats_tooltip.visible = false
|
||||||
end
|
end
|
||||||
|
|
||||||
cal_tooltip:setup {
|
stats_tooltip:setup {
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
date_boxed,
|
date,
|
||||||
{
|
{
|
||||||
hour_boxed,
|
analog_clock_boxed,
|
||||||
min_boxed,
|
batt_boxed,
|
||||||
layout = wibox.layout.fixed.horizontal
|
layout = wibox.layout.fixed.horizontal
|
||||||
},
|
},
|
||||||
layout = wibox.layout.fixed.vertical
|
layout = wibox.layout.fixed.vertical
|
||||||
},
|
},
|
||||||
{
|
|
||||||
batt_boxed,
|
|
||||||
layout = wibox.layout.fixed.vertical
|
|
||||||
},
|
|
||||||
layout = wibox.layout.fixed.horizontal
|
layout = wibox.layout.fixed.horizontal
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -335,6 +343,6 @@ cal_tooltip:setup {
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
shape = helpers.rrect(beautiful.tooltip_border_radius),
|
shape = helpers.rrect(beautiful.tooltip_border_radius),
|
||||||
bg = beautiful.xbackground,
|
bg = beautiful.tooltip_bg,
|
||||||
widget = wibox.container.background
|
widget = wibox.container.background
|
||||||
}
|
}
|
||||||
|
|
78
config/awesome/ui/widgets/analog_clock.lua
Normal file
78
config/awesome/ui/widgets/analog_clock.lua
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
-- Standard awesome library
|
||||||
|
local gears = require("gears")
|
||||||
|
local wibox = require("wibox")
|
||||||
|
local math = require("math")
|
||||||
|
|
||||||
|
-- Theme handling library
|
||||||
|
local beautiful = require("beautiful")
|
||||||
|
|
||||||
|
-- C libraries
|
||||||
|
local cairo = require("lgi").cairo
|
||||||
|
|
||||||
|
-- Analog clock
|
||||||
|
------------------
|
||||||
|
|
||||||
|
local function create_minute_pointer(minute)
|
||||||
|
local img = cairo.ImageSurface(cairo.Format.ARGB32, 1000, 1000)
|
||||||
|
local cr = cairo.Context(img)
|
||||||
|
local angle = (minute / 60) * 2 * math.pi
|
||||||
|
cr:translate(500, 500)
|
||||||
|
cr:rotate(angle)
|
||||||
|
cr:translate(-500, -500)
|
||||||
|
cr:set_source(gears.color(beautiful.xforeground))
|
||||||
|
cr:rectangle(485, 100, 30, 420)
|
||||||
|
cr:fill()
|
||||||
|
return img
|
||||||
|
end
|
||||||
|
|
||||||
|
local function create_hour_pointer(hour)
|
||||||
|
local img = cairo.ImageSurface(cairo.Format.ARGB32, 1000, 1000)
|
||||||
|
local cr = cairo.Context(img)
|
||||||
|
local angle = ((hour % 12) / 12) * 2 * math.pi
|
||||||
|
cr:translate(500, 500)
|
||||||
|
cr:rotate(angle)
|
||||||
|
cr:translate(-500, -500)
|
||||||
|
cr:set_source(gears.color(beautiful.xcolor4))
|
||||||
|
cr:rectangle(480, 200, 40, 320)
|
||||||
|
cr:fill()
|
||||||
|
return img
|
||||||
|
end
|
||||||
|
|
||||||
|
local minute_pointer = create_minute_pointer(37)
|
||||||
|
local hour_pointer = create_hour_pointer(17)
|
||||||
|
|
||||||
|
local minute_pointer_img = wibox.widget.imagebox()
|
||||||
|
local hour_pointer_img = wibox.widget.imagebox()
|
||||||
|
|
||||||
|
local analog_clock = wibox.widget {
|
||||||
|
{ -- circle
|
||||||
|
wibox.widget.textbox(""),
|
||||||
|
shape = function(cr, width, height) gears.shape.circle(cr, width, height, height / 2) end,
|
||||||
|
shape_border_width = 4,
|
||||||
|
shape_border_color = beautiful.xcolor8,
|
||||||
|
bg = "alpha",
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
minute_pointer_img,
|
||||||
|
hour_pointer_img,
|
||||||
|
layout = wibox.layout.stack
|
||||||
|
}
|
||||||
|
|
||||||
|
local minute = 0
|
||||||
|
local hour = 0
|
||||||
|
|
||||||
|
gears.timer {
|
||||||
|
timeout = 30,
|
||||||
|
call_now = true,
|
||||||
|
autostart = true,
|
||||||
|
callback = function()
|
||||||
|
minute = os.date("%M")
|
||||||
|
hour = os.date("%H")
|
||||||
|
minute_pointer = create_minute_pointer(minute)
|
||||||
|
hour_pointer = create_hour_pointer(hour + (minute / 60))
|
||||||
|
minute_pointer_img.image = minute_pointer
|
||||||
|
hour_pointer_img.image = hour_pointer
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
return analog_clock
|
|
@ -5,6 +5,7 @@ local wibox = require("wibox")
|
||||||
local beautiful = require("beautiful")
|
local beautiful = require("beautiful")
|
||||||
local xresources = require("beautiful.xresources")
|
local xresources = require("beautiful.xresources")
|
||||||
local dpi = xresources.apply_dpi
|
local dpi = xresources.apply_dpi
|
||||||
|
local helpers = require("helpers")
|
||||||
|
|
||||||
local get_taglist = function(s)
|
local get_taglist = function(s)
|
||||||
-- Taglist buttons
|
-- Taglist buttons
|
||||||
|
@ -25,15 +26,13 @@ local get_taglist = function(s)
|
||||||
-- The actual png icons
|
-- The actual png icons
|
||||||
-- I do have the svgs, but inkscape does a better job of scaling
|
-- I do have the svgs, but inkscape does a better job of scaling
|
||||||
local ghost = gears.surface.load_uncached(
|
local ghost = gears.surface.load_uncached(
|
||||||
gfs.get_configuration_dir() .. "theme/assets/icons/taglist/ghost.png")
|
gfs.get_configuration_dir() .. "theme/assets/icons/taglist/ghost.png")
|
||||||
local ghost_icon = gears.color.recolor_image(ghost, beautiful.xcolor6)
|
local ghost_icon = gears.color.recolor_image(ghost, beautiful.xcolor6)
|
||||||
|
|
||||||
local dot = gears.surface.load_uncached(
|
local dot = gears.surface.load_uncached(
|
||||||
gfs.get_configuration_dir() .. "theme/assets/icons/taglist/dot.png")
|
gfs.get_configuration_dir() .. "theme/assets/icons/taglist/dot.png")
|
||||||
local dot_icon = gears.color.recolor_image(dot, beautiful.xcolor8)
|
local dot_icon = gears.color.recolor_image(dot, beautiful.xcolor8)
|
||||||
|
|
||||||
local pacman = gears.surface.load_uncached(
|
local pacman = gears.surface.load_uncached(
|
||||||
gfs.get_configuration_dir() .. "theme/assets/icons/taglist/pacman.png")
|
gfs.get_configuration_dir() .. "theme/assets/icons/taglist/pacman.png")
|
||||||
local pacman_icon = gears.color.recolor_image(pacman, beautiful.xcolor3)
|
local pacman_icon = gears.color.recolor_image(pacman, beautiful.xcolor3)
|
||||||
|
|
||||||
-- Function to update the tags
|
-- Function to update the tags
|
||||||
|
@ -51,13 +50,15 @@ local get_taglist = function(s)
|
||||||
local pac_taglist = awful.widget.taglist {
|
local pac_taglist = awful.widget.taglist {
|
||||||
screen = s,
|
screen = s,
|
||||||
filter = awful.widget.taglist.filter.all,
|
filter = awful.widget.taglist.filter.all,
|
||||||
style = {shape = gears.shape.rectangle},
|
style = {
|
||||||
|
shape = helpers.rrect(dpi(10))
|
||||||
|
},
|
||||||
layout = {spacing = 0, layout = wibox.layout.fixed.vertical},
|
layout = {spacing = 0, layout = wibox.layout.fixed.vertical},
|
||||||
widget_template = {
|
widget_template = {
|
||||||
{
|
{
|
||||||
{id = 'icon_role', widget = wibox.widget.imagebox},
|
{id = 'icon_role', widget = wibox.widget.imagebox},
|
||||||
id = 'margin_role',
|
id = 'margin_role',
|
||||||
margins = dpi(8),
|
margins = dpi(10),
|
||||||
widget = wibox.container.margin
|
widget = wibox.container.margin
|
||||||
},
|
},
|
||||||
id = 'background_role',
|
id = 'background_role',
|
||||||
|
@ -70,18 +71,10 @@ local get_taglist = function(s)
|
||||||
awesome.emit_signal("bling::tag_preview::visibility", s,
|
awesome.emit_signal("bling::tag_preview::visibility", s,
|
||||||
true)
|
true)
|
||||||
end
|
end
|
||||||
if self.bg ~= beautiful.lighter_bg then
|
|
||||||
self.backup = self.bg
|
|
||||||
self.has_backup = true
|
|
||||||
end
|
|
||||||
self.bg = beautiful.lighter_bg
|
|
||||||
end)
|
end)
|
||||||
self:connect_signal('mouse::leave', function()
|
self:connect_signal('mouse::leave', function()
|
||||||
awesome.emit_signal("bling::tag_preview::visibility", s,
|
awesome.emit_signal("bling::tag_preview::visibility", s,
|
||||||
false)
|
false)
|
||||||
if self.has_backup then
|
|
||||||
self.bg = self.backup
|
|
||||||
end
|
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
update_callback = function(self, c3, index, objects)
|
update_callback = function(self, c3, index, objects)
|
||||||
|
|
Loading…
Reference in a new issue