diff --git a/awesome/rc.lua b/awesome/rc.lua index 875a6ad..a8ef099 100644 --- a/awesome/rc.lua +++ b/awesome/rc.lua @@ -17,5 +17,6 @@ require("src.core.rules") require("src.bindings.global_buttons") require("src.bindings.bind_to_tags") require("src.modules.init") -require("src.tools.auto_starter")(User_config.autostart) -require("src.dbus.bluetooth_dbus")() +require("src.tools.helpers.init") +--require("src.tools.auto_starter")(User_config.autostart) +require("src.tools.dbus.bluetooth_dbus")() diff --git a/awesome/src/assets/icons/application_launcher/searchbar/search.svg b/awesome/src/assets/icons/application_launcher/searchbar/search.svg new file mode 100644 index 0000000..eb42571 --- /dev/null +++ b/awesome/src/assets/icons/application_launcher/searchbar/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/awesome/src/assets/icons/notifications/default_image.svg b/awesome/src/assets/icons/notifications/default_image.svg new file mode 100644 index 0000000..cc1e385 --- /dev/null +++ b/awesome/src/assets/icons/notifications/default_image.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/awesome/src/bindings/global_keys.lua b/awesome/src/bindings/global_keys.lua index de802c5..873a0a8 100644 --- a/awesome/src/bindings/global_keys.lua +++ b/awesome/src/bindings/global_keys.lua @@ -17,9 +17,11 @@ awful.keygrabber { } }, root_keybindings = { - awful.key { -- Has to be here and can't be nil - modifiers = { "Also Nothing" }, - key = "Nothing" + awful.key { + modifiers = { modkey }, + key = "Tab", + on_press = function() + end } }, stop_key = "Mod4", @@ -184,14 +186,6 @@ return gears.table.join( end, { descripton = "Application launcher", group = "Application" } ), - awful.key( - { "Mod1" }, - "#23", - function() - awful.spawn("rofi -kb-accept-entry '!Alt-Tab' -kb-row-down Alt-Tab -show window -theme ~/.config/rofi/window.rasi") - end, - { descripton = "Client switcher (alt+tab)", group = "Application" } - ), awful.key( { modkey }, "#26", @@ -221,8 +215,6 @@ return gears.table.join( "XF86AudioLowerVolume", function(c) awful.spawn.easy_async_with_shell("pactl set-sink-volume @DEFAULT_SINK@ -2%", function() - awesome.emit_signal("module::volume_osd:show", true) - awesome.emit_signal("module::slider:update") awesome.emit_signal("widget::volume_osd:rerun") end) end, @@ -233,8 +225,6 @@ return gears.table.join( "XF86AudioRaiseVolume", function(c) awful.spawn.easy_async_with_shell("pactl set-sink-volume @DEFAULT_SINK@ +2%", function() - awesome.emit_signal("module::volume_osd:show", true) - awesome.emit_signal("module::slider:update") awesome.emit_signal("widget::volume_osd:rerun") end) end, @@ -245,8 +235,6 @@ return gears.table.join( "XF86AudioMute", function(c) awful.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle") - awesome.emit_signal("module::volume_osd:show", true) - awesome.emit_signal("module::slider:update") awesome.emit_signal("widget::volume_osd:rerun") end, { description = "Mute volume", group = "System" } @@ -255,17 +243,12 @@ return gears.table.join( {}, "XF86MonBrightnessUp", function(c) - --awful.spawn("xbacklight -time 100 -inc 10%+") awful.spawn.easy_async_with_shell( "pkexec xfpm-power-backlight-helper --get-brightness", function(stdout) - awful.spawn.easy_async_with_shell("pkexec xfpm-power-backlight-helper --set-brightness " .. - tostring(tonumber(stdout) + BACKLIGHT_SEPS), function(stdou2) - - end) - awesome.emit_signal("module::brightness_osd:show", true) - awesome.emit_signal("module::brightness_slider:update") - awesome.emit_signal("widget::brightness_osd:rerun") + awful.spawn("pkexec xfpm-power-backlight-helper --set-brightness " .. + tostring(tonumber(stdout) + BACKLIGHT_SEPS)) + awesome.emit_signal("brightness::update") end ) end, @@ -278,13 +261,10 @@ return gears.table.join( awful.spawn.easy_async_with_shell( "pkexec xfpm-power-backlight-helper --get-brightness", function(stdout) - awful.spawn.easy_async_with_shell("pkexec xfpm-power-backlight-helper --set-brightness " .. - tostring(tonumber(stdout) - BACKLIGHT_SEPS), function(stdout2) - - end) - awesome.emit_signal("module::brightness_osd:show", true) - awesome.emit_signal("module::brightness_slider:update") - awesome.emit_signal("widget::brightness_osd:rerun") + awful.spawn( + "pkexec xfpm-power-backlight-helper --set-brightness " .. + tostring(tonumber(stdout) - BACKLIGHT_SEPS)) + awesome.emit_signal("brightness::update") end ) end, @@ -322,6 +302,14 @@ return gears.table.join( end, { description = "Toggle keyboard layout", group = "System" } ), + awful.key( + { modkey }, + "#27", + function() + awesome.emit_signal("application_laucher::show") + end, + { description = "show application launcher", group = "System" } + ), awful.key( { modkey }, "#22", @@ -347,7 +335,7 @@ return gears.table.join( awful.spawn.with_shell("echo -n '" .. stdout:gsub("\n", "") .. ";' >> ~/.config/awesome/src/assets/rules.txt") local c = mouse.screen.selected_tag:clients() - for j, client in ipairs(c) do + for _, client in ipairs(c) do if client.class:match(stdout:gsub("\n", "")) then client.floating = true end @@ -375,13 +363,13 @@ return gears.table.join( } awful.spawn.easy_async_with_shell( [[ - REMOVE="]] .. stdout:gsub("\n", "") .. [[;" - STR=$(cat ~/.config/awesome/src/assets/rules.txt) - echo -n ${STR//$REMOVE/} > ~/.config/awesome/src/assets/rules.txt - ]], - function(stdout2) + REMOVE="]] .. stdout:gsub("\n", "") .. [[;" + STR=$(cat ~/.config/awesome/src/assets/rules.txt) + echo -n ${STR//$REMOVE/} > ~/.config/awesome/src/assets/rules.txt + ]], + function() local c = mouse.screen.selected_tag:clients() - for j, client in ipairs(c) do + for _, client in ipairs(c) do if client.class:match(stdout:gsub("\n", "")) then client.floating = false end diff --git a/awesome/src/core/notifications.lua b/awesome/src/core/notifications.lua index 4e3d1d6..d70e638 100644 --- a/awesome/src/core/notifications.lua +++ b/awesome/src/core/notifications.lua @@ -3,7 +3,6 @@ ------------------------------- -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local menubar = require('menubar') @@ -17,18 +16,16 @@ local icondir = awful.util.getdir("config") .. "src/assets/icons/notifications/" -- TODO: Figure out how to use hover effects without messing up the actions naughty.config.defaults.ontop = true naughty.config.defaults.icon_size = dpi(80) -naughty.config.defaults.timeout = 3 +naughty.config.defaults.timeout = Theme_config.notification.timeout naughty.config.defaults.title = "System Notification" naughty.config.defaults.margin = dpi(10) -naughty.config.defaults.position = "bottom_right" -naughty.config.defaults.shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(10)) -end -naughty.config.defaults.border_width = dpi(4) -naughty.config.defaults.border_color = color["Grey800"] -naughty.config.defaults.spacing = dpi(10) +naughty.config.defaults.position = Theme_config.notification.position +naughty.config.defaults.shape = Theme_config.notification.shape +naughty.config.defaults.border_width = Theme_config.notification.border_width +naughty.config.defaults.border_color = Theme_config.notification.border_color +naughty.config.defaults.spacing = Theme_config.notification.spacing -Theme.notification_spacing = dpi(20) +Theme.notification_spacing = Theme_config.notification.corner_spacing naughty.connect_signal( 'request::icon', @@ -51,34 +48,42 @@ naughty.connect_signal( else if n.urgency == "critical" then n.title = string.format("%s", - color["RedA200"], n.title) or "" - n.message = string.format("%s", color["Red200"], n.message) or "" - n.app_name = string.format("%s", color["RedA400"], n.app_name) or "" - n.bg = color["Grey900"] + Theme_config.notification.fg_urgent_title, n.title) or "" + n.message = string.format("%s", Theme_config.notification.fg_urgent_message, + n.message) or "" + n.app_name = string.format("%s", Theme_config.notification.fg_urgent_app_name, + n.app_name) or "" + n.bg = Theme_config.notification.bg_urgent else n.title = string.format("%s", - color["Pink200"], n.title) or "" - n.message = string.format("%s", "#ffffffaa", n.message) or "" - n.bg = color["Grey900"] - n.timeout = n.timeout or 3 + Theme_config.notification.fg_normal_title, n.title) or "" + n.message = string.format("%s", Theme_config.notification.fg_normal_message, + n.message) or "" + n.bg = Theme_config.notification.bg_normal + n.timeout = n.timeout or Theme_config.notification.timeout end local use_image = false if n.app_name == "Spotify" then - n.actions = { naughty.action { - program = "Spotify", - id = "skip-prev", - icon = gears.color.recolor_image(icondir .. "skip-prev.svg", color["Cyan200"]) - }, naughty.action { - program = "Spotify", - id = "play-pause", - icon = gears.color.recolor_image(icondir .. "play-pause.svg", color["Cyan200"]) - }, naughty.action { - program = "Spotify", - id = "skip-next", - icon = gears.color.recolor_image(icondir .. "skip-next.svg", color["Cyan200"]) - } } + n.actions = { + naughty.action { + program = "Spotify", + id = "skip-prev", + icon = gears.color.recolor_image(icondir .. "skip-prev.svg", + Theme_config.notification.spotify_button_icon_color) + }, naughty.action { + program = "Spotify", + id = "play-pause", + icon = gears.color.recolor_image(icondir .. "play-pause.svg", + Theme_config.notification.spotify_button_icon_color) + }, naughty.action { + program = "Spotify", + id = "skip-next", + icon = gears.color.recolor_image(icondir .. "skip-next.svg", + Theme_config.notification.spotify_button_icon_color) + } + } use_image = true end @@ -105,8 +110,7 @@ naughty.connect_signal( }, forced_height = dpi(35), forced_width = dpi(35), - fg = color["Cyan200"], - bg = color["Grey800"], + bg = Theme_config.notification.action_bg, shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(6)) end, @@ -134,8 +138,8 @@ naughty.connect_signal( margins = dpi(5), widget = wibox.container.margin }, - fg = color["Green200"], - bg = color["Grey800"], + fg = Theme_config.notification.action_fg, + bg = Theme_config.notification.action_bg, shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(6)) end, @@ -158,9 +162,7 @@ naughty.connect_signal( widget_template = action_template_widget, style = { underline_normal = false, - underline_selected = true, - bg_normal = color["Grey100"], - bg_selected = color["Grey200"] + underline_selected = true }, widget = naughty.list.actions } @@ -181,7 +183,8 @@ naughty.connect_signal( { { { - image = gears.color.recolor_image(icondir .. "notification-outline.svg", color["Teal200"]), + image = gears.color.recolor_image(icondir .. "notification-outline.svg", + Theme_config.notification.icon_color), resize = false, valign = "center", halign = "center", @@ -198,7 +201,7 @@ naughty.connect_signal( }, layout = wibox.layout.fixed.horizontal }, - fg = color["Teal200"], + fg = Theme_config.notification.fg_appname, widget = wibox.container.background }, margins = dpi(10), @@ -212,7 +215,7 @@ naughty.connect_signal( widget = wibox.widget.textbox }, id = "background", - fg = color["Teal200"], + fg = Theme_config.notification.fg_time, widget = wibox.container.background }, { @@ -235,8 +238,7 @@ naughty.connect_signal( id = "arc_chart" }, id = "background", - fg = color["Teal200"], - bg = color["Grey900"], + fg = Theme_config.notification.fg_close, widget = wibox.container.background }, strategy = "exact", @@ -256,8 +258,8 @@ naughty.connect_signal( layout = wibox.layout.align.horizontal }, id = "arc_app_bg", - border_color = color["Grey800"], - border_width = dpi(2), + border_color = Theme_config.notification.title_border_color, + border_width = Theme_config.notification.title_border_width, widget = wibox.container.background }, { @@ -327,17 +329,15 @@ naughty.connect_signal( widget = wibox.container.constraint }, id = "background", - bg = color["Grey900"], - border_color = color["Grey800"], - border_width = dpi(4), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, 4) - end, + bg = Theme_config.notification.bg, + border_color = Theme_config.notification.border_color, + border_width = Theme_config.notification.border_width, + shape = Theme_config.notification.shape_inside, widget = wibox.container.background } - local close = w_template.max_size.min_size.widget_layout.arc_app_bg.arc_app_layout.arc_app_layout_2.arc_margin. - const.background + local close = w_template.max_size.min_size.widget_layout.arc_app_bg.arc_app_layout.arc_app_layout_2.arc_margin.const + .background local arc = close.arc_chart local timeout = n.timeout @@ -378,7 +378,7 @@ naughty.connect_signal( ) end - Hover_signal(close, color["Grey900"], color["Teal200"]) + Hover_signal(close, Theme_config.notification.bg_close, Theme_config.notification.fg_close) close:connect_signal( "button::press", @@ -389,18 +389,13 @@ naughty.connect_signal( w_template:connect_signal( "button::press", - function(c, d, e, key) + function(_, _, _, key) if key == 3 then n:destroy() end -- TODO: Find out how to get the associated client + -- for some reason n.clients is always empty --[[ if key == 1 then - if n.clients then - n.clients[1]:activate { - switch_to_tag = true, - raise = true - } - end end ]] end ) @@ -425,7 +420,6 @@ naughty.connect_signal( naughty.connect_signal( "destroyed", function() - end ) diff --git a/awesome/src/core/rules.lua b/awesome/src/core/rules.lua index a81dd92..03935a2 100644 --- a/awesome/src/core/rules.lua +++ b/awesome/src/core/rules.lua @@ -18,7 +18,7 @@ awful.rules.rules = { keys = require("src.bindings.client_keys"), buttons = require("src.bindings.client_buttons"), screen = awful.screen.preferred, - placement = awful.placement.no_overlap + awful.placement.no_offscreen + placement = awful.placement.under_mouse + awful.placement.no_overlap + awful.placement.no_offscreen } }, { diff --git a/awesome/src/modules/application_launcher/application.lua b/awesome/src/modules/application_launcher/application.lua index e69de29..fe4299c 100644 --- a/awesome/src/modules/application_launcher/application.lua +++ b/awesome/src/modules/application_launcher/application.lua @@ -0,0 +1,21 @@ +-------------------------------------- +-- This is the application launcher -- +-------------------------------------- + +-- Awesome Libs +local awful = require("awful") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +return function() + + local application_list = wibox.widget { + homogenous = true, + expand = false, + spacing = dpi(10), + layout = wibox.container.grid + } + + return application_list +end diff --git a/awesome/src/modules/application_launcher/init.lua b/awesome/src/modules/application_launcher/init.lua index 27ba9da..e9e79a8 100644 --- a/awesome/src/modules/application_launcher/init.lua +++ b/awesome/src/modules/application_launcher/init.lua @@ -4,22 +4,58 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") --- Icon directory path -local icondir = awful.util.getdir("config") .. "src/assets/icons/application_launcher/" +local application_grid = require("src.modules.application_launcher.application")() +local searchbar = require("src.modules.application_launcher.searchbar")() return function(s) - local applicaton_launcher = wibox.widget { + local applicaton_launcher = wibox.widget { + { + { + searchbar, + wibox.widget.inputtextbox, + application_grid, + layout = wibox.layout.fixed.vertical + }, + margins = dpi(20), + widget = wibox.container.margin + }, + height = dpi(600), + width = dpi(800), + strategy = "exact", + widget = wibox.container.constraint } local application_container = awful.popup { - + widget = wibox.container.background, + ontop = true, + visible = false, + stretch = false, + screen = s, + shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(12)) + end, + placement = awful.placement.centered, + bg = Theme_config.application_launcher.bg, + border_color = Theme_config.application_launcher.border_color, + border_width = Theme_config.application_launcher.border_width } + application_container:setup { + applicaton_launcher, + layout = wibox.layout.fixed.vertical + } + + awesome.connect_signal( + "application_laucher::show", + function() + application_container.visible = not application_container.visible + end + ) + end diff --git a/awesome/src/modules/application_launcher/searchbar.lua b/awesome/src/modules/application_launcher/searchbar.lua index e69de29..2015305 100644 --- a/awesome/src/modules/application_launcher/searchbar.lua +++ b/awesome/src/modules/application_launcher/searchbar.lua @@ -0,0 +1,53 @@ +------------------------------------------------------- +-- This is the seachbar for the application launcher -- +------------------------------------------------------- + +-- Awesome Libs +local awful = require("awful") +local dpi = require("beautiful").xresources.apply_dpi +local gears = require("gears") +local wibox = require("wibox") + +local icondir = awful.util.getdir("config") .. "src/assets/icons/application_launcher/searchbar/" + +return function() + + local searchbar = wibox.widget { + { + { + { + { -- Search icon + { + resize = false, + image = icondir .. "search.svg", + widget = wibox.widget.imagebox + }, + strategy = "exact", + widget = wibox.container.constraint + }, + { + fg = Theme_config.application_launcher.searchbar.fg_hint, + text = "Search", + valign = "center", + align = "center", + widget = wibox.widget.textbox + }, + widget = wibox.layout.fixed.horizontal + }, + margins = dpi(5), + widget = wibox.container.margin + }, + bg = Theme_config.application_launcher.searchbar.bg, + fg = Theme_config.application_launcher.searchbar.fg, + border_color = Theme_config.application_launcher.searchbar.border_color, + border_width = Theme_config.application_launcher.searchbar.border_width, + widget = wibox.container.background + }, + width = dpi(400), + height = dpi(40), + strategy = "exact", + widget = wibox.container.constraint + } + + return searchbar +end diff --git a/awesome/src/modules/brightness_osd.lua b/awesome/src/modules/brightness_osd.lua index 035505f..1681c77 100644 --- a/awesome/src/modules/brightness_osd.lua +++ b/awesome/src/modules/brightness_osd.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -12,17 +11,6 @@ local wibox = require("wibox") -- Icon directory path local icondir = awful.util.getdir("config") .. "src/assets/icons/brightness/" -BACKLIGHT_MAX_BRIGHTNESS = 0 -BACKLIGHT_SEPS = 0 -awful.spawn.easy_async_with_shell( - "pkexec xfpm-power-backlight-helper --get-max-brightness", - function(stdout) - BACKLIGHT_MAX_BRIGHTNESS = tonumber(stdout) - BACKLIGHT_SEPS = BACKLIGHT_MAX_BRIGHTNESS / 100 - BACKLIGHT_SEPS = math.floor(BACKLIGHT_SEPS) - end -) - return function(s) local brightness_osd_widget = wibox.widget { @@ -81,30 +69,23 @@ return function(s) widget = wibox.container.background } - local update_slider = function() - awful.spawn.easy_async_with_shell( - [[ pkexec xfpm-power-backlight-helper --get-brightness ]], - function(stdout) - local brightness_value = math.floor((tonumber(stdout) - 1) / (BACKLIGHT_MAX_BRIGHTNESS - 1) * 100) - brightness_osd_widget:get_children_by_id("progressbar1")[1].value = brightness_value + awesome.connect_signal( + "brightness::get", + function(brightness) + brightness_osd_widget:get_children_by_id("progressbar1")[1].value = brightness - awesome.emit_signal("update::backlight", brightness_value) - - local icon = icondir .. "brightness" - if brightness_value >= 0 and brightness_value < 34 then - icon = icon .. "-low" - elseif brightness_value >= 34 and brightness_value < 67 then - icon = icon .. "-medium" - elseif brightness_value >= 67 then - icon = icon .. "-high" - end - brightness_osd_widget:get_children_by_id("icon")[1]:set_image(gears.color.recolor_image(icon .. ".svg", - Theme_config.brightness_osd.icon_color)) + local icon = icondir .. "brightness" + if brightness >= 0 and brightness < 34 then + icon = icon .. "-low" + elseif brightness >= 34 and brightness < 67 then + icon = icon .. "-medium" + elseif brightness >= 67 then + icon = icon .. "-high" end - ) - end - - update_slider() + brightness_osd_widget:get_children_by_id("icon")[1]:set_image(gears.color.recolor_image(icon .. ".svg", + Theme_config.brightness_osd.icon_color)) + end + ) local brightness_container = awful.popup { widget = {}, @@ -132,15 +113,13 @@ return function(s) } awesome.connect_signal( - "widget::brightness_osd:rerun", + "brightness::rerun", function() brightness_container.visible = true if hide_brightness_osd.started then hide_brightness_osd:again() - update_slider() else hide_brightness_osd:start() - update_slider() end end ) diff --git a/awesome/src/modules/crylia_bar/center_bar.lua b/awesome/src/modules/crylia_bar/center_bar.lua index 27dbf49..80046b4 100644 --- a/awesome/src/modules/crylia_bar/center_bar.lua +++ b/awesome/src/modules/crylia_bar/center_bar.lua @@ -3,7 +3,6 @@ -------------------------------------------------------------------------------------------------------------- -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -14,7 +13,7 @@ return function(s, widgets) screen = s, widget = wibox.container.background, ontop = false, - bg = color["Grey900"], + bg = Theme_config.center_bar.bg, visible = true, maximum_width = dpi(500), placement = function(c) awful.placement.top(c, { margins = dpi(10) }) end, @@ -24,7 +23,7 @@ return function(s, widgets) } top_center:struts { - top = 55 + top = dpi(55) } local function prepare_widgets(w) diff --git a/awesome/src/modules/crylia_bar/dock.lua b/awesome/src/modules/crylia_bar/dock.lua index 1bb10b4..3a0e249 100644 --- a/awesome/src/modules/crylia_bar/dock.lua +++ b/awesome/src/modules/crylia_bar/dock.lua @@ -3,7 +3,6 @@ -------------------------------------------------------------------------------------------------------------- -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -41,7 +40,7 @@ return function(screen, programs) shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(10)) end, - bg = color["Grey900"], + bg = Theme_config.dock.element_bg, widget = wibox.container.background, id = "background" }, @@ -55,11 +54,12 @@ return function(screen, programs) for _, c in ipairs(client.get()) do if string.lower(c.class):match(program["Icon"]) and c == client.focus then - dock_element.background.bg = color["Grey800"] + dock_element.background.bg = Theme_config.dock.element_focused_bg end end - Hover_signal(dock_element.background, color["Grey800"], color["White"]) + Hover_signal(dock_element.background, Theme_config.dock.element_focused_hover_bg, + Theme_config.dock.element_focused_hover_fg) dock_element:connect_signal( "button::press", @@ -84,7 +84,7 @@ return function(screen, programs) local dock = awful.popup { widget = wibox.container.background, ontop = true, - bg = color["Grey900"], + bg = Theme_config.dock.bg, visible = true, screen = screen, type = "dock", @@ -139,24 +139,24 @@ return function(screen, programs) local clients = client.get() for index, pr in ipairs(prog) do local indicators = { layout = wibox.layout.flex.horizontal, spacing = dpi(5) } - local col = color["Grey600"] + local col = Theme_config.dock.indicator_bg for i, c in ipairs(clients) do local icon = desktop_parser(pr) if icon then local icon_name = icon["Icon"] or "" if icon_name:match(string.lower(c.class or c.name or nil)) then if c == client.focus then - col = color["YellowA200"] + col = Theme_config.dock.indicator_focused_bg elseif c.urgent then - col = color["RedA200"] + col = Theme_config.dock.indicator_urgent_bg elseif c.maximized then - col = color["GreenA200"] + col = Theme_config.dock.indicator_maximized_bg elseif c.minimized then - col = color["BlueA200"] + col = Theme_config.dock.indicator_minimized_bg elseif c.fullscreen then - col = color["PinkA200"] + col = Theme_config.dock.indicator_fullscreen_bg else - col = color["Grey600"] + col = Theme_config.dock.indicator_bg end indicators[i] = wibox.widget { widget = wibox.container.background, diff --git a/awesome/src/modules/crylia_bar/left_bar.lua b/awesome/src/modules/crylia_bar/left_bar.lua index 4e79a5a..4f956b4 100644 --- a/awesome/src/modules/crylia_bar/left_bar.lua +++ b/awesome/src/modules/crylia_bar/left_bar.lua @@ -3,7 +3,6 @@ -------------------------------------------------------------------------------------------------------------- -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -16,7 +15,7 @@ return function(s, w) }, ontop = false, - bg = color["Grey900"], + bg = Theme_config.left_bar.bg, visible = true, maximum_width = dpi(650), placement = function(c) awful.placement.top_left(c, { margins = dpi(10) }) end, @@ -26,7 +25,7 @@ return function(s, w) } top_left:struts { - top = 55 + top = dpi(55) } local function prepare_widgets(widgets) diff --git a/awesome/src/modules/crylia_bar/right_bar.lua b/awesome/src/modules/crylia_bar/right_bar.lua index 9ff6590..b9b959c 100644 --- a/awesome/src/modules/crylia_bar/right_bar.lua +++ b/awesome/src/modules/crylia_bar/right_bar.lua @@ -3,7 +3,6 @@ -------------------------------------------------------------------------------------------------------------- -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -13,7 +12,7 @@ return function(s, w) local top_right = awful.popup { widget = wibox.container.background, ontop = false, - bg = color["Grey900"], + bg = Theme_config.right_bar.bg, visible = true, screen = s, placement = function(c) awful.placement.top_right(c, { margins = dpi(10) }) end, @@ -23,7 +22,7 @@ return function(s, w) } top_right:struts { - top = 55 + top = dpi(55) } local function prepare_widgets(widgets) diff --git a/awesome/src/modules/init.lua b/awesome/src/modules/init.lua index c8c3027..5806454 100644 --- a/awesome/src/modules/init.lua +++ b/awesome/src/modules/init.lua @@ -10,7 +10,7 @@ awful.screen.connect_for_each_screen( -- e.g. 1 would be the primary screen and 2 the secondary screen. function(s) -- Create 9 tags - awful.layout.layouts = User_config.layouts + awful.layout.append_default_layouts(User_config.layouts) awful.tag( { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, @@ -19,12 +19,13 @@ awful.screen.connect_for_each_screen( require("src.modules.powermenu")(s) require("src.modules.volume_osd")(s) - require("src.modules.brightness_osd")(s) - require("src.modules.bluetooth_controller")(s) + --require("src.modules.brightness_osd")(s) + --require("src.modules.bluetooth_controller")(s) require("src.modules.titlebar") require("src.modules.volume_controller")(s) require("src.modules.crylia_bar.init")(s) require("src.modules.notification-center.init")(s) require("src.modules.window_switcher.init")(s) + --require("src.modules.application_launcher.init")(s) end ) diff --git a/awesome/src/modules/notification-center/init.lua b/awesome/src/modules/notification-center/init.lua index d10cd6d..5ffc910 100644 --- a/awesome/src/modules/notification-center/init.lua +++ b/awesome/src/modules/notification-center/init.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -58,8 +57,8 @@ return function(s) id = "clearall" }, id = "background4", - fg = color["Grey900"], - bg = color["Blue200"], + fg = Theme_config.notification_center.clear_all_button.fg, + bg = Theme_config.notification_center.clear_all_button.bg, shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, 12) end, @@ -81,7 +80,7 @@ return function(s) { { widget = wibox.container.background, - bg = color["Grey700"], + bg = Theme_config.notification_center.dnd.disabled, shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(8)) end, @@ -104,7 +103,7 @@ return function(s) { { widget = wibox.container.background, - bg = color["Purple200"], + bg = Theme_config.notification_center.dnd.border_enabled, shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(8)) end, @@ -131,8 +130,8 @@ return function(s) }, active = false, widget = wibox.container.background, - bg = color["Grey900"], - border_color = color["Grey800"], + bg = Theme_config.notification_center.dnd.bg, + border_color = Theme_config.notification_center.dnd.border_disabled, border_width = dpi(2), forced_height = dpi(40), forced_width = dpi(80), @@ -148,13 +147,13 @@ return function(s) left_button.visible = true right_button.visible = false toggle_button.active = not toggle_button.active - toggle_button.border_color = color["Grey800"] + toggle_button.border_color = Theme_config.notification_center.dnd.border_disabled User_config.dnd = false else left_button.visible = false right_button.visible = true toggle_button.active = not toggle_button.active - toggle_button.border_color = color["Purple200"] + toggle_button.border_color = Theme_config.notification_center.dnd.border_enabled User_config.dnd = true end end @@ -177,9 +176,9 @@ return function(s) id = "layout12" }, id = "background4", - fg = color["Pink200"], + fg = Theme_config.notification_center.dnd.fg, shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, 12) + gears.shape.rounded_rect(cr, width, height, dpi(12)) end, forced_height = dpi(40), widget = wibox.container.background @@ -227,9 +226,9 @@ return function(s) --#region Notification center local notification_center = awful.popup { widget = wibox.container.background, - bg = color["Grey900"], - border_color = color["Grey800"], - border_width = dpi(4), + bg = Theme_config.notification_center.bg, + border_color = Theme_config.notification_center.border_color, + border_width = Theme_config.notification_center.border_width, placement = function(c) awful.placement.top(c, { margins = dpi(10) }) end, @@ -237,7 +236,7 @@ return function(s) screen = s, visible = false, shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, 12) + gears.shape.rounded_rect(cr, width, height, dpi(12)) end, } @@ -295,8 +294,7 @@ return function(s) id = "yes", spacing_widget = { { - fg = color["Grey800"], - bg = color["Grey800"], + bg = Theme_config.notification_center.spacing_color, widget = wibox.container.background }, top = dpi(40), @@ -365,7 +363,8 @@ return function(s) end ) - Hover_signal(clear_all_widget, color["Blue200"], color["Grey900"]) + Hover_signal(clear_all_widget, Theme_config.notification_center.clear_all_button.bg, + Theme_config.notification_center.clear_all_button.fg) --#endregion end diff --git a/awesome/src/modules/notification-center/notification_list.lua b/awesome/src/modules/notification-center/notification_list.lua index 7a5533e..cf9d34c 100644 --- a/awesome/src/modules/notification-center/notification_list.lua +++ b/awesome/src/modules/notification-center/notification_list.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -33,7 +32,7 @@ function nl.create_notification(n) id = "txt" }, id = "background", - fg = color["Teal200"], + fg = Theme_config.notification_center.notification_list.timer_fg, widget = wibox.container.background }, margins = dpi(10), @@ -81,7 +80,7 @@ function nl.create_notification(n) id = "arc_chart" }, id = "background", - fg = color["Teal200"], + fg = Theme_config.notification_center.notification_list.close_color, widget = wibox.container.background }, strategy = "exact", @@ -108,7 +107,8 @@ function nl.create_notification(n) { { { - image = gears.color.recolor_image(icondir .. "notification-outline.svg", color["Teal200"]), + image = gears.color.recolor_image(icondir .. "notification-outline.svg", + Theme_config.notification_center.notification_list.icon), resize = false, valign = "center", halign = "center", @@ -125,7 +125,7 @@ function nl.create_notification(n) }, layout = wibox.layout.fixed.horizontal }, - fg = color["Teal200"], + fg = Theme_config.notification_center.notification_list.title_fg, widget = wibox.container.background }, margins = dpi(10), @@ -141,8 +141,8 @@ function nl.create_notification(n) layout = wibox.layout.align.horizontal }, id = "arc_app_bg", - border_color = color["Grey800"], - border_width = dpi(2), + border_color = Theme_config.notification_center.notification_list.title_border_color, + border_width = Theme_config.notification_center.notification_list.title_border_width, widget = wibox.container.background }, { @@ -211,12 +211,10 @@ function nl.create_notification(n) widget = wibox.container.constraint }, pk = #nl.notification_list + 1, - bg = color["Grey900"], - border_color = color["Grey800"], - border_width = dpi(4), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, 8) - end, + bg = Theme_config.notification_center.notification_list.notification_bg, + border_color = Theme_config.notification_center.notification_list.notification_border_color, + border_width = Theme_config.notification_center.notification_list.notification_border_width, + shape = Theme_config.notification_center.notification_list.notification_shape, widget = wibox.container.background } @@ -235,7 +233,8 @@ function nl.create_notification(n) end ) - Hover_signal(close_widget.const.background, color["Grey900"], color["Teal200"]) + Hover_signal(close_widget.const.background, Theme_config.notification_center.notification_list.close_bg, + Theme_config.notification_center.notification_list.close_color) notification:connect_signal( "mouse::enter", diff --git a/awesome/src/modules/notification-center/profile.lua b/awesome/src/modules/notification-center/profile.lua index 3f5fe3a..0ba7f1c 100644 --- a/awesome/src/modules/notification-center/profile.lua +++ b/awesome/src/modules/notification-center/profile.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -43,7 +42,8 @@ return function() { { -- Username id = "username_prefix", - image = gears.color.recolor_image(icondir .. "user.svg", color["Blue200"]), + image = gears.color.recolor_image(icondir .. "user.svg", + Theme_config.notification_center.profile.username_icon_color), valign = "center", halign = "left", resize = false, @@ -61,7 +61,8 @@ return function() { { id = "os_prefix", - image = gears.color.recolor_image(icondir .. "laptop.svg", color["Blue200"]), + image = gears.color.recolor_image(icondir .. "laptop.svg", + Theme_config.notification_center.profile.os_prefix_icon_color), valign = "center", halign = "left", resize = false, @@ -79,7 +80,8 @@ return function() { { id = "kernel_prefix", - image = gears.color.recolor_image(icondir .. "penguin.svg", color["Blue200"]), + image = gears.color.recolor_image(icondir .. "penguin.svg", + Theme_config.notification_center.profile.kernel_icon_color), valign = "center", halign = "left", resize = false, @@ -97,7 +99,8 @@ return function() { { id = "uptime_prefix", - image = gears.color.recolor_image(icondir .. "clock.svg", color["Blue200"]), + image = gears.color.recolor_image(icondir .. "clock.svg", + Theme_config.notification_center.profile.uptime_icon_color), valign = "center", halign = "left", resize = false, @@ -129,12 +132,10 @@ return function() widget = wibox.layout.fixed.vertical }, id = "wrapper", - fg = color["Green200"], - border_color = color["Grey800"], - border_width = dpi(4), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(8)) - end, + fg = Theme_config.notification_center.profile.fg, + border_color = Theme_config.notification_center.profile.border_color, + border_width = Theme_config.notification_center.profile.border_width, + shape = Theme_config.notification_center.profile.shape, widget = wibox.container.background }, id = "const", @@ -177,7 +178,6 @@ return function() profile_widget:get_children_by_id("username")[1].text = stdout:gsub("\n", "") or "" end ) - end -- function to fetch uptime async diff --git a/awesome/src/modules/notification-center/song_info.lua b/awesome/src/modules/notification-center/song_info.lua index 41f34bf..96e80e3 100644 --- a/awesome/src/modules/notification-center/song_info.lua +++ b/awesome/src/modules/notification-center/song_info.lua @@ -4,11 +4,9 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") -local naughty = require("naughty") -- Icon directory path local icondir = awful.util.getdir("config") .. "src/assets/icons/notifications/" @@ -43,7 +41,8 @@ return function(s) local shuffle_button = wibox.widget { resize = false, - image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Grey800"]), + image = gears.color.recolor_image(icondir .. "shuffle.svg", + Theme_config.notification_center.song_info.shuffle_disabled), valign = "center", halign = "center", widget = wibox.widget.imagebox, @@ -55,10 +54,12 @@ return function(s) function(stdout) if stdout:match("On") then awful.spawn.with_shell("playerctl shuffle off") - shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Grey800"]) + shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", + Theme_config.notification_center.song_info.shuffle_enabled) else awful.spawn.with_shell("playerctl shuffle on") - shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Green200"]) + shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", + Theme_config.notification_center.song_info.shuffle_disabled) end end ) @@ -69,9 +70,11 @@ return function(s) "playerctl shuffle", function(stdout) if stdout:match("On") then - shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Green200"]) + shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", + Theme_config.notification_center.song_info.shuffle_enabled) else - shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", color["Grey800"]) + shuffle_button.image = gears.color.recolor_image(icondir .. "shuffle.svg", + Theme_config.notification_center.song_info.shuffle_disabled) end end ) @@ -81,7 +84,7 @@ return function(s) local repeat_button = wibox.widget { resize = false, - image = gears.color.recolor_image(icondir .. "repeat.svg", color["Grey800"]), + image = gears.color.recolor_image(icondir .. "repeat.svg", Theme_config.notification_center.song_info.repeat_disabled), widget = wibox.widget.imagebox, valign = "center", halign = "center", @@ -95,11 +98,14 @@ return function(s) function(stdout) local loop_mode = stdout:gsub("\n", "") if loop_mode == "Track" then - repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat-once.svg"), color["Green200"]) + repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat-once.svg"), + Theme_config.notification_center.song_info.repeat_single) elseif loop_mode == "None" then - repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Grey800"]) + repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), + Theme_config.notification_center.song_info.repeat_disabled) elseif loop_mode == "Playlist" then - repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Green200"]) + repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), + Theme_config.notification_center.song_info.repeat_all) end end ) @@ -114,7 +120,7 @@ return function(s) resize = false, valign = "center", halign = "center", - image = gears.color.recolor_image(icondir .. "skip-prev.svg", color["Teal200"]), + image = gears.color.recolor_image(icondir .. "skip-prev.svg", Theme_config.notification_center.song_info.prev_enabled), widget = wibox.widget.imagebox } @@ -134,7 +140,8 @@ return function(s) resize = false, valign = "center", halign = "center", - image = gears.color.recolor_image(icondir .. "play-pause.svg", color["Teal200"]), + image = gears.color.recolor_image(icondir .. "play-pause.svg", + Theme_config.notification_center.song_info.play_enabled), widget = wibox.widget.imagebox } @@ -149,7 +156,7 @@ return function(s) resize = false, valign = "center", halign = "center", - image = gears.color.recolor_image(icondir .. "skip-next.svg", color["Teal200"]), + image = gears.color.recolor_image(icondir .. "skip-next.svg", Theme_config.notification_center.song_info.next_enabled), widget = wibox.widget.imagebox } @@ -173,13 +180,16 @@ return function(s) local loop_mode = stdout:gsub("\n", "") if loop_mode == "None" then awful.spawn.with_shell("playerctl loop playlist") - repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Green200"]) + repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), + Theme_config.notification_center.song_info.repeat_all) elseif loop_mode == "Playlist" then awful.spawn.with_shell("playerctl loop track") - repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat-once.svg"), color["Green200"]) + repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat-once.svg"), + Theme_config.notification_center.song_info.repeat_single) elseif loop_mode == "Track" then awful.spawn.with_shell("playerctl loop none") - repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), color["Grey800"]) + repeat_button.image = gears.color.recolor_image(gears.surface.load_uncached(icondir .. "repeat.svg"), + Theme_config.notification_center.song_info.repeat_disabled) end end ) @@ -187,9 +197,12 @@ return function(s) repeat_button:buttons(gears.table.join(awful.button({}, 1, loop_handler))) - button_hover_effect(prev_button, "skip-prev.svg", color["Teal200"], color["Teal300"]) - button_hover_effect(pause_play_button, "play-pause.svg", color["Teal200"], color["Teal300"]) - button_hover_effect(next_button, "skip-next.svg", color["Teal200"], color["Teal300"]) + button_hover_effect(prev_button, "skip-prev.svg", Theme_config.notification_center.song_info.prev_enabled, + Theme_config.notification_center.song_info.prev_hover) + button_hover_effect(pause_play_button, "play-pause.svg", Theme_config.notification_center.song_info.play_enabled, + Theme_config.notification_center.song_info.play_hover) + button_hover_effect(next_button, "skip-next.svg", Theme_config.notification_center.song_info.next_enabled, + Theme_config.notification_center.song_info.next_hover) --#endregion @@ -202,7 +215,7 @@ return function(s) { { -- Album art { - image = "default image", + image = icondir .. "default_image.svg", resize = true, clip_shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(8)) @@ -223,15 +236,16 @@ return function(s) { { { --Title - halign = "center", + valign = "center", align = "center", widget = wibox.widget.textbox, id = "textbox4" }, - fg = color["Pink200"], + fg = Theme_config.notification_center.song_info.title_fg, id = "textbox5", widget = wibox.container.background }, + id = "textbox_const", strategy = "max", width = dpi(400), widget = wibox.container.constraint @@ -250,7 +264,7 @@ return function(s) widget = wibox.widget.textbox, id = "textbox3" }, - fg = color["Teal200"], + fg = Theme_config.notification_center.song_info.artist_fg, id = "background", widget = wibox.container.background }, @@ -301,7 +315,7 @@ return function(s) widget = wibox.widget.textbox, id = "textbox2" }, - fg = color["Lime200"], + fg = Theme_config.notification_center.song_info.duration_fg, widget = wibox.container.background, id = "background3" }, @@ -311,8 +325,8 @@ return function(s) }, { -- Progressbar { - color = color["Purple200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.song_info.progress_color, + background_color = Theme_config.notification_center.song_info.progress_background_color, max_value = 100, value = 50, forced_height = dpi(5), @@ -335,7 +349,7 @@ return function(s) id = "text1" }, id = "background2", - fg = color["Lime200"], + fg = Theme_config.notification_center.song_info.duration_fg, widget = wibox.container.background }, id = "margin3", @@ -354,11 +368,9 @@ return function(s) margins = dpi(10) }, id = "background1", - border_color = color["Grey800"], - border_width = dpi(4), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(8)) - end, + border_color = Theme_config.notification_center.song_info.border_color, + border_width = Theme_config.notification_center.song_info.border_width, + shape = Theme_config.notification_center.song_info.shape, widget = wibox.container.background }, id = "margin1", @@ -427,9 +439,12 @@ return function(s) function(stdout2) local length = stdout2:gsub("\n", "") if length ~= "" then - local length_formated = string.format("%02d:%02d", math.floor(tonumber(length or 1) / 60000000) or 0, (math.floor(tonumber(length or 1) / 1000000) % 60) or 0) - music_widget:get_children_by_id("progressbar1")[1].max_value = tonumber(math.floor(tonumber(length) / 1000000)) - music_widget:get_children_by_id("text1")[1].markup = string.format("%s", color["Teal200"], length_formated) + local length_formated = string.format("%02d:%02d", math.floor(tonumber(length or 1) / 60000000) or 0, + (math.floor(tonumber(length or 1) / 1000000) % 60) or 0) + music_widget:get_children_by_id("progressbar1")[1].max_value = tonumber(math.floor(tonumber(length) / + 1000000)) + music_widget:get_children_by_id("text1")[1].markup = string.format("%s" + , Theme_config.notification_center.song_info.duration_fg, length_formated) end end ) @@ -442,7 +457,8 @@ return function(s) end ) -- Update track id - trackid, artist, title = stdout, music_widget:get_children_by_id("textbox3")[1].text, music_widget:get_children_by_id("textbox4")[1].text + trackid, artist, title = stdout, music_widget:get_children_by_id("textbox3")[1].text, + music_widget:get_children_by_id("textbox4")[1].text end ) -- Always update the current song progression @@ -451,8 +467,10 @@ return function(s) function(stdout) local time = stdout:gsub("\n", "") if time ~= "" then - local time_formated = string.format("%02d:%02d", math.floor(tonumber(time or "1") / 60), math.floor(tonumber(time or "1")) % 60) - music_widget:get_children_by_id("textbox2")[1].markup = string.format("%s", color["Teal200"], time_formated) + local time_formated = string.format("%02d:%02d", math.floor(tonumber(time or "1") / 60), + math.floor(tonumber(time or "1")) % 60) + music_widget:get_children_by_id("textbox2")[1].markup = string.format("%s" + , Theme_config.notification_center.song_info.duration_fg, time_formated) music_widget:get_children_by_id("progressbar1")[1].value = tonumber(time) end end diff --git a/awesome/src/modules/notification-center/spacingline_widget.lua b/awesome/src/modules/notification-center/spacingline_widget.lua index 275148e..bd4ca9f 100644 --- a/awesome/src/modules/notification-center/spacingline_widget.lua +++ b/awesome/src/modules/notification-center/spacingline_widget.lua @@ -3,7 +3,6 @@ ------------------------------------------------ -- Awesome Libs -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local wibox = require("wibox") @@ -12,7 +11,7 @@ return function() return wibox.widget { { forced_height = dpi(2), - bg = color["Grey800"], + bg = Theme_config.notification_center.spacing_line.color, widget = wibox.container.background }, left = dpi(80), diff --git a/awesome/src/modules/notification-center/status_bars.lua b/awesome/src/modules/notification-center/status_bars.lua index 67c47af..e5dd52e 100644 --- a/awesome/src/modules/notification-center/status_bars.lua +++ b/awesome/src/modules/notification-center/status_bars.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -32,12 +31,12 @@ return function() { { { --Bar - color = color["Blue200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.cpu_usage_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -56,7 +55,8 @@ return function() }, { { --Icon - image = gears.color.recolor_image(icondir .. "cpu/cpu.svg", color["Cyan200"]), + image = gears.color.recolor_image(icondir .. "cpu/cpu.svg", + Theme_config.notification_center.status_bar.cpu_usage_color), halign = "center", valign = "center", widget = wibox.widget.imagebox, @@ -102,12 +102,12 @@ return function() { { { --Bar - color = color["Blue200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.cpu_temp_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -127,7 +127,8 @@ return function() { { --Icon id = "icon1", - image = gears.color.recolor_image(icondir .. "cpu/thermometer.svg", color["Cyan200"]), + image = gears.color.recolor_image(icondir .. "cpu/thermometer.svg", + Theme_config.notification_center.status_bar.cpu_temp_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -171,7 +172,8 @@ return function() elseif cpu_temp >= 80 then temp_icon = icondir .. "cpu/thermometer-high.svg" end - w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(temp_icon, color["Blue200"]) + w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(temp_icon, + Theme_config.notification_center.status_bar.cpu_temp_color) tooltip.text = "CPU Temp: " .. cpu_temp .. "°C" rubato_timer.target = cpu_temp end @@ -181,12 +183,12 @@ return function() { { { --Bar - color = color["Red200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.ram_usage_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -205,7 +207,8 @@ return function() }, { { --Icon - image = gears.color.recolor_image(icondir .. "cpu/ram.svg", color["Red200"]), + image = gears.color.recolor_image(icondir .. "cpu/ram.svg", + Theme_config.notification_center.status_bar.ram_usage_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -239,7 +242,10 @@ return function() awesome.connect_signal( "update::ram_widget", - function(MemTotal, MemFree, MemAvailable) + function(MemTotal, _, MemAvailable) + if not MemTotal or not MemAvailable then + return + end local ram_usage = math.floor(((MemTotal - MemAvailable) / MemTotal * 100) + 0.5) tooltip.text = "RAM Usage: " .. ram_usage .. "%" rubato_timer.target = ram_usage @@ -250,12 +256,12 @@ return function() { { { --Bar - color = color["Green200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.gpu_usage_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -274,7 +280,8 @@ return function() }, { { --Icon - image = gears.color.recolor_image(icondir .. "cpu/gpu.svg", color["Green200"]), + image = gears.color.recolor_image(icondir .. "cpu/gpu.svg", + Theme_config.notification_center.status_bar.gpu_usage_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -318,12 +325,12 @@ return function() { { { --Bar - color = color["Green200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.gpu_temp_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -343,7 +350,8 @@ return function() { { --Icon id = "icon1", - image = gears.color.recolor_image(icondir .. "cpu/thermometer.svg", color["Green200"]), + image = gears.color.recolor_image(icondir .. "cpu/thermometer.svg", + Theme_config.notification_center.status_bar.gpu_temp_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -395,7 +403,8 @@ return function() temp_num = "NaN" temp_icon = icondir .. "cpu/thermometer-low.svg" end - w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(temp_icon, color["Green200"]) + w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(temp_icon, + Theme_config.notification_center.status_bar.gpu_temp_color) tooltip.text = "GPU Temp: " .. temp_num .. "°C" rubato_timer.target = temp_num end @@ -405,12 +414,12 @@ return function() { { { --Bar - color = color["Yellow200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.volume_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -430,7 +439,8 @@ return function() { { --Icon id = "icon1", - image = gears.color.recolor_image(icondir .. "audio/volume-high.svg", color["Yellow200"]), + image = gears.color.recolor_image(icondir .. "audio/volume-high.svg", + Theme_config.notification_center.status_bar.volume_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -464,10 +474,25 @@ return function() } awesome.connect_signal( - "update::volume_widget", - function(volume, volume_icon) - --w:get_children_by_id("progressbar1")[1].value = volume - w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(volume_icon, color["Yellow200"]) + "audio::get", + function(muted, volume) + local icon = icondir .. "audio/volume" + volume = tonumber(volume) + if muted then + icon = icon .. "-mute" + else + if volume < 1 then + icon = icon .. "-mute" + elseif volume >= 1 and volume < 34 then + icon = icon .. "-low" + elseif volume >= 34 and volume < 67 then + icon = icon .. "-medium" + elseif volume >= 67 then + icon = icon .. "-high" + end + end + w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(icon .. ".svg", + Theme_config.notification_center.status_bar.volume_color) tooltip.text = "Volume: " .. volume .. "%" rubato_timer.target = volume end @@ -477,12 +502,12 @@ return function() { { { --Bar - color = color["Purple200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.microphone_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -502,7 +527,8 @@ return function() { { --Icon id = "icon1", - image = gears.color.recolor_image(icondir .. "audio/microphone.svg", color["Purple200"]), + image = gears.color.recolor_image(icondir .. "audio/microphone.svg", + Theme_config.notification_center.status_bar.microphone_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -536,12 +562,17 @@ return function() } awesome.connect_signal( - "update::microphone_widget", - function(microphone, microphone_icon) - --w:get_children_by_id("progressbar1")[1].value = microphone - w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(microphone_icon, color["Purple200"]) - tooltip.text = "Microphone: " .. microphone .. "%" - rubato_timer.target = microphone + "microphone::get", + function(muted, volume) + local icon = icondir .. "audio/microphone" + volume = tonumber(volume) + if muted or (volume < 1) then + icon = icon .. "-off" + end + w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(icon .. ".svg", + Theme_config.notification_center.status_bar.microphone_color) + tooltip.text = "Microphone: " .. volume .. "%" + rubato_timer.target = volume end ) elseif widget == "backlight" then @@ -549,12 +580,12 @@ return function() { { { --Bar - color = color["Pink200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.backlight_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -574,7 +605,8 @@ return function() { { --Icon id = "icon1", - image = gears.color.recolor_image(icondir .. "brightness/brightness-high.svg", color["Pink200"]), + image = gears.color.recolor_image(icondir .. "brightness/brightness-high.svg" .. ".svg", + Theme_config.notification_center.status_bar.backlight_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -610,8 +642,8 @@ return function() awesome.connect_signal( "update::backlight", function(backlight, backlight_icon) - --w:get_children_by_id("progressbar1")[1].value = backlight - w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(backlight_icon, color["Pink200"]) + w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(backlight_icon, + Theme_config.notification_center.status_bar.backlight_color) tooltip.text = "Backlight: " .. backlight .. "%" rubato_timer.target = backlight end @@ -621,12 +653,12 @@ return function() { { { --Bar - color = color["Purple200"], - background_color = color["Grey800"], + color = Theme_config.notification_center.status_bar.battery_color, + background_color = Theme_config.notification_center.status_bar.bar_bg_color, max_value = 100, value = 0, forced_height = dpi(8), - shape = function(cr, width, heigth) + shape = function(cr) gears.shape.rounded_bar(cr, dpi(58), dpi(8)) end, id = "progressbar1", @@ -646,7 +678,8 @@ return function() { { --Icon id = "icon1", - image = gears.color.recolor_image(icondir .. "battery/battery.svg", color["Purple200"]), + image = gears.color.recolor_image(icondir .. "battery/battery.svg", + Theme_config.notification_center.status_bar.battery_color), halign = "center", valign = "center", widget = wibox.widget.imagebox @@ -682,8 +715,8 @@ return function() awesome.connect_signal( "update::battery_widget", function(battery, battery_icon) - --w:get_children_by_id("progressbar1")[1].value = battery - w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(battery_icon, color["Purple200"]) + w:get_children_by_id("icon1")[1].image = gears.color.recolor_image(battery_icon, + Theme_config.notification_center.status_bar.battery_color) tooltip.text = "Battery: " .. battery .. "%" rubato_timer.target = battery end @@ -714,11 +747,9 @@ return function() }, forced_height = dpi(120), forced_width = dpi(500), - border_color = color["Grey800"], - border_width = dpi(4), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(10)) - end, + border_color = Theme_config.notification_center.status_bar.border_color, + border_width = Theme_config.notification_center.status_bar.border_width, + shape = Theme_config.notification_center.status_bar.shape, widget = wibox.container.background }, top = dpi(10), diff --git a/awesome/src/modules/notification-center/weather.lua b/awesome/src/modules/notification-center/weather.lua index 1ab3fa8..e13f9bf 100644 --- a/awesome/src/modules/notification-center/weather.lua +++ b/awesome/src/modules/notification-center/weather.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -66,20 +65,21 @@ return function() widget = wibox.widget.textbox, id = "description" }, - fg = color["LightBlue200"], + fg = Theme_config.notification_center.weather.description_fg, widget = wibox.container.background }, { -- line forced_height = dpi(4), forced_width = dpi(10), - bg = color["Grey800"], + bg = Theme_config.notification_center.weather.line_bg, widget = wibox.container.background, id = "line" }, { { -- Speed { - image = gears.color.recolor_image(icondir .. "weather-windy.svg", color["OrangeA200"]), + image = gears.color.recolor_image(icondir .. "weather-windy.svg", + Theme_config.notification_center.weather.speed_icon_color), resize = true, forced_width = dpi(24), forced_height = dpi(24), @@ -111,7 +111,8 @@ return function() widget = wibox.widget.imagebox, valign = "center", halign = "center", - image = gears.color.recolor_image(icondir .. "humidity.svg", color["OrangeA200"]), + image = gears.color.recolor_image(icondir .. "humidity.svg", + Theme_config.notification_center.weather.humidity_icon_color), id = "humidity_icon" }, { @@ -142,11 +143,9 @@ return function() widget = wibox.container.place }, id = "background", - border_color = color["Grey800"], - border_width = dpi(4), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(12)) - end, + border_color = Theme_config.notification_center.weather.border_color, + border_width = Theme_config.notification_center.weather.border_width, + shape = Theme_config.notification_center.weather.shape, widget = wibox.container.background }, id = "margin", @@ -200,7 +199,7 @@ return function() weather_widget:get_children_by_id("city_country")[1].text = city .. ", " .. country weather_widget:get_children_by_id("description")[1].text = description:sub(1, 1):upper() .. description:sub(2) - weather_widget:get_children_by_id("line")[1].bg = color["Grey800"] + weather_widget:get_children_by_id("line")[1].bg = Theme_config.notification_center.weather.line_color weather_widget:get_children_by_id("speed")[1].text = speed .. " m/s" weather_widget:get_children_by_id("humidity")[1].text = humidity .. "%" diff --git a/awesome/src/modules/powermenu.lua b/awesome/src/modules/powermenu.lua index accd32e..a3f219a 100644 --- a/awesome/src/modules/powermenu.lua +++ b/awesome/src/modules/powermenu.lua @@ -76,7 +76,6 @@ return function(s) -- TODO: using gears.color to recolor a SVG will make it look super low res -- currently I recolor it in the .svg file directly, but later implement -- a better way to recolor a SVG - -- image = gears.color.recolor_image(icon, color["Grey900"]), image = icon, resize = true, forced_height = dpi(30), diff --git a/awesome/src/modules/titlebar.lua b/awesome/src/modules/titlebar.lua index f691442..abdc785 100644 --- a/awesome/src/modules/titlebar.lua +++ b/awesome/src/modules/titlebar.lua @@ -14,9 +14,12 @@ local icondir = awful.util.getdir("config") .. "src/assets/icons/titlebar/" awful.titlebar.enable_tooltip = true awful.titlebar.fallback_name = 'Client' +-- Normal AND Focus(active/inactive) have to be set or errors will appear in stdout Theme.titlebar_close_button_normal = icondir .. "close.svg" -Theme.titlebar_maximized_button_normal = icondir .. "maximize.svg" +Theme.titlebar_close_button_focus = icondir .. "close.svg" Theme.titlebar_minimize_button_normal = icondir .. "minimize.svg" +Theme.titlebar_minimize_button_focus = icondir .. "minimize.svg" +Theme.titlebar_maximized_button_normal = icondir .. "maximize.svg" Theme.titlebar_maximized_button_active = icondir .. "maximize.svg" Theme.titlebar_maximized_button_inactive = icondir .. "maximize.svg" @@ -75,7 +78,9 @@ local create_titlebar = function(c, size) { { { - awful.titlebar.widget.closebutton(c), + { + widget = awful.titlebar.widget.closebutton(c), + }, widget = wibox.container.background, bg = Theme_config.titlebar.close_button_bg, shape = function(cr, height, width) @@ -84,7 +89,9 @@ local create_titlebar = function(c, size) id = "closebutton" }, { - awful.titlebar.widget.maximizedbutton(c), + { + widget = awful.titlebar.widget.maximizedbutton(c), + }, widget = wibox.container.background, bg = Theme_config.titlebar.minimize_button_bg, shape = function(cr, height, width) @@ -93,7 +100,9 @@ local create_titlebar = function(c, size) id = "maximizebutton" }, { - awful.titlebar.widget.minimizebutton(c), + { + widget = awful.titlebar.widget.minimizebutton(c), + }, widget = wibox.container.background, bg = Theme_config.titlebar.maximize_button_bg, shape = function(cr, height, width) @@ -115,7 +124,7 @@ local create_titlebar = function(c, size) }, { { - widget = awful.widget.clienticon(c) + widget = awful.titlebar.widget.iconwidget(c), }, margins = dpi(5), widget = wibox.container.margin @@ -200,7 +209,7 @@ client.connect_signal( create_titlebar(c, dpi(35)) end - if not c.floating then + if not c.floating or c.maximized or c.fullscreen then awful.titlebar.hide(c, "left") end end diff --git a/awesome/src/modules/volume_controller.lua b/awesome/src/modules/volume_controller.lua index 4487495..55e44b5 100644 --- a/awesome/src/modules/volume_controller.lua +++ b/awesome/src/modules/volume_controller.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -43,12 +42,10 @@ return function(s) widget = wibox.container.margin }, id = "background", - bg = color["Grey900"], - border_color = color["Grey800"], - border_width = dpi(2), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(4)) - end, + bg = Theme_config.volume_controller.device_bg, + border_color = Theme_config.volume_controller.device_border_color, + border_width = Theme_config.volume_controller.device_border_width, + shape = Theme_config.volume_controller.device_shape, widget = wibox.container.background } if sink == true then @@ -66,14 +63,14 @@ return function(s) function(new_node) if node == new_node then device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "headphones.svg", - color["Grey900"]) - device.bg = color["Purple200"] - device.fg = color["Grey900"] + Theme_config.volume_controller.device_headphones_selected_icon_color) + device.bg = Theme_config.volume_controller.device_headphones_selected_bg + device.fg = Theme_config.volume_controller.device_headphones_selected_fg else device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "headphones.svg", - color["Purple200"]) - device.bg = color["Grey900"] - device.fg = color["Purple200"] + Theme_config.volume_controller.device_headphones_selected_icon_color) + device.bg = Theme_config.volume_controller.device_bg + device.fg = Theme_config.volume_controller.device_headphones_fg end end ) @@ -83,20 +80,19 @@ return function(s) local node_active = stdout:gsub("\n", "") if node == node_active then device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "headphones.svg", - color["Grey900"]) - device.bg = color["Purple200"] - device.fg = color["Grey900"] + Theme_config.volume_controller.device_icon_color) + device.bg = Theme_config.volume_controller.device_headphones_selected_bg + device.fg = Theme_config.volume_controller.device_headphones_selected_fg else device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "headphones.svg", - color["Purple200"]) - device.bg = color["Grey900"] - device.fg = color["Purple200"] + Theme_config.volume_controller.device_headphones_selected_icon_color) + device.bg = Theme_config.volume_controller.device_bg + device.fg = Theme_config.volume_controller.device_headphones_fg end end ) awesome.emit_signal("update::bg_sink", node) else - device:connect_signal( "button::press", function() @@ -111,14 +107,14 @@ return function(s) function(new_node) if node == new_node then device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "microphone.svg", - color["Grey900"]) - device.bg = color["Blue200"] - device.fg = color["Grey900"] + Theme_config.volume_controller.device_icon_color) + device.bg = Theme_config.volume_controller.device_microphone_selected_bg + device.fg = Theme_config.volume_controller.device_microphone_selected_fg else device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "microphone.svg", - color["Blue200"]) - device.bg = color["Grey900"] - device.fg = color["Blue200"] + Theme_config.volume_controller.device_microphone_selected_icon_color) + device.bg = Theme_config.volume_controller.device_bg + device.fg = Theme_config.volume_controller.device_microphone_fg end end ) @@ -128,14 +124,14 @@ return function(s) local node_active = stdout:gsub("\n", "") if node == node_active then device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "microphone.svg", - color["Grey900"]) - device.bg = color["Blue200"] - device.fg = color["Grey900"] + Theme_config.volume_controller.device_icon_color) + device.bg = Theme_config.volume_controller.device_microphone_selected_bg + device.fg = Theme_config.volume_controller.device_microphone_selected_fg else device:get_children_by_id("icon")[1].image = gears.color.recolor_image(icondir .. "microphone.svg", - color["Blue200"]) - device.bg = color["Grey900"] - device.fg = color["Blue200"] + Theme_config.volume_controller.device_microphone_selected_icon_color) + device.bg = Theme_config.volume_controller.device_bg + device.fg = Theme_config.volume_controller.device_microphone_fg end end ) @@ -165,12 +161,10 @@ return function(s) strategy = "max", widget = wibox.container.constraint }, - border_color = color["Grey800"], - border_width = dpi(2), + border_color = Theme_config.volume_controller.list_border_color, + border_width = Theme_config.volume_controller.list_border_width, id = "volume_device_background", - shape = function(cr, width, height) - gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, dpi(4)) - end, + shape = Theme_config.volume_controller.list_shape, widget = wibox.container.background }, left = dpi(10), @@ -200,11 +194,9 @@ return function(s) widget = wibox.container.constraint }, id = "volume_device_background", - border_color = color["Grey800"], - border_width = dpi(2), - shape = function(cr, width, height) - gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, dpi(4)) - end, + border_color = Theme_config.volume_controller.list_border_color, + border_width = Theme_config.volume_controller.list_border_width, + shape = Theme_config.volume_controller.list_shape, widget = wibox.container.background }, left = dpi(10), @@ -222,7 +214,8 @@ return function(s) { { resize = false, - image = gears.color.recolor_image(icondir .. "menu-down.svg", color["Purple200"]), + image = gears.color.recolor_image(icondir .. "menu-down.svg", + Theme_config.volume_controller.device_headphones_selected_icon_color), widget = wibox.widget.imagebox, valign = "center", halign = "center", @@ -246,11 +239,9 @@ return function(s) layout = wibox.layout.fixed.horizontal }, id = "audio_bg", - bg = color["Grey800"], - fg = color["Purple200"], - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(4)) - end, + bg = Theme_config.volume_controller.list_bg, + fg = Theme_config.volume_controller.list_headphones_fg, + shape = Theme_config.volume_controller.list_shape, widget = wibox.container.background }, id = "audio_selector_margin", @@ -271,7 +262,8 @@ return function(s) { { resize = false, - image = gears.color.recolor_image(icondir .. "menu-down.svg", color["LightBlueA200"]), + image = gears.color.recolor_image(icondir .. "menu-down.svg", + Theme_config.volume_controller.device_microphone_selected_icon_color), widget = wibox.widget.imagebox, valign = "center", halign = "center", @@ -295,11 +287,9 @@ return function(s) layout = wibox.layout.fixed.horizontal }, id = "mic_bg", - bg = color["Grey800"], - fg = color["LightBlueA200"], - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(4)) - end, + bg = Theme_config.volume_controller.list_bg, + fg = Theme_config.volume_controller.list_microphone_fg, + shape = Theme_config.volume_controller.selector_shape, widget = wibox.container.background }, id = "mic_selector_margin", @@ -321,7 +311,7 @@ return function(s) widget = wibox.widget.imagebox, valign = "center", halign = "center", - image = gears.color.recolor_image(icondir .. "volume-high.svg", color["Purple200"]), + image = gears.color.recolor_image(icondir .. "volume-high.svg", Theme_config.volume_controller.volume_fg), id = "icon", }, { @@ -330,11 +320,11 @@ return function(s) gears.shape.rounded_rect(cr, width, height, dpi(5)) end, bar_height = dpi(5), - bar_color = color["Grey800"], - bar_active_color = color["Purple200"], - handle_color = color["Purple200"], + bar_color = Theme_config.device_border_color, + bar_active_color = Theme_config.volume_controller.volume_fg, + handle_color = Theme_config.volume_controller.volume_fg, handle_shape = gears.shape.circle, - handle_border_color = color["Purple200"], + handle_border_color = Theme_config.volume_controller.volume_fg, handle_width = dpi(12), maximum = 100, forced_height = dpi(26), @@ -362,7 +352,7 @@ return function(s) widget = wibox.widget.imagebox, valign = "center", halign = "center", - image = gears.color.recolor_image(icondir .. "microphone.svg", color["Blue200"]), + image = gears.color.recolor_image(icondir .. "microphone.svg", Theme_config.volume_controller.microphone_fg), id = "icon" }, { @@ -371,11 +361,11 @@ return function(s) gears.shape.rounded_rect(cr, width, height, dpi(5)) end, bar_height = dpi(5), - bar_color = color["Grey800"], - bar_active_color = color["Blue200"], - handle_color = color["Blue200"], + bar_color = Theme_config.volume_controller.device_border_color, + bar_active_color = Theme_config.volume_controller.microphone_fg, + handle_color = Theme_config.volume_controller.microphone_fg, handle_shape = gears.shape.circle, - handle_border_color = color["Blue200"], + handle_border_color = Theme_config.volume_controller.microphone_fg, handle_width = dpi(12), maximum = 100, forced_height = dpi(26), @@ -402,12 +392,10 @@ return function(s) margins = dpi(10), widget = wibox.container.margin }, - bg = color["Grey900"], - border_color = color["Grey800"], - border_width = dpi(4), - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(12)) - end, + bg = Theme_config.volume_controller.bg, + border_color = Theme_config.volume_controller.border_color, + border_width = Theme_config.volume_controller.border_width, + shape = Theme_config.volume_controller.shape, forced_width = dpi(400), widget = wibox.container.background } @@ -437,13 +425,15 @@ return function(s) audio_bg.shape = function(cr, width, height) gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, dpi(4)) end - audio_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-up.svg", color["Purple200"])) + audio_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-up.svg", + Theme_config.volume_controller.device_headphones_selected_icon_color)) else rubato_timer.target = 0 audio_bg.shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(4)) end - audio_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-down.svg", color["Purple200"])) + audio_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-down.svg", + Theme_config.volume_controller.device_headphones_selected_icon_color)) end end ) @@ -473,26 +463,26 @@ return function(s) mic_selector_margin.mic_bg.shape = function(cr, width, height) gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, dpi(4)) end - mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-up.svg", color["Blue200"])) + mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-up.svg", + Theme_config.volume_controller.device_microphone_selected_icon_color)) else rubato_timer.target = 0 mic_bg.shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(4)) end - mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-down.svg", color["Blue200"])) + mic_volume.icon:set_image(gears.color.recolor_image(icondir .. "menu-down.svg", + Theme_config.volume_controller.device_microphone_selected_icon_color)) end end ) - local audio_slider_margin = volume_controller:get_children_by_id("audio_volume_margin")[1].audio_volume.slider_margin. - slider + local audio_slider_margin = volume_controller:get_children_by_id("audio_volume_margin")[1].audio_volume.slider_margin.slider -- Volume slider change event audio_slider_margin:connect_signal( "property::value", function() - local volume = audio_slider_margin.value - awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ " .. tonumber(volume) .. "%") + awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ " .. tonumber(audio_slider_margin.value) .. "%") end ) @@ -502,9 +492,7 @@ return function(s) mic_slider_margin:connect_signal( "property::value", function() - local volume = mic_slider_margin.value - awful.spawn("pactl set-source-volume @DEFAULT_SOURCE@ " .. tonumber(volume) .. "%") - awesome.emit_signal("get::mic_volume", volume) + awful.spawn("pactl set-source-volume @DEFAULT_SOURCE@ " .. tonumber(mic_slider_margin.value) .. "%") end ) @@ -512,16 +500,14 @@ return function(s) local volume_controller_container = awful.popup { widget = wibox.container.background, ontop = true, - bg = color["Grey900"], + bg = Theme_config.volume_controller.bg, stretch = false, visible = false, screen = s, placement = function(c) awful.placement.align(c, { position = "top_right", margins = { right = dpi(305), top = dpi(60) } }) end, - shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(12)) - end + shape = Theme_config.volume_controller.shape, } -- Get all source devices @@ -558,8 +544,6 @@ return function(s) ) end - get_source_devices() - -- Get all input devices local function get_input_devices() awful.spawn.easy_async_with_shell( @@ -595,64 +579,70 @@ return function(s) ) end - get_input_devices() - - -- Event watcher, detects when device is addes/removed - awful.spawn.with_line_callback( - [[bash -c "LC_ALL=C pactl subscribe | grep --line-buffered 'on server'"]], - { - stdout = function(line) - get_input_devices() - get_source_devices() - awful.spawn.with_shell("pkill pactl && pkill grep") - end - } + awesome.connect_signal( + "audio::device_changed", + function() + get_input_devices() + end ) awesome.connect_signal( - "exit", + "microphone::device_changed", function() - awful.spawn.with_shell("pkill pactl && pkill grep") + get_source_devices() + end + ) + + -- Set the volume and icon + awesome.connect_signal( + "audio::get", + function(muted, volume) + if muted then + volume_controller.controller_margin.controller_layout.audio_volume_margin.audio_volume.icon:set_image(gears.color + .recolor_image(icondir .. "volume-mute.svg", Theme_config.volume_controller.volume_fg)) + else + volume = tonumber(volume) + local icon = icondir .. "volume" + if volume < 1 then + icon = icon .. "-mute" + elseif volume >= 1 and volume < 34 then + icon = icon .. "-low" + elseif volume >= 34 and volume < 67 then + icon = icon .. "-medium" + elseif volume >= 67 then + icon = icon .. "-high" + end + + volume_controller.controller_margin.controller_layout.audio_volume_margin.audio_volume.slider_margin.slider: + set_value(volume) + volume_controller.controller_margin.controller_layout.audio_volume_margin.audio_volume.icon:set_image(gears.color + .recolor_image(icon + .. ".svg", Theme_config.volume_controller.volume_fg)) + end end ) -- Get microphone volume - local function get_mic_volume() - awful.spawn.easy_async_with_shell( - "./.config/awesome/src/scripts/mic.sh volume", - function(stdout) - local volume = stdout:gsub("%%", ""):gsub("\n", "") + awesome.connect_signal( + "microphone::get", + function(muted, volume) + if muted then + --volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.slider_margin.slider:set_value(tonumber(0)) + volume_controller:get_children_by_id("mic_volume_margin")[1].icon:set_image(gears.color.recolor_image(icondir + .. "microphone-off.svg", Theme_config.volume_controller.microphone_fg)) + else + volume = tonumber(volume) volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.slider_margin.slider:set_value(tonumber(volume)) if volume > 0 then - volume_controller:get_children_by_id("mic_volume_margin")[1].icon:set_image(gears.color.recolor_image(icondir - .. "microphone.svg", color["LightBlue200"])) + volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir + .. "microphone.svg", Theme_config.volume_controller.microphone_fg)) else - volume_controller:get_children_by_id("mic_volume_margin")[1].icon:set_image(gears.color.recolor_image(icondir - .. "microphone-off.svg", color["LightBlue200"])) + volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir + .. "microphone-off.svg", Theme_config.volume_controller.microphone_fg)) end end - ) - end - - get_mic_volume() - - -- Check if microphone is muted - local function get_mic_mute() - awful.spawn.easy_async_with_shell( - "./.config/awesome/src/scripts/mic.sh mute", - function(stdout) - if stdout:match("yes") then - volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.slider_margin.slider:set_value(tonumber(0)) - volume_controller:get_children_by_id("mic_volume_margin")[1].icon:set_image(gears.color.recolor_image(icondir - .. "microphone-off.svg", color["LightBlue200"])) - else - get_mic_volume() - end - end - ) - end - - get_mic_mute() + end + ) -- When the mouse leaves the popup it stops the mousegrabber and hides the popup. volume_controller_container:connect_signal( @@ -693,57 +683,6 @@ return function(s) layout = wibox.layout.fixed.horizontal } - -- Set the volume and icon - awesome.connect_signal( - "get::volume", - function(volume) - volume = tonumber(volume) - local icon = icondir .. "volume" - if volume < 1 then - icon = icon .. "-mute" - - elseif volume >= 1 and volume < 34 then - icon = icon .. "-low" - elseif volume >= 34 and volume < 67 then - icon = icon .. "-medium" - elseif volume >= 67 then - icon = icon .. "-high" - end - - volume_controller.controller_margin.controller_layout.audio_volume_margin.audio_volume.slider_margin.slider: - set_value(volume) - volume_controller.controller_margin.controller_layout.audio_volume_margin.audio_volume.icon:set_image(gears.color. - recolor_image(icon .. ".svg", color["Purple200"])) - end - ) - - -- Check if the volume is muted - awesome.connect_signal( - "get::volume_mute", - function(mute) - if mute then - volume_controller.controller_margin.controller_layout.audio_volume_margin.audio_volume.icon:set_image(gears. - color.recolor_image(icondir .. "volume-mute.svg", color["Purple200"])) - end - end - ) - - -- Set the microphone volume - awesome.connect_signal( - "get::mic_volume", - function(volume) - if volume > 0 then - volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir - .. "microphone.svg", color["LightBlue200"])) - awesome.emit_signal("update::microphone_widget", tonumber(volume), icondir .. "microphone.svg") - else - volume_controller:get_children_by_id("mic_volume_margin")[1].mic_volume.icon:set_image(gears.color.recolor_image(icondir - .. "microphone-off.svg", color["LightBlue200"])) - awesome.emit_signal("update::microphone_widget", tonumber(volume), icondir .. "microphone-off.svg") - end - end - ) - -- Toggle container visibility awesome.connect_signal( "volume_controller::toggle", @@ -751,7 +690,6 @@ return function(s) if scr == s then volume_controller_container.visible = not volume_controller_container.visible end - end ) diff --git a/awesome/src/modules/volume_osd.lua b/awesome/src/modules/volume_osd.lua index 03ef22d..59b6b04 100644 --- a/awesome/src/modules/volume_osd.lua +++ b/awesome/src/modules/volume_osd.lua @@ -4,7 +4,6 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") @@ -71,41 +70,33 @@ return function(s) widget = wibox.container.background } - local update_slider = function() - awful.spawn.easy_async_with_shell( - "./.config/awesome/src/scripts/vol.sh mute", - function(stdout) - if stdout:match("yes") then - volume_osd_widget:get_children_by_id("icon")[1] - :set_image(gears.color.recolor_image( - icondir .. "volume-mute" .. ".svg", Theme_config.volume_osd.icon_color)) - volume_osd_widget:get_children_by_id("progressbar1")[1].value = tonumber(0) - else - awful.spawn.easy_async_with_shell( - "./.config/awesome/src/scripts/vol.sh volume", - function(stdout2) - local volume_level = stdout2:gsub("%%", ""):gsub("\n", "") - volume_osd_widget:get_children_by_id("progressbar1")[1].value = tonumber(volume_level) - local icon = icondir .. "volume" - if volume_level < 1 then - icon = icon .. "-mute" - elseif volume_level >= 1 and volume_level < 34 then - icon = icon .. "-low" - elseif volume_level >= 34 and volume_level < 67 then - icon = icon .. "-medium" - elseif volume_level >= 67 then - icon = icon .. "-high" - end - volume_osd_widget:get_children_by_id("icon")[1]:set_image(gears.color.recolor_image(icon .. ".svg", - Theme_config.volume_osd.icon_color)) - end - ) + awesome.connect_signal( + "audio::get", + function(muted, volume) + if muted then + volume_osd_widget:get_children_by_id("icon")[1] + :set_image(gears.color.recolor_image( + icondir .. "volume-mute" .. ".svg", Theme_config.volume_osd.icon_color)) + volume_osd_widget:get_children_by_id("progressbar1")[1].value = tonumber(0) + else + volume = tonumber(volume) + volume_osd_widget:get_children_by_id("progressbar1")[1].value = tonumber(volume) + local icon = icondir .. "volume" + if volume < 1 then + icon = icon .. "-mute" + elseif volume >= 1 and volume < 34 then + icon = icon .. "-low" + elseif volume >= 34 and volume < 67 then + icon = icon .. "-medium" + elseif volume >= 67 then + icon = icon .. "-high" end + volume_osd_widget:get_children_by_id("icon")[1]:set_image(gears.color.recolor_image(icon .. ".svg", + Theme_config.volume_osd.icon_color)) end - ) - end + end + ) - update_slider() local volume_container = awful.popup { widget = {}, @@ -138,10 +129,8 @@ return function(s) volume_container.visible = true if hide_volume_osd.started then hide_volume_osd:again() - update_slider() else hide_volume_osd:start() - update_slider() end end ) diff --git a/awesome/src/modules/window_switcher/init.lua b/awesome/src/modules/window_switcher/init.lua index 2d00491..f1dd646 100644 --- a/awesome/src/modules/window_switcher/init.lua +++ b/awesome/src/modules/window_switcher/init.lua @@ -8,10 +8,6 @@ local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") local wibox = require("wibox") -local naughty = require("naughty") --- Icon directory path -local icondir = awful.util.getdir("config") .. "src/assets/icons/window_switcher/" - return function(s) -- Variable to check if client is selected @@ -44,6 +40,7 @@ return function(s) local selected = objects_sorted[1].pid + for _, object in ipairs(objects_sorted) do local window_element = wibox.widget { { @@ -123,89 +120,92 @@ return function(s) local i = 1 local sel = nil + local function select_next() + if not object.valid then + return + end + if #objects_sorted >= i then + selected = objects_sorted[i].pid + sel = selected + if selected == object.pid then + window_element.border_color = Theme_config.window_switcher.selected_border_color + window_element.fg = Theme_config.window_switcher.selected_fg + window_element.bg = Theme_config.window_switcher.selected_bg + else + window_element.border_color = Theme_config.window_switcher.border_color + window_element.fg = Theme_config.window_switcher.element_fg + window_element.bg = Theme_config.window_switcher.bg + end + end + if #objects_sorted > i then + i = i + 1 + else + i = 1 + end + end + + local function raise() + if not object.valid then + return + end + if objects_sorted[i] then + if sel == object.pid then + if not object:isvisible() and object.first_tag then + object.first_tag:view_only() + end + object:emit_signal('request::activate') + object:raise() + end + + -- Reset window switcher + i = 1 + selected = objects_sorted[i].pid + sel = selected + if selected == object.pid then + window_element.border_color = Theme_config.window_switcher.selected_border_color + window_element.fg = Theme_config.window_switcher.selected_fg + window_element.bg = Theme_config.window_switcher.bg + else + window_element.border_color = Theme_config.window_switcher.border_color + window_element.fg = Theme_config.window_switcher.element_fg + window_element.bg = Theme_config.window_switcher.selected_bg + end + end + awesome.disconnect_signal( + "window_switcher::select_next", + select_next + ) + awesome.disconnect_signal( + "window_switcher::raise", + raise + ) + end + awesome.connect_signal( "window_switcher::select_next", - function() - if not object.valid then - return - end - if #objects_sorted >= i then - selected = objects_sorted[i].pid - sel = selected - - if selected == object.pid then - window_element.border_color = Theme_config.window_switcher.selected_border_color - window_element.fg = Theme_config.window_switcher.selected_fg - window_element.bg = Theme_config.window_switcher.selected_bg - else - window_element.border_color = Theme_config.window_switcher.border_color - window_element.fg = Theme_config.window_switcher.element_fg - window_element.bg = Theme_config.window_switcher.bg - end - end - if #objects_sorted > i then - i = i + 1 - else - i = 1 - end - end - ) - - object:connect_signal( - "unmanage", - function(c) - i = 1 - objects_sorted[1] = objects_sorted[#objects_sorted] - objects_sorted[#objects_sorted] = nil - if objects_sorted[1] then - selected = objects_sorted[1].pid - end - -- remove object from table - if not object.valid then - return - end - for _, object in ipairs(objects) do - if object.pid == c.pid then - table.remove(objects, _) - break - end - end - for _, object in ipairs(objects_sorted) do - if object.pid == c.pid then - table.remove(objects_sorted, _) - break - end - end - end + select_next ) awesome.connect_signal( "window_switcher::raise", - function() - if not object.valid then - return - end - if objects_sorted[i] then - if sel == object.pid then - if not object:isvisible() and object.first_tag then - object.first_tag:view_only() - end - object:emit_signal('request::activate') - object:raise() - end + raise + ) - -- Reset window switcher + + object:connect_signal( + "unmanage", + function(c) + if object.valid then i = 1 - selected = objects_sorted[i].pid - sel = selected - if selected == object.pid then - window_element.border_color = Theme_config.window_switcher.selected_border_color - window_element.fg = Theme_config.window_switcher.selected_fg - window_element.bg = Theme_config.window_switcher.bg - else - window_element.border_color = Theme_config.window_switcher.border_color - window_element.fg = Theme_config.window_switcher.element_fg - window_element.bg = Theme_config.window_switcher.selected_bg + objects_sorted[1] = objects_sorted[#objects_sorted] + objects_sorted[#objects_sorted] = nil + for _, obj in ipairs(objects_sorted) do + if obj.valid then + if obj.pid == c.pid then + table.remove(objects_sorted, _) + break + end + end end end end @@ -288,7 +288,9 @@ return function(s) awesome.connect_signal( "toggle_window_switcher", function() - window_switcher_container.visible = not window_switcher_container.visible + if mouse.screen == s then + window_switcher_container.visible = not window_switcher_container.visible + end end ) diff --git a/awesome/src/scripts/vol.sh b/awesome/src/scripts/vol.sh index 7877e7c..0c9dab0 100755 --- a/awesome/src/scripts/vol.sh +++ b/awesome/src/scripts/vol.sh @@ -1,15 +1,13 @@ #!/bin/bash -SINK=$(LC_ALL=C pactl get-default-sink) - case $1 in "volume") - echo $(LC_ALL=C pactl get-sink-volume $SINK | awk '{print $5}') + echo $(LC_ALL=C pactl get-sink-volume @DEFAULT_SINK@ | awk '{print $5}') ;; "mute") - echo $(LC_ALL=C pactl get-sink-mute $SINK) + echo $(LC_ALL=C pactl get-sink-mute @DEFAULT_SINK@) ;; "set_sink") diff --git a/awesome/src/theme/init.lua b/awesome/src/theme/init.lua index a28fc31..30cf445 100644 --- a/awesome/src/theme/init.lua +++ b/awesome/src/theme/init.lua @@ -9,8 +9,6 @@ local awful = require("awful") local beautiful = require("beautiful") local gears = require("gears") -local color = require("src.theme.colors") -local dpi = require("beautiful.xresources").apply_dpi Theme_path = awful.util.getdir("config") .. "/src/theme/" Theme = {} @@ -21,37 +19,33 @@ Theme = {} Theme.font = User_config.font.bold --#region Client variables -Theme.useless_gap = dpi(5) -Theme.border_width = dpi(0) -Theme.border_normal = color["Grey800"] -Theme.border_marked = color["Red200"] +Theme.useless_gap = Theme_config.window.useless_gap +Theme.border_width = Theme_config.window.border_width +Theme.border_normal = Theme_config.window.border_normal +Theme.border_marked = Theme_config.window.border_marked --#endregion --#region Tooltip variables -Theme.tooltip_border_color = color["Grey800"] -Theme.tooltip_bg = color["Grey900"] -Theme.tooltip_fg = color["CyanA200"] -Theme.tooltip_border_width = dpi(4) -Theme.tooltip_gaps = dpi(15) -Theme.tooltip_shape = function(cr, width, heigth) - gears.shape.rounded_rect(cr, width, heigth, dpi(4)) -end +Theme.tooltip_border_color = Theme_config.tooltip.border_color +Theme.tooltip_bg = Theme_config.tooltip.bg +Theme.tooltip_fg = Theme_config.tooltip.fg +Theme.tooltip_border_width = Theme_config.tooltip.border_width +Theme.tooltip_gaps = Theme_config.tooltip.gaps +Theme.tooltip_shape = Theme_config.tooltip.shape --#endregion --#region Hotkeys variables -Theme.hotkeys_bg = color["Grey900"] -Theme.hotkeys_fg = color["White"] -Theme.hotkeys_border_width = dpi(4) -Theme.hotkeys_border_color = color["Grey800"] -Theme.hotkeys_shape = function(cr, width, height) - gears.shape.rounded_rect(cr, width, height, dpi(12)) -end -Theme.hotkeys_modifiers_fg = color["Cyan200"] -Theme.hotkeys_description_font = User_config.font.bold -Theme.hotkeys_font = User_config.font.bold -Theme.hotkeys_group_margin = dpi(20) -Theme.hotkeys_label_bg = color["Cyan200"] -Theme.hotkeys_label_fg = color["Grey900"] +Theme.hotkeys_bg = Theme_config.hotkeys.bg +Theme.hotkeys_fg = Theme_config.hotkeys.fg +Theme.hotkeys_border_width = Theme_config.hotkeys.border_width +Theme.hotkeys_border_color = Theme_config.hotkeys.border_color +Theme.hotkeys_shape = Theme_config.hotkeys.shape +Theme.hotkeys_modifiers_fg = Theme_config.hotkeys.modifiers_fg +Theme.hotkeys_description_font = Theme_config.hotkeys.description_font +Theme.hotkeys_font = Theme_config.hotkeys.font +Theme.hotkeys_group_margin = Theme_config.hotkeys.group_margin +Theme.hotkeys_label_bg = Theme_config.hotkeys.label_bg +Theme.hotkeys_label_fg = Theme_config.hotkeys.label_fg --#endregion Theme.awesome_icon = Theme_path .. "../assets/icons/ArchLogo.png" diff --git a/awesome/src/theme/theme_config.lua b/awesome/src/theme/theme_config.lua index 01ca135..657246b 100644 --- a/awesome/src/theme/theme_config.lua +++ b/awesome/src/theme/theme_config.lua @@ -44,6 +44,9 @@ Theme_config.cpu_freq = { Theme_config.cpu_temp = { fg = color["Grey900"], + bg_low = color["Green200"], + bg_mid = color["Orange200"], + bg_high = color["Red200"], } Theme_config.cpu_usage = { @@ -63,6 +66,9 @@ Theme_config.gpu_usage = { Theme_config.gpu_temp = { fg = color["Grey900"], + bg_low = color["Green200"], + bg_mid = color["Orange200"], + bg_high = color["Red200"], } Theme_config.kblayout = { @@ -137,8 +143,45 @@ Theme_config.tasklist = { ]] -- +--#region Module Settings +Theme_config.notification = { + border_color = color["Grey800"], + border_width = dpi(4), + bg = color["Grey900"], + spacing = dpi(10), + shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(10)) + end, + shape_inside = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(4)) + end, + position = "bottom_right", + timeout = 3, + corner_spacing = dpi(20), + bg_urgent = color["Grey900"], + fg_urgent_title = color["RedA200"], + fg_urgent_message = color["Red200"], + fg_urgent_app_name = color["RedA400"], + fg_normal_title = color["Pink200"], + fg_normal_message = "#ffffffaa", + bg_normal = color["Grey900"], + spotify_button_icon_color = color["Cyan200"], + action_bg = color["Grey800"], + action_fg = color["Green200"], + icon_color = color["Teal200"], + fg_appname = color["Teal200"], + fg_time = color["Teal200"], + fg_close = color["Teal200"], + bg_close = color["Grey900"], + title_border_color = color["Grey800"], + title_border_width = dpi(2), +} + Theme_config.notification_center = { bg = color["Grey900"], + border_color = color["Grey800"], + border_width = dpi(4), + spacing_color = color["Grey800"], -- Clear all button clear_all_button = { @@ -148,31 +191,91 @@ Theme_config.notification_center = { -- DnD button dnd = { - + bg = color["Grey900"], + fg = color["Pink200"], + disabled = color["Grey700"], + enabled = color["Purple200"], + border_disabled = color["Grey800"], + border_enabled = color["Purple200"], }, -- Notification_list notification_list = { - + timer_fg = color["Teal200"], + close_color = color["Teal200"], + close_bg = color["Grey900"], + icon = color["Teal200"], + title_fg = color["Teal200"], + title_border_color = color["Grey800"], + title_border_width = dpi(2), + notification_border_color = color["Grey800"], + notification_bg = color["Grey900"], + notification_border_width = dpi(4), + notification_shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, 8) + end }, -- Profile widget profile = { - + username_icon_color = color["Blue200"], + os_prefix_icon_color = color["Blue200"], + kernel_icon_color = color["Blue200"], + uptime_icon_color = color["Blue200"], + fg = color["Green200"], + border_color = color["Grey800"], + border_width = dpi(4), + shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(8)) + end }, -- Song info widget song_info = { - + shuffle_disabled = color["Grey800"], + shuffle_enabled = color["Green200"], + repeat_disabled = color["Grey800"], + repeat_single = color["Green200"], + repeat_all = color["Green200"], + prev_enabled = color["Teal200"], + next_enabled = color["Teal200"], + play_enabled = color["Teal200"], + prev_hover = color["Teal300"], + next_hover = color["Teal300"], + play_hover = color["Teal300"], + title_fg = color["Pink200"], + artist_fg = color["Teal200"], + duration_fg = color["Teal200"], + progress_color = color["Purple200"], + progress_background_color = color["Grey800"], + border_color = color["Grey800"], + border_width = dpi(4), + shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(8)) + end }, -- Spacing line widget spacing_line = { - + color = color["Grey800"], }, -- Status bar widgets status_bar = { - + border_color = color["Grey800"], + border_width = dpi(4), + shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(10)) + end, + bar_bg_color = color["Grey800"], + cpu_usage_color = color["Cyan200"], + cpu_temp_color = color["Blue200"], + ram_usage_color = color["Red200"], + gpu_usage_color = color["Green200"], + gpu_temp_color = color["Green200"], + volume_color = color["Yellow200"], + microphone_color = color["Blue200"], + backlight_color = color["Pink200"], + battery_color = color["Purple200"], }, -- Time Date widget @@ -182,7 +285,15 @@ Theme_config.notification_center = { -- Weather widget weather = { - + description_fg = color["LightBlue200"], + line_color = color["Grey800"], + speed_icon_color = color["OrangeA200"], + humidity_icon_color = color["OrangeA200"], + border_color = color["Grey800"], + border_width = dpi(4), + shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(12)) + end }, } @@ -219,6 +330,28 @@ Theme_config.brightness_osd = { icon_color = color["Blue200"], } +Theme_config.center_bar = { + bg = color["Grey900"], +} + +Theme_config.dock = { + element_bg = color["Grey900"], + element_focused_bg = color["Grey800"], + element_focused_hover_bg = color["Grey800"], + element_focused_hover_fg = color["White"], + bg = color["Grey900"], + indicator_bg = color["Grey600"], + indicator_bg_focus = color["YellowA200"], + indicator_bg_urgent = color["RedA200"], + indicator_bg_maximized = color["GreenA200"], + indicator_bg_minimized = color["BlueA200"], + indicator_bg_fullscreen = color["PurpleA200"], +} + +Theme_config.left_bar = { + bg = color["Grey900"], +} + Theme_config.powermenu = { container_bg = "#21212188", button_fg = color["Grey900"], @@ -229,6 +362,10 @@ Theme_config.powermenu = { logout_button_bg = color["Orange200"], } +Theme_config.right_bar = { + bg = color["Grey900"], +} + Theme_config.titlebar = { bg = "#121212AA", close_button_bg = color["Red200"], @@ -241,7 +378,42 @@ Theme_config.titlebar = { } Theme_config.volume_controller = { - + bg = color["Grey900"], + border_color = color["Grey800"], + border_width = dpi(4), + shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(12)) + end, + device_bg = color["Grey900"], + device_border_color = color["Grey800"], + device_border_width = dpi(2), + device_shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(4)) + end, + device_headphones_fg = color["Purple200"], + device_microphone_fg = color["Blue200"], + device_headphones_selected_bg = color["Purple200"], + device_headphones_selected_fg = color["Grey900"], + device_microphone_selected_bg = color["Blue200"], + device_microphone_selected_fg = color["Grey900"], + device_headphones_selected_border_color = color["Purple200"], + device_microphone_selected_border_color = color["Blue200"], + device_headphones_selected_icon_color = color["Purple200"], + device_microphone_selected_icon_color = color["Blue200"], + device_icon_color = color["Grey900"], + list_border_color = color["Grey800"], + list_border_width = dpi(2), + list_shape = function(cr, width, height) + gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, dpi(4)) + end, + list_bg = color["Grey800"], + list_headphones_fg = color["Purple200"], + list_microphone_fg = color["Blue200"], + selector_shape = function(cr, width, height) + gears.shape.rounded_rect(cr, width, height, dpi(4)) + end, + volume_fg = color["Purple200"], + microphone_fg = color["Blue200"], } Theme_config.volume_osd = { @@ -264,3 +436,67 @@ Theme_config.window_switcher = { selected_border_color = color["Purple200"], selected_bg = "#313131" } + +Theme_config.application_launcher = { + bg = color["Grey900"], + border_color = color["Grey800"], + border_width = dpi(4), + application = { + + }, + searchbar = { + bg = color["Grey900"], + fg = color["Green200"], + fg_hint = color["Grey800"], + border_color = color["Red200"], + border_width = dpi(2), + } +} +--#endregion + +--[[ + ======================== + === General Settings === + ======================== + + Here are some general settings for borders, tooltips etc + +]] -- + +--#region General Settings + +Theme_config.window = { + border_width = dpi(0), + border_normal = color["Grey800"], + border_marked = color["Red200"], + useless_gap = dpi(5) +} + +Theme_config.tooltip = { + bg = color["Grey900"], + fg = color["CyanA200"], + border_color = color["Grey800"], + border_width = dpi(4), + gaps = dpi(15), + shape = function(cr, width, heigth) + gears.shape.rounded_rect(cr, width, heigth, dpi(4)) + end +} + +Theme_config.hotkeys = { + bg = color["Grey900"], + fg = color["White"], + border_color = color["Grey800"], + border_width = dpi(4), + shape = function(cr, width, heigth) + gears.shape.rounded_rect(cr, width, heigth, dpi(12)) + end, + modifiers_fg = color["Cyan200"], + description_font = User_config.font.bold, + font = User_config.font.bold, + group_margin = dpi(20), + label_bg = color["Cyan200"], + label_fg = color["Grey900"], +} + +--#endregion diff --git a/awesome/src/theme/user_config.lua b/awesome/src/theme/user_config.lua index e8e28c8..eab553c 100644 --- a/awesome/src/theme/user_config.lua +++ b/awesome/src/theme/user_config.lua @@ -89,11 +89,11 @@ User_config = { "arduino-arduinoide.desktop", "us.zoom.Zoom.desktop", "thunderbird.desktop", - "com.mattermost.Desktop.desktop", + "com.ultimaker.cura.desktop", "blender.desktop", "freecad.desktop", "The Witcher 3 Wild Hunt.desktop", - "windows_11.desktop" + --"windows_11.desktop" }, --[[ diff --git a/awesome/src/tools/dbus/bluetooth_dbus.lua b/awesome/src/tools/dbus/bluetooth_dbus.lua new file mode 100644 index 0000000..ce453e0 --- /dev/null +++ b/awesome/src/tools/dbus/bluetooth_dbus.lua @@ -0,0 +1,135 @@ +local awful = require("awful") +local gears = require("gears") +local dbus_proxy = require("dbus_proxy") +local lgi = require("lgi") +local naughty = require("naughty") + +return function() + + local function get_device_info(object_path) + if object_path ~= nil and object_path:match("/org/bluez/hci0/dev") then + local device = dbus_proxy.Proxy:new { + bus = dbus_proxy.Bus.SYSTEM, + name = "org.bluez", + interface = "org.bluez.Device1", + path = object_path + } + + local battery = dbus_proxy.Proxy:new { + bus = dbus_proxy.Bus.SYSTEM, + name = "org.bluez", + interface = "org.bluez.Battery1", + path = object_path + } + + local device_properties = dbus_proxy.Proxy:new { + bus = dbus_proxy.Bus.SYSTEM, + name = "org.bluez", + interface = "org.freedesktop.DBus.Properties", + path = object_path + } + awesome.emit_signal("bluetooth::scan") + if device.Name ~= nil or device.Alias ~= nil then + device_properties:connect_signal(function() + awesome.emit_signal("bluetooth::device_changed", device, battery) + end, "PropertiesChanged") + awesome.emit_signal("bluetooth::device_changed", device, battery) + end + end + end + + awful.spawn.easy_async_with_shell( + "lsusb | grep Bluetooth", + function(stdout) + stdout = stdout:gsub("\n", "") + if stdout ~= "" or stdout == nil then + local ObjectManager = dbus_proxy.Proxy:new { + bus = dbus_proxy.Bus.SYSTEM, + name = "org.bluez", + interface = "org.freedesktop.DBus.ObjectManager", + path = "/" + } + + local Adapter = dbus_proxy.Proxy:new { + bus = dbus_proxy.Bus.SYSTEM, + name = "org.bluez", + interface = "org.bluez.Adapter1", + path = "/org/bluez/hci0" + } + + local AdapterProperties = dbus_proxy.Proxy:new { + bus = dbus_proxy.Bus.SYSTEM, + name = "org.bluez", + interface = "org.freedesktop.DBus.Properties", + path = "/org/bluez/hci0" + } + + ObjectManager:connect_signal( + function(interface) + get_device_info(interface) + end, + "InterfacesAdded" + ) + + ObjectManager:connect_signal( + function(interface) + awesome.emit_signal("device_removed", interface) + end, + "InterfacesRemoved" + ) + + Adapter:connect_signal( + function(data) + if data.Powered ~= nil then + awesome.emit_signal("state", data.Powered) + end + end, + "PropertiesChanged" + ) + + awesome.connect_signal( + "bluetooth::scan", + function() + Adapter:StartDiscovery() + end + ) + + AdapterProperties:connect_signal( + function(data) + if data.Powered ~= nil then + if data.Powered then + Adapter:StartDiscovery() + end + end + end, + "PropertiesChanged" + ) + + awesome.connect_signal("toggle_bluetooth", + function() + local is_powered = Adapter.Powered + Adapter:Set( + "org.bluez.Adapter1", + "Powered", + lgi.GLib.Variant("b", not is_powered) + ) + Adapter.Powered = { signature = "b", value = not is_powered } + awesome.emit_signal("state", Adapter.Powered) + end) + + gears.timer.delayed_call( + function() + local objects = ObjectManager:GetManagedObjects() + + for object_path, _ in pairs(objects) do + get_device_info(object_path) + end + + awesome.emit_signal("state", Adapter.Powered) + end + ) + end + end + ) + +end diff --git a/awesome/src/tools/helpers/audio.lua b/awesome/src/tools/helpers/audio.lua new file mode 100644 index 0000000..6a0123f --- /dev/null +++ b/awesome/src/tools/helpers/audio.lua @@ -0,0 +1,77 @@ +local awful = require("awful") + +awful.spawn.with_line_callback( + [[bash -c "LC_ALL=C pactl subscribe"]], + { + stdout = function(line) + -- Volume changed + if line:match("on sink") or line:match("on source") then + awesome.emit_signal("audio::volume_changed") + awesome.emit_signal("microphone::volume_changed") + end + -- Device added/removed + if line:match("on server") then + awesome.emit_signal("audio::device_changed") + awesome.emit_signal("microphone::device_changed") + end + end, + output_done = function() + -- Kill the pulseaudio subscribe command to prevent it from spawning multiple instances + awful.spawn.with_shell("pkill pactl && pkill grep") + end + } +) + +awesome.connect_signal( + "exit", + function() + awful.spawn.with_shell("pkill pactl && pkill grep") + end +) + +awesome.connect_signal( + "audio::volume_changed", + function() + awful.spawn.easy_async_with_shell( + "./.config/awesome/src/scripts/vol.sh mute", + function(stdout) + local muted = false + if stdout:match("yes") then + muted = true + end + awful.spawn.easy_async_with_shell( + "./.config/awesome/src/scripts/vol.sh volume", + function(stdout2) + awesome.emit_signal("audio::get", muted, stdout2:gsub("%%", ""):gsub("\n", "") or 0) + end + ) + end + ) + end +) + +awesome.connect_signal( + "microphone::volume_changed", + function() + awful.spawn.easy_async_with_shell( + "./.config/awesome/src/scripts/mic.sh mute", + function(stdout) + local muted = false + if stdout:match("yes") then + muted = true + end + awful.spawn.easy_async_with_shell( + "./.config/awesome/src/scripts/mic.sh volume", + function(stdout2) + awesome.emit_signal("microphone::get", muted, stdout2:gsub("%%", ""):gsub("\n", "") or 0) + end + ) + end + ) + end +) + +awesome.emit_signal("audio::volume_changed") +awesome.emit_signal("microphone::volume_changed") +awesome.emit_signal("audio::device_changed") +awesome.emit_signal("microphone::device_changed") diff --git a/awesome/src/tools/helpers/backlight.lua b/awesome/src/tools/helpers/backlight.lua new file mode 100644 index 0000000..c80388c --- /dev/null +++ b/awesome/src/tools/helpers/backlight.lua @@ -0,0 +1,25 @@ +local awful = require("awful") + +BACKLIGHT_MAX_BRIGHTNESS = 0 +BACKLIGHT_SEPS = 0 +awful.spawn.easy_async_with_shell( + "pkexec xfpm-power-backlight-helper --get-max-brightness", + function(stdout) + BACKLIGHT_MAX_BRIGHTNESS = tonumber(stdout) + BACKLIGHT_SEPS = BACKLIGHT_MAX_BRIGHTNESS / 100 + BACKLIGHT_SEPS = math.floor(BACKLIGHT_SEPS) + end +) + +awesome.connect_signal( + "brightness::update", + function() + awful.spawn.easy_async_with_shell( + "pkexec xfpm-power-backlight-helper --get-brightness", + function(value) + awesome.emit_signal("brightness::get", math.floor((tonumber(value) - 1) / (BACKLIGHT_MAX_BRIGHTNESS - 1) * 100)) + awesome.emit_signal("brightness::rerun") + end + ) + end +) diff --git a/awesome/src/tools/helpers/init.lua b/awesome/src/tools/helpers/init.lua index 0834817..87470cb 100644 --- a/awesome/src/tools/helpers/init.lua +++ b/awesome/src/tools/helpers/init.lua @@ -4,3 +4,5 @@ require("src.tools.helpers.cpu_freq") require("src.tools.helpers.ram") require("src.tools.helpers.gpu_usage") require("src.tools.helpers.gpu_temp") +require("src.tools.helpers.audio") +--require("src.tools.helpers.backlight") diff --git a/awesome/src/tools/xdg_icon_lookup.lua b/awesome/src/tools/xdg_icon_lookup.lua index 3f3de6c..e893ade 100644 --- a/awesome/src/tools/xdg_icon_lookup.lua +++ b/awesome/src/tools/xdg_icon_lookup.lua @@ -19,13 +19,13 @@ local function get_basedir() if gears.filesystem.dir_readable(dir) then table.insert(dirs, dir) end for _, value in ipairs(GLib.get_system_data_dirs()) do - dir = GLib.build_filenamev({ value, ".icons" }) + dir = GLib.build_filenamev({ value, "icons" }) if gears.filesystem.dir_readable(dir) then table.insert(dirs, dir) end end local need_usr_share_pixmaps = true for _, value in ipairs(GLib.get_system_data_dirs()) do - dir = GLib.build_filenamev({ value, ".icons" }) + dir = GLib.build_filenamev({ value, "icons" }) if gears.filesystem.dir_readable(dir) then table.insert(dirs, dir) end if dir == "/usr/share/pixmaps" then need_usr_share_pixmaps = false @@ -38,8 +38,6 @@ local function get_basedir() table.insert(dirs, dir) end - table.insert(dirs, "/usr/share/icons") - return dirs end @@ -186,6 +184,9 @@ local function find_icon_helper(self, icon, size) if filename then return filename end for _, parent in ipairs(self.theme_index:get_inherits()) do + if parent == "hicolor" then + return + end filename = find_icon_helper(xdg_icon_lookup(parent, self.base_directories), icon, size) if filename then return filename end end @@ -199,10 +200,10 @@ local iconcache = {} ---@param size any ---@return string path_to_icon function xdg_icon_lookup:find_icon(icon, size) - if iconcache[icon] then - return iconcache[icon] - end - size = size or 64 + + if icon_cache[icon] == "" then return nil end + if iconcache[icon] then return iconcache[icon] end + if not icon or icon == "" then return nil end local filename = find_icon_helper(self, icon, size) @@ -223,10 +224,8 @@ function xdg_icon_lookup:find_icon(icon, size) return filename end - local fallback = gears.color.recolor_image(require("awful").util.getdir("config") .. "src/assets/icons/fallback.svg", - "#ffffff") - iconcache[icon] = fallback - return fallback + iconcache[icon] = "" + return nil end xdg_icon_lookup.mt.__call = function(_, ...) diff --git a/awesome/src/widgets/audio.lua b/awesome/src/widgets/audio.lua index 3b95a3c..9ec8a33 100644 --- a/awesome/src/widgets/audio.lua +++ b/awesome/src/widgets/audio.lua @@ -55,15 +55,19 @@ return function(s) widget = wibox.container.background } - local get_volume = function() - awful.spawn.easy_async_with_shell( - "./.config/awesome/src/scripts/vol.sh volume", - function(stdout) + awesome.connect_signal( + "audio::get", + function(muted, volume) + if muted then + audio_widget.container.audio_layout.label.visible = false + audio_widget.container.audio_layout.icon_margin.icon_layout.icon:set_image( + gears.color.recolor_image(icondir .. "volume-mute" .. ".svg", Theme_config.audio.fg)) + else + audio_widget.container:set_right(10) local icon = icondir .. "volume" - stdout = stdout:gsub("%%", "") - local volume = tonumber(stdout) or 0 audio_widget.container.audio_layout.spacing = dpi(5) audio_widget.container.audio_layout.label.visible = true + volume = tonumber(volume) if volume < 1 then icon = icon .. "-mute" audio_widget.container.audio_layout.spacing = dpi(0) @@ -78,29 +82,9 @@ return function(s) audio_widget.container.audio_layout.label:set_text(volume .. "%") audio_widget.container.audio_layout.icon_margin.icon_layout.icon:set_image( gears.color.recolor_image(icon .. ".svg", Theme_config.audio.fg)) - awesome.emit_signal("get::volume", volume) - awesome.emit_signal("update::volume_widget", volume, icon .. ".svg") end - ) - end - - local check_muted = function() - awful.spawn.easy_async_with_shell( - "./.config/awesome/src/scripts/vol.sh mute", - function(stdout) - if stdout:match("yes") then - audio_widget.container.audio_layout.label.visible = false - audio_widget.container.audio_layout.icon_margin.icon_layout.icon:set_image( - gears.color.recolor_image(icondir .. "volume-mute" .. ".svg", Theme_config.audio.fg)) - awesome.emit_signal("get::volume_mute", true) - else - audio_widget.container:set_right(10) - awesome.emit_signal("get::volume_mute", false) - get_volume() - end - end - ) - end + end + ) -- Signals Hover_signal(audio_widget, Theme_config.audio.bg, Theme_config.audio.fg) @@ -108,19 +92,10 @@ return function(s) audio_widget:connect_signal( "button::press", function() - awesome.emit_signal("module::slider:update") awesome.emit_signal("volume_controller::toggle", s) awesome.emit_signal("volume_controller::toggle:keygrabber") end ) - gears.timer { - timeout = 0.5, - call_now = true, - autostart = true, - callback = check_muted - } - - check_muted() return audio_widget end diff --git a/awesome/src/widgets/cpu_info.lua b/awesome/src/widgets/cpu_info.lua index 8519393..a13cf20 100644 --- a/awesome/src/widgets/cpu_info.lua +++ b/awesome/src/widgets/cpu_info.lua @@ -4,16 +4,14 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") -local watch = awful.widget.watch local wibox = require("wibox") local icon_dir = awful.util.getdir("config") .. "src/assets/icons/cpu/" --TODO: Add tooltip with more CPU and per core information -return function(widget, clock_mode) +return function(widget, _) local cpu_usage_widget = wibox.widget { { @@ -93,7 +91,7 @@ return function(widget, clock_mode) right = dpi(8), widget = wibox.container.margin }, - bg = color["Green200"], + bg = Theme_config.cpu_temp.bg_low, fg = Theme_config.cpu_temp.fg, shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(6)) @@ -157,13 +155,13 @@ return function(widget, clock_mode) local temp_icon local temp_color if temp < 50 then - temp_color = color["Green200"] + temp_color = Theme_config.cpu_temp.bg_low temp_icon = icon_dir .. "thermometer-low.svg" elseif temp >= 50 and temp < 80 then - temp_color = color["Orange200"] + temp_color = Theme_config.cpu_temp.bg_mid temp_icon = icon_dir .. "thermometer.svg" elseif temp >= 80 then - temp_color = color["Red200"] + temp_color = Theme_config.cpu_temp.bg_high temp_icon = icon_dir .. "thermometer-high.svg" end Hover_signal(cpu_temp, temp_color, Theme_config.cpu_temp.fg) diff --git a/awesome/src/widgets/date.lua b/awesome/src/widgets/date.lua index 0512b57..8b9d791 100644 --- a/awesome/src/widgets/date.lua +++ b/awesome/src/widgets/date.lua @@ -40,7 +40,8 @@ return function() id = "label", align = "center", valign = "center", - widget = wibox.widget.textbox + format = "%a, %b %d", + widget = wibox.widget.textclock }, id = "date_layout", layout = wibox.layout.fixed.horizontal @@ -58,36 +59,8 @@ return function() widget = wibox.container.background } - local set_date = function() - date_widget.container.date_layout.label:set_text(os.date("%a, %b %d")) - end - - -- Updates the date every minute, dont blame me if you miss silvester - gears.timer { - timeout = 60, - autostart = true, - call_now = true, - callback = function() - set_date() - end - } - -- Signals Hover_signal(date_widget, Theme_config.date.bg, Theme_config.date.fg) - date_widget:connect_signal( - "mouse::enter", - function() - awesome.emit_signal("widget::calendar_osd:stop", true) - end - ) - - date_widget:connect_signal( - "mouse::leave", - function() - awesome.emit_signal("widget::calendar_osd:rerun", true) - end - ) - return date_widget end diff --git a/awesome/src/widgets/gpu_info.lua b/awesome/src/widgets/gpu_info.lua index 5371d70..133c4f5 100644 --- a/awesome/src/widgets/gpu_info.lua +++ b/awesome/src/widgets/gpu_info.lua @@ -4,10 +4,8 @@ -- Awesome Libs local awful = require("awful") -local color = require("src.theme.colors") local dpi = require("beautiful").xresources.apply_dpi local gears = require("gears") -local watch = awful.widget.watch local wibox = require("wibox") local icon_dir = awful.util.getdir("config") .. "src/assets/icons/cpu/" @@ -92,7 +90,7 @@ return function(widget) right = dpi(8), widget = wibox.container.margin }, - bg = color["Green200"], + bg = Theme_config.gpu_temp.bg_low, fg = Theme_config.gpu_temp.fg, shape = function(cr, width, height) gears.shape.rounded_rect(cr, width, height, dpi(6)) @@ -120,18 +118,18 @@ return function(widget) if temp_num then if temp_num < 50 then - temp_color = color["Green200"] + temp_color = Theme_config.gpu_temp.bg_low temp_icon = icon_dir .. "thermometer-low.svg" elseif temp_num >= 50 and temp_num < 80 then - temp_color = color["Orange200"] + temp_color = Theme_config.gpu_temp.bg_mid temp_icon = icon_dir .. "thermometer.svg" elseif temp_num >= 80 then - temp_color = color["Red200"] + temp_color = Theme_config.gpu_temp.bg_high temp_icon = icon_dir .. "thermometer-high.svg" end else temp_num = "NaN" - temp_color = color["Green200"] + temp_color = Theme_config.gpu_temp.bg_low temp_icon = icon_dir .. "thermometer-low.svg" end gpu_temp_widget.container.gpu_layout.icon_margin.icon_layout.icon:set_image(temp_icon) diff --git a/awesome/src/widgets/ram_info.lua b/awesome/src/widgets/ram_info.lua index 0b163bb..c665f94 100644 --- a/awesome/src/widgets/ram_info.lua +++ b/awesome/src/widgets/ram_info.lua @@ -58,7 +58,7 @@ return function() Hover_signal(ram_widget, Theme_config.ram_info.bg, Theme_config.ram_info.fg) awesome.connect_signal( - "update::ram", + "update::ram_widget", function(MemTotal, MemFree, MemAvailable) local ram_string = tostring(string.format("%.1f", ((MemTotal - MemAvailable) / 1024 / 1024)) .. "/" .. string.format("%.1f", (MemTotal / 1024 / 1024)) .. "GB"):gsub(",", ".") diff --git a/awesome/src/widgets/taglist.lua b/awesome/src/widgets/taglist.lua index 6b73a92..a68b993 100644 --- a/awesome/src/widgets/taglist.lua +++ b/awesome/src/widgets/taglist.lua @@ -82,6 +82,7 @@ local list_update = function(widget, buttons, _, _, objects) id = "icon_container", { id = "icon", + image = client.icon, resize = true, valign = "center", halign = "center", @@ -94,7 +95,7 @@ local list_update = function(widget, buttons, _, _, objects) widget = wibox.container.margin } - icon.icon_container.icon:set_image(xdg_icon_lookup:find_icon(client.class, 64)) + icon.icon_container.icon:set_image(xdg_icon_lookup:find_icon(client.class, 64) or client.icon) tag_widget.container:setup({ icon, diff --git a/awesome/src/widgets/tasklist.lua b/awesome/src/widgets/tasklist.lua index 57b6e3b..92c4e36 100644 --- a/awesome/src/widgets/tasklist.lua +++ b/awesome/src/widgets/tasklist.lua @@ -22,6 +22,7 @@ local list_update = function(widget, buttons, label, _, objects) valign = "center", halign = "center", resize = true, + image = object.icon, widget = wibox.widget.imagebox }, nil, @@ -113,7 +114,8 @@ local list_update = function(widget, buttons, label, _, objects) task_widget:set_bg(Theme_config.tasklist.bg) task_widget.container.layout_it.title:set_text('') end - task_widget.container.layout_it.margin.layout_icon.icon:set_image(xdg_icon_lookup:find_icon(object.class, 64)) + task_widget:get_children_by_id("icon")[1]:set_image(xdg_icon_lookup:find_icon(object.class, 64) or + object.icon) widget:add(task_widget) widget:set_spacing(dpi(6)) diff --git a/awesome/wibox/widget/inputtextbox.lua b/awesome/wibox/widget/inputtextbox.lua new file mode 100644 index 0000000..32e29fd --- /dev/null +++ b/awesome/wibox/widget/inputtextbox.lua @@ -0,0 +1,282 @@ +--------------------------------------------------------------------------- +-- A widget to write text in +--@DOC_wibox_widget_defaults_inputtextbox_EXAMPLE@ +-- +-- @author Rene Kievits +-- @copyright 2022, Rene Kievits +-- @widgetmod wibox.widget.inputtextbox +-- @supermodule wibox.widget.base +--------------------------------------------------------------------------- + +local base = require("wibox.widget.base") +local gdebug = require("gears.debug") +local gfs = require("gears.filesystem") +local gobject = require("gears.object") +local gstring = require("gears.string") +local beautiful = require("beautiful") +local keygrabber = require("awful.keygrabber") +local lgi = require("lgi") +local gtable = require("gears.table") +local wibox = require("wibox") +local setmetatable = setmetatable + +local inputtextbox = { mt = {} } + +--Private data +local data = {} +data.history = {} + +local search_term = nil +local function itera(inc, a, i) + i = i + inc + local v = a[i] + if v then return i, v end +end + +--- Load history file in history table +-- @param id The data.history identifier which is the path to the filename. +-- @param[opt] max The maximum number of entried in file. +local function history_check_load(id, max) + if id and id ~= "" and not data.history[id] then + data.history[id] = { max = 50, table = {} } + + if max then + data.history[id].max = max + end + + local f = io.open(id, "r") + if not f then return end + + for line in f:lines() do + if gtable.hasitem(data.histroy[id].table, line) then + if #data.history[id].table >= data.history[id].max then + break + end + end + end + f:close() + end +end + +local function is_word_char(c) + if string.find(c, "[{[(,.:;_-+=@/ ]") then + return false + else + return true + end +end + +local function cword_start(s, pos) + local i = pos + if i > 1 then + i = i - 1 + end + while i >= 1 and not is_word_char(s:sub(i, i)) do + i = i - 1 + end + while i >= 1 and is_word_char(s:sub(i, i)) do + i = i - 1 + end + if i <= #s then + i = i + 1 + end + return i +end + +local function cword_end(s, pos) + local i = pos + while i <= #s and not is_word_char(s:sub(i, i)) do + i = i + 1 + end + while i <= #s and is_word_char(s:sub(i, i)) do + i = i + 1 + end + return i +end + +--- Save history table in history file +-- @param id The data.history identifier +local function history_save(id) + if data.history[id] then + gfs.make_parent_directories(id) + local f = io.open(id, "w") + if not f then + gdebug.print_warning("Failed to write the history to " .. id) + return + end + for i = 1, math.min(#data.history[id].table, data.history[id].max) do + f:write(data.history[id].table[i] .. "\n") + end + f:close() + end +end + +--- Return the number of items in history table regarding the id +-- @param id The data.history identifier +-- @return the number of items in history table, -1 if history is disabled +local function history_items(id) + if data.history[id] then + return #data.history[id].table + else + return -1 + end +end + +--- Add an entry to the history file +-- @param id The data.history identifier +-- @param command The command to add +local function history_add(id, command) + if data.history[id] and command ~= "" then + local index = gtable.hasitem(data.history[id].table, command) + if index == nil then + table.insert(data.history[id].table, command) + + -- Do not exceed our max_cmd + if #data.history[id].table > data.history[id].max then + table.remove(data.history[id].table, 1) + end + + history_save(id) + else + -- Bump this command to the end of history + table.remove(data.history[id].table, index) + table.insert(data.history[id].table, command) + history_save(id) + end + end +end + +local function have_multibyte_char_at(text, position) + return text:sub(position, position):wlen() == -1 +end + +local function text_with_cursor(args) + local char, spacer, text_start, text_end, ret + local text = args.text or "" + local hint = args.hint or "" + local cursor = args.cursor or "" + local indicator = args.indicator or "|" + + if args.select_all then + if #text == 0 then char = " " else char = gstring.xml_escape(text) end + spacer = " " + text_start = "" + text_end = "" + elseif #text < args.cursor_pos then + char = " " + spacer = "" + text_start = gstring.xml_escape(text) + text_end = "" + else + local offset = 0 + if have_multibyte_char_at(text, args.cursor_pos) then + offset = 1 + end + char = gstring.xml_escape(text:sub(args.cursor_pos, args.cursor_pos + offset)) + spacer = " " + text_start = gstring.xml_escape(text:sub(1, args.cursor_pos - 1)) + text_end = gstring.xml_escape(text:sub(args.cursor_pos + offset + 1)) + end + + if args.highlighter then + text_start, text_end = args.highlighter(text_start, text_end) + end + + if #text == 0 then + ret = hint .. spacer + else + ret = text_start .. indicator .. text_end .. spacer + end + + return ret +end + +local function update(self) + self.textbox:set_font(self.font) + self.textbox:set_markup(text_with_cursor { + text = self.text, + hint = self.hint, + cursor = self.cursor, + cursor_pos = self.cursor_pos, + select_all = self.select_all, + indicator = self.indicator, + highlighter = self.highlighter, + }) +end + +function inputtextbox:start() + self.textbox:set_font(self.font) + self.textbox:set_markup(text_with_cursor { + text = self.text, + hint = self.hint, + cursor = self.cursor, + cursor_pos = self.cursor_pos, + select_all = self.select_all, + indicator = self.indicator, + highlighter = self.highlighter, + }) + + self._private.grabber = keygrabber.run( + function(modifierts, key, event) + local mod = {} + for _, v in ipairs(modifierts) do mod[v] = true end + + + --Get out cases + if (mod.Control and (key == "c" or key == "g")) or (not mod.Control and key == "Escape") then + self:stop() + return false + elseif (mod.Control and (key == "j" or key == "m")) then + --callback + return + end + + end + ) + +end + +function inputtextbox:stop() + keygrabber.stop(self._private.grabber) + history_save(self.history_path) + return false +end + +--- Create a new inputtextbox +-- +-- @tparam[opt=""] string text The hint text when there is no input +-- @treturn table A new inputtextbox widget +-- @constructorfct wibox.widget.inputtextbox +local function new(args) + args = args or {} + + args.callback = args.callback or nil + args.hint = args.hint or "" + args.font = args.font or beautiful.inputtextbox_font or beautiful.font + args.bg = args.bg or beautiful.inputtextbox_bg or beautiful.bg_normal + args.fg_hint = args.fg_hint or beautiful.inputtextbox_fg_hint or beautiful.fg_normal or "#888888" + args.fg = args.fg or beautiful.inputtextbox_fg or beautiful.fg_normal + args.cursor = args.cursor or "fleur" + args.select_all = args.select_all or false + args.highlighter = args.highlighter or nil + + local textbox = wibox.widget.textbox() + textbox:set_text(args.hint or "") + --textbox:set_fg(args.fg_hint or beautiful.fg_hint or "#888888") + --textbox:set_bg(args.bg_normal or beautiful.bg_normal or "#212121") + + local ret = gobject({}) + ret._private = {} + gtable.crush(ret, inputtextbox) + gtable.crush(ret, args) + + return ret +end + +function inputtextbox.mt.__call(...) + return new(...) +end + +return setmetatable(inputtextbox, inputtextbox.mt) + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80