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