This commit is contained in:
VincentKnightTesting 2022-04-08 18:24:18 -05:00
parent 595ce9a1c3
commit 5ea81e6db1
10 changed files with 495 additions and 18 deletions

View file

@ -15,7 +15,9 @@ start mpDris2 # add playerctl support to mpd
start picom --experimental-backends --config $HOME/.config/awesome/theme/picom.conf
# auth
start /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
# load X colors
start xrdb $HOME/.Xresources
start xwallpaper --zoom ~/Pictures/city-topview.png

View file

@ -120,10 +120,8 @@ ruled.client.connect_signal("request::rules", function()
}
},
properties = {
floating = true,
width = screen_width * 0.25,
height = screen_height * 0.4,
placement = helpers.centered_client_placement
floating = false
}
}

View file

@ -18,13 +18,13 @@ dpi = beautiful.xresources.apply_dpi
beautiful.init(gfs.get_configuration_dir() .. "theme/theme.lua")
-- Default Applications
terminal = "wezterm"
terminal = "kitty"
editor = "emacs -nw"
vscode = "emacs -nw"
browser = "firefox"
launcher = "rofi -show drun -theme " .. os.getenv("HOME") .. "/.config/awesome/theme/rofi.rasi"
file_manager = "nautilus"
music_client = "wezterm start --class music byobu"
music_client = "kitty --class music byobu"
-- Weather API
openweathermap_key = "" -- API Key

View file

@ -11,7 +11,7 @@ round-borders-exclude = [
];
#========================= Shadows =========================#
shadow = true;
shadow = false;
shadow-radius = 14;
shadow-opacity = 0.50;
shadow-offset-x = -14;
@ -39,11 +39,12 @@ fade-exclude = [
]
#========================= Opacity =========================#
inactive-opacity = 1;
# inactive-opacity = 1;
frame-opacity = 1;
inactive-opacity-override = false;
active-opacity = 1.0;
inactive-dim = 0.0;
# active-opacity = 1.0;
# inactive-dim = 0.0;
focus-exclude = [
"class_g = 'Cairo-clock'",
@ -58,12 +59,12 @@ opacity-rule = [
#========================= Blurring =========================#
blur: {
method = "dual_kawase";
strength = 5.0;
strength = 5.0;
deviation = 1.0;
kernel = "11x11gaussian";
}
blur-background = false;
blur-background = true;
blur-background-frame = true;
blur-background-fixed = true;
@ -102,3 +103,5 @@ wintypes:
dock = {full-shadow = true;};
dropdown_menu = { full-shadow = true;};
};

View file

@ -166,7 +166,7 @@ theme.dashboard_box_fg = theme.dashboard_fg
-- Playerctl
theme.playerctl_ignore = {"firefox", "qutebrowser", "chromium", "brave"}
theme.playerctl_player = {"spotify", "mpd", "%any"}
theme.playerctl_update_on_activity = true
theme.playerctl_update_on_activity = false
theme.playerctl_position_update_interval = 1
-- Mainmenu

View file

@ -34,3 +34,4 @@ end
require("ui.decorations.titlebar")
require("ui.decorations.music")
require("ui.decorations.twitch")

View 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_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)

View file

@ -37,5 +37,6 @@ return {
},
enable_tab_bar = false,
default_cursor_style = "BlinkingUnderline",
exit_behavior = "CloseOnCleanExit"
exit_behavior = "CloseOnCleanExit",
window_background_opacity = 0.20
}

4
misc/.byobu/#.tmux.conf# Normal file
View file

@ -0,0 +1,4 @@
new -s tilde -n chat 'weechat';
neww -n shell;
send-keys -t ":2" em& Enter;

View file

@ -1,4 +1,4 @@
new -s tilde -n chat 'weechat';
new -s Arch -n chat 'weechat'
neww -n music 'ncmpcpp';
neww -n docs 'emacs -nw';
neww -n shell;
send-keys -t ":2" em& Enter;