some work on the network manager

This commit is contained in:
Rene Kievits
2022-12-14 00:04:45 +01:00
parent 44836685ec
commit 4f3fb75687
10 changed files with 258 additions and 451 deletions

View File

@@ -102,7 +102,7 @@ function access_point:create_profile(ap, password, auto_connect)
}
end
function access_point:disconnect_ap()
function access_point:disconnect()
self.NetworkManager:DeactivateConnection(self.NetworkManagerDevice.ActiveConnection)
end
@@ -137,16 +137,16 @@ function access_point:connect(ap, password, auto_connect)
end
end
function access_point:toggle_access_point(ap, password, auto_connect)
function access_point:toggle_connection(ap, password, auto_connect)
if self:is_ap_active(ap) then
self:disconnect_ap()
self:disconnect()
else
self:connect_ap(ap, password, auto_connect)
self:connect(ap, password, auto_connect)
end
end
function access_point:is_ap_active(ap)
return ap.path == self.NetworkManagerDeviceWireless.ActiveAccessPoint
return ap.object_path == self.NetworkManagerDeviceWireless.ActiveAccessPoint
end
function access_point.new(args)
@@ -154,14 +154,6 @@ function access_point.new(args)
if not args.NetworkManagerAccessPoint then return end
local bg, fg, icon_color = Theme_config.network_manager.access_point.bg, Theme_config.network_manager.access_point.fg,
Theme_config.network_manager.access_point.icon_color
--[[ if get_active_access_point() == args.NetworkManagerAccessPoint.access_point_path then
bg, fg, icon_color = Theme_config.network_manager.access_point.fg, Theme_config.network_manager.access_point.bg,
Theme_config.network_manager.access_point.icon_color2
end ]]
local ssid_text = awidget.inputbox {
text = NM.utils_ssid_to_utf8(args.NetworkManagerAccessPoint.Ssid) or
args.NetworkManagerAccessPoint.hw_address or "Unknown",
@@ -177,7 +169,7 @@ function access_point.new(args)
{
image = gcolor.recolor_image(
icondir .. "wifi-strength-" .. math.floor(args.NetworkManagerAccessPoint.Strength / 25) + 1 .. ".svg",
icon_color),
Theme_config.network_manager.access_point.icon_color),
id = "icon",
resize = true,
valign = "center",
@@ -245,8 +237,8 @@ function access_point.new(args)
margins = dpi(5),
widget = wibox.container.margin
},
bg = bg,
fg = fg,
bg = Theme_config.network_manager.access_point.bg,
fg = Theme_config.network_manager.access_point.fg,
border_color = Theme_config.network_manager.access_point.border_color,
border_width = Theme_config.network_manager.access_point.border_width,
id = "background",
@@ -262,6 +254,47 @@ function access_point.new(args)
ret.NetworkManagerDevice = args.NetworkManagerDevice
ret.NetworkManager = args.NetworkManager
ret.NetworkManagerAccessPointProperties = dbus_proxy.Proxy:new {
bus = dbus_proxy.Bus.SYSTEM,
name = "org.freedesktop.NetworkManager",
interface = "org.freedesktop.DBus.Properties",
path = ret.NetworkManagerAccessPoint.object_path,
}
-- Update the access point strength
ret.NetworkManagerAccessPointProperties:connect_signal(function(_, properties, data)
if data.Strength then
awesome.emit_signal("NM::AccessPointStrength", data.Strength)
if ret.is_ap_active(ret.NetworkManagerAccessPoint.object_path) then
ret:get_children_by_id("icon")[1].image = gcolor.recolor_image(
icondir .. "wifi-strength-" .. math.floor(data.Strength / 25) + 1 .. ".svg",
Theme_config.network_manager.access_point.icon_color2)
else
ret:get_children_by_id("icon")[1].image = gcolor.recolor_image(
icondir .. "wifi-strength-" .. math.floor(data.Strength / 25) + 1 .. ".svg",
Theme_config.network_manager.access_point.icon_color)
end
end
end, "PropertiesChanged")
if ret:is_ap_active(ret.NetworkManagerAccessPoint) then
ret.bg = Theme_config.network_manager.access_point.fg
ret.fg = Theme_config.network_manager.access_point.bg
ret:get_children_by_id("icon")[1].image = gcolor.recolor_image(
icondir .. "wifi-strength-" .. math.floor(ret.NetworkManagerAccessPoint.Strength / 25) + 1 .. ".svg",
Theme_config.network_manager.access_point.icon_color2)
ret:get_children_by_id("con")[1].image = gcolor.recolor_image(
icondir .. "link.svg", Theme_config.network_manager.access_point.icon_color2)
else
ret.bg = Theme_config.network_manager.access_point.bg
ret.fg = Theme_config.network_manager.access_point.fg
ret:get_children_by_id("icon")[1].image = gcolor.recolor_image(
icondir .. "wifi-strength-" .. math.floor(ret.NetworkManagerAccessPoint.Strength / 25) + 1 .. ".svg",
Theme_config.network_manager.access_point.icon_color)
ret:get_children_by_id("con")[1].image = gcolor.recolor_image(
icondir .. "link.svg", Theme_config.network_manager.access_point.icon_color)
end
ret.ap_form = ap_form {
screen = args.screen,
NetworkManagerAccessPoint = args.NetworkManagerAccessPoint,
@@ -305,27 +338,9 @@ function access_point.new(args)
icondir .. "link.svg",
Theme_config.network_manager.access_point.icon_color),
callback = function()
ret:toggle_access_point()
ret:toggle_connection(ret.NetworkManagerAccessPoint)
end,
id = "connected"
},
{ -- Rename a device
name = "Rename",
icon = gcolor.recolor_image(icondir .. "edit.svg", Theme_config.network_manager.icon_color),
callback = function()
ssid_text:focus()
ssid_text:connect_signal("submit", function(text)
text = text:get_text()
ssid_text.markup = ret:rename(text)
end)
end
},
{ -- Remove a device
name = "Remove",
icon = gcolor.recolor_image(icondir .. "delete.svg", Theme_config.network_manager.icon_color),
callback = function()
end
}
}
}
@@ -333,8 +348,11 @@ function access_point.new(args)
ret:buttons(gtable.join(
abutton({}, 1, nil,
function()
--TODO:Check if there are any connection details, else open the popup
ret.ap_form:popup_toggle()
if ret:is_ap_active(ret.NetworkManagerAccessPoint) then
ret:disconnect()
else
ret.ap_form:popup_toggle()
end
end
),
abutton({}, 3, nil,
@@ -344,9 +362,6 @@ function access_point.new(args)
)
))
ret:get_children_by_id("con")[1].image = gcolor.recolor_image(
icondir .. "link.svg", icon_color)
Hover_signal(ret)
return ret