From 47b3f1c74e79566a5cb823cbb709c936f2a905b2 Mon Sep 17 00:00:00 2001 From: Jas Singh Date: Sat, 29 Jun 2024 18:43:59 -0700 Subject: [PATCH] Fix network list flickering on refresh --- .../{Ethernet.js => ethernet/index.js} | 2 +- modules/menus/network/index.bkup.js | 483 ------------------ modules/menus/network/index.js | 4 +- .../menus/network/{Wifi => wifi}/APStaging.js | 3 +- .../network/{Wifi => wifi}/WirelessAPs.js | 4 +- modules/menus/network/{Wifi => wifi}/index.js | 0 scss/menus/network.scss | 14 +- style.css | 12 +- style.css.map | 2 +- 9 files changed, 29 insertions(+), 495 deletions(-) rename modules/menus/network/{Ethernet.js => ethernet/index.js} (94%) delete mode 100644 modules/menus/network/index.bkup.js rename modules/menus/network/{Wifi => wifi}/APStaging.js (96%) rename modules/menus/network/{Wifi => wifi}/WirelessAPs.js (97%) rename modules/menus/network/{Wifi => wifi}/index.js (100%) diff --git a/modules/menus/network/Ethernet.js b/modules/menus/network/ethernet/index.js similarity index 94% rename from modules/menus/network/Ethernet.js rename to modules/menus/network/ethernet/index.js index a7fe47f..49ac325 100644 --- a/modules/menus/network/Ethernet.js +++ b/modules/menus/network/ethernet/index.js @@ -29,7 +29,7 @@ const Ethernet = () => { hpack: "start", children: [ Widget.Icon({ - class_name: "network-ethernet-icon", + class_name: `network-icon ethernet ${network.wired.state === "activated" ? "active" : ""}`, tooltip_text: wired.internet, icon: `${wired["icon_name"]}`, }), diff --git a/modules/menus/network/index.bkup.js b/modules/menus/network/index.bkup.js deleted file mode 100644 index c8ba1e9..0000000 --- a/modules/menus/network/index.bkup.js +++ /dev/null @@ -1,483 +0,0 @@ -const network = await Service.import("network"); -import DropdownMenu from "../DropdownMenu.js"; - -export default () => { - const pendingAuth = Variable(""); - - return DropdownMenu({ - name: "networkmenu", - transition: "crossfade", - child: Widget.Box({ - class_name: "menu-items", - child: Widget.Box({ - vertical: true, - hexpand: true, - class_name: "menu-items-container network", - children: [ - Widget.Box({ - class_name: "menu-label-container network", - child: Widget.Label({ - class_name: "menu-label network", - hpack: "start", - label: "Connected Network", - }), - }), - Widget.Box({ - class_name: "menu-item-box network", - vertical: true, - children: Utils.merge( - [ - network.bind("wired"), - network.bind("wifi"), - network.bind("primary"), - pendingAuth.bind("value"), - ], - (wired, wifi, primary) => { - let sortedNetworks = []; - - if (wifi.access_points.length > 0) { - sortedNetworks = wifi.access_points - .filter((ap) => ap.ssid !== "Unknown") - .sort((a, b) => { - return b.strength - a.strength; - }); - } - - const localIfConnected = () => { - if (primary === "wired") { - return [ - Widget.Box({ - class_name: `network-element-item-ethernet ${sortedNetworks.length > 0 ? "multi" : ""}`, - child: Widget.Box({ - hpack: "start", - vertical: true, - children: [ - Widget.Box({ - children: [ - Widget.Box({ - class_name: "network-element-items-container", - children: [ - Widget.Button({ - class_name: "menu-button-icon network", - child: Widget.Icon({ - tooltip_text: wired.internet, - icon: `${wired["icon_name"]}`, - }), - }), - Widget.Label({ - class_name: "menu-button-name network", - truncate: "end", - wrap: true, - label: `Ethernet (${wired.speed / 1000} Gbps)`, - }), - ], - }), - ], - }), - Widget.Box({ - class_name: - "menu-button-name-container status dim", - children: [ - Widget.Label({ - class_name: - "menu-button-name status network dim", - label: - wired.internet.charAt(0).toUpperCase() + - wired.internet.slice(1), - }), - ], - }), - ], - }), - }), - ]; - } - return []; - }; - - const wifiIfConnected = () => { - const getIdBySsid = (ssid, nmcliOutput) => { - const lines = nmcliOutput.trim().split("\n"); - for (const line of lines) { - const columns = line.trim().split(/\s{2,}/); - if (columns[0].includes(ssid)) { - return columns[1]; - } - } - return null; - }; - - if (wifi.ssid !== "") { - return [ - Widget.Box({ - class_name: `network-element-item-ethernet`, - children: [ - Widget.Box({ - hpack: "start", - vertical: true, - children: [ - Widget.Box({ - children: [ - Widget.Box({ - class_name: - "network-element-items-container", - children: [ - Widget.Button({ - class_name: "menu-button-icon network", - child: Widget.Icon({ - tooltip_text: wifi.state, - icon: `${wifi["icon_name"]}`, - }), - }), - Widget.Label({ - class_name: "menu-button-name network", - truncate: "end", - wrap: true, - label: wifi.ssid, - }), - ], - }), - ], - }), - Widget.Box({ - class_name: - "menu-button-name-container status dim", - children: [ - Widget.Label({ - class_name: - "menu-button-name status network dim", - label: - wifi.internet.charAt(0).toUpperCase() + - wifi.internet.slice(1), - }), - ], - }), - ], - }), - Widget.Box({ - hexpand: true, - hpack: "end", - children: [ - Widget.Button({ - class_name: - "menu-icon-button network disconnect", - on_primary_click: () => { - Utils.execAsync( - "nmcli connection show --active", - ).then((res) => { - const connectionId = getIdBySsid( - wifi.ssid, - res, - ); - - Utils.execAsync( - `nmcli connection down ${connectionId} "${wifi.ssid}"`, - ).catch((err) => - console.error( - `Error while disconnecting from wifi "${wifi.ssid}": ${err}`, - ), - ); - }); - }, - child: Widget.Label(""), - }), - Widget.Box({ - hexpand: true, - child: Widget.Button({ - class_name: "menu-icon-button network forget", - on_primary_click: () => { - Utils.execAsync( - "nmcli connection show --active", - ).then((res) => { - const connectionId = getIdBySsid( - wifi.ssid, - res, - ); - - Utils.execAsync( - `nmcli connection delete ${connectionId} "${wifi.ssid}"`, - ).catch((err) => - console.error( - `Error while forgetting "${wifi.ssid}": ${err}`, - ), - ); - }); - }, - child: Widget.Label("󰆴"), - }), - }), - ], - }), - ], - }), - ]; - } - return []; - }; - - return [...localIfConnected(), ...wifiIfConnected()]; - }, - ), - }), - Widget.Box({ - children: [ - Widget.Box({ - hpack: "start", - class_name: "menu-label-container network", - child: Widget.Label({ - class_name: "menu-label network", - hpack: "start", - label: "Available Networks", - }), - }), - Widget.Box({ - hexpand: true, - hpack: "end", - child: Widget.Button({ - class_name: "menu-icon-button refresh network", - on_primary_click: () => { - network.wifi.scan(); - }, - child: Widget.Icon("view-refresh-symbolic"), - }), - }), - ], - }), - Widget.Box({ - class_name: "menu-item-box network", - vertical: true, - children: [ - Widget.Box({ - vertical: true, - setup: (self) => { - self.hook(pendingAuth, () => { - const accPoint = network.wifi.access_points.find( - (ap) => ap.bssid === pendingAuth.value, - ); - if ( - pendingAuth.value !== "" && - accPoint !== undefined && - network.wifi.ssid !== pendingAuth.value - ) { - return (self.child = Widget.Box({ - vertical: true, - children: [ - Widget.Button({ - class_name: "network-element-item", - child: Widget.Box({ - children: [ - Widget.Box({ - hpack: "start", - vertical: true, - children: [ - Widget.Box({ - class_name: - "network-element-items-container", - children: [ - Widget.Button({ - class_name: - "menu-button-icon network", - child: Widget.Icon({ - tooltip_text: - accPoint.ssid === - network.wifi.ssid - ? network.wifi.state - : null, - icon: `${accPoint["iconName"]}`, - }), - }), - Widget.Label({ - class_name: - "menu-button-name network", - truncate: "end", - wrap: true, - label: accPoint.ssid, - }), - ], - }), - ], - }), - ], - }), - }), - - Widget.Revealer({ - transition: "slide_down", - reveal_child: pendingAuth - .bind("value") - .as((v) => (v === accPoint.bssid ? true : false)), - class_name: "network-password-input-container", - child: Widget.Box({ - hexpand: true, - children: [ - Widget.Box({ - child: Widget.Entry({ - hpack: "start", - class_name: "network-password-input", - placeholder_text: "enter password", - visibility: false, - onAccept: (selfInp) => { - Utils.execAsync( - `nmcli dev wifi connect ${accPoint.bssid} password ${selfInp.text}`, - ) - .catch((err) => { - pendingAuth.value = ""; - console.error( - `Failed to connect to wifi: ${accPoint.ssid}... ${err}`, - ); - }) - .then(() => (pendingAuth.value = "")); - selfInp.text = ""; - }, - }), - }), - Widget.Box({ - class_name: - "network-password-input-close-container", - hexpand: true, - child: Widget.Button({ - class_name: "network-password-input-close", - on_primary_click: () => - (pendingAuth.value = ""), - child: Widget.Label("󰅜 "), - }), - }), - ], - }), - }), - ], - })); - } else { - self.children = []; - } - }); - }, - }), - Widget.Box({ - vertical: true, - setup: (self) => { - self.hook(network, () => { - let sortedNetworks = []; - - self.hook(pendingAuth, () => { - if (network.wifi.access_points.length > 0) { - sortedNetworks = network.wifi.access_points - .filter((ap) => { - return ( - ap.ssid !== "Unknown" && - ap.bssid !== pendingAuth.value && - !ap.active && - network.wifi.ssid !== ap.ssid - ); - }) - .sort((a, b) => { - return b.strength - a.strength; - }); - } - - if (sortedNetworks.length <= 0) { - return (self.children = [ - Widget.Label({ - class_name: "not-found-label dim", - expand: true, - hpack: "center", - vpack: "center", - label: "No Wifi Networks Found", - }), - ]); - } - - return (self.children = sortedNetworks.map((accPoint) => { - return Widget.Box({ - vertical: true, - children: [ - Widget.Button({ - on_primary_click: () => { - Utils.execAsync( - `nmcli device wifi connect ${accPoint.bssid}`, - ).catch((err) => { - if ( - err - .toLowerCase() - .includes( - "secrets were required, but not provided", - ) - ) { - pendingAuth.value = accPoint.bssid; - } - }); - }, - class_name: "network-element-item", - child: Widget.Box({ - children: [ - Widget.Box({ - hpack: "start", - vertical: true, - children: [ - Widget.Box({ - class_name: - "network-element-items-container", - children: [ - Widget.Button({ - class_name: - "menu-button-icon network", - child: Widget.Icon({ - tooltip_text: - accPoint.ssid === - network.wifi.ssid - ? network.wifi.state - : null, - icon: `${accPoint["iconName"]}`, - }), - }), - Widget.Label({ - class_name: - "menu-button-name network", - truncate: "end", - wrap: true, - label: accPoint.ssid, - }), - ], - }), - ], - }), - ], - }), - }), - Widget.Revealer({ - transition: "slide_down", - reveal_child: pendingAuth - .bind("value") - .as((v) => - v === accPoint.bssid ? true : false, - ), - class_name: "network-password-input-container", - child: Widget.Box({ - hexpand: true, - children: [ - Widget.Entry({ - hexpand: true, - class_name: "network-password-input", - placeholder_text: "enter password", - visibility: false, - onAccept: (selfInp) => { - selfInp.text = ""; - }, - }), - ], - }), - }), - ], - }); - })); - }); - }); - }, - }), - ], - }), - ], - }), - }), - }); -}; diff --git a/modules/menus/network/index.js b/modules/menus/network/index.js index 0f16b0a..28d76f6 100644 --- a/modules/menus/network/index.js +++ b/modules/menus/network/index.js @@ -1,7 +1,7 @@ const network = await Service.import("network"); import DropdownMenu from "../DropdownMenu.js"; -import { Ethernet } from "./Ethernet.js"; -import { Wifi } from "./Wifi/index.js"; +import { Ethernet } from "./ethernet/index.js"; +import { Wifi } from "./wifi/index.js"; export default () => { return DropdownMenu({ diff --git a/modules/menus/network/Wifi/APStaging.js b/modules/menus/network/wifi/APStaging.js similarity index 96% rename from modules/menus/network/Wifi/APStaging.js rename to modules/menus/network/wifi/APStaging.js index b91249d..2959ca7 100644 --- a/modules/menus/network/Wifi/APStaging.js +++ b/modules/menus/network/wifi/APStaging.js @@ -1,5 +1,6 @@ const renderWapStaging = (self, network, staging, connecting) => { Utils.merge([network.bind("wifi"), staging.bind("value")], () => { + console.log(JSON.stringify(network, null, 2)); if (!Object.keys(staging.value).length) { return (self.child = Widget.Box()); } @@ -13,7 +14,7 @@ const renderWapStaging = (self, network, staging, connecting) => { hexpand: true, children: [ Widget.Icon({ - class_name: "network-ethernet-icon", + class_name: `network-icon wifi `, icon: `${staging.value.iconName}`, }), Widget.Box({ diff --git a/modules/menus/network/Wifi/WirelessAPs.js b/modules/menus/network/wifi/WirelessAPs.js similarity index 97% rename from modules/menus/network/Wifi/WirelessAPs.js rename to modules/menus/network/wifi/WirelessAPs.js index 02d2b30..2afed43 100644 --- a/modules/menus/network/Wifi/WirelessAPs.js +++ b/modules/menus/network/wifi/WirelessAPs.js @@ -72,7 +72,7 @@ const renderWAPs = (self, network, staging, connecting) => { on_primary_click: () => { connecting.value = ap.bssid; Utils.execAsync(`nmcli device wifi connect ${ap.bssid}`) - .then((res) => { + .then(() => { connecting.value = ""; staging.value = {}; }) @@ -96,7 +96,7 @@ const renderWAPs = (self, network, staging, connecting) => { hexpand: true, children: [ Widget.Icon({ - class_name: "network-ethernet-icon", + class_name: `network-icon wifi ${ap.ssid === network.wifi.ssid ? "active" : ""}`, icon: `${ap["iconName"]}`, }), Widget.Box({ diff --git a/modules/menus/network/Wifi/index.js b/modules/menus/network/wifi/index.js similarity index 100% rename from modules/menus/network/Wifi/index.js rename to modules/menus/network/wifi/index.js diff --git a/scss/menus/network.scss b/scss/menus/network.scss index b4a0aa5..c3441ba 100644 --- a/scss/menus/network.scss +++ b/scss/menus/network.scss @@ -1,6 +1,7 @@ @import "../colors"; .menu-items-container.network { + font-size: 1.3em; .menu-items-section { padding-bottom: 1.5em; } @@ -8,9 +9,16 @@ color: $mauve; } - .network-ethernet-icon { + .network-icon { font-size: 1.3em; - color: $mauve; + min-width: 1em; + min-height: 1em; + + color: $overlay1; + + &.active { + color: $mauve; + } } .connection-container { @@ -21,7 +29,7 @@ } .menu-section-container.wifi { .menu-items-section { - min-height: 5em; + min-height: 3em; } } diff --git a/style.css b/style.css index 67e9e07..0330fb9 100644 --- a/style.css +++ b/style.css @@ -826,14 +826,22 @@ window#powermenu .powermenu.box { color: #eba0ac; } +.menu-items-container.network { + font-size: 1.3em; +} .menu-items-container.network .menu-items-section { padding-bottom: 1.5em; } .menu-items-container.network .menu-label { color: #cba6f7; } -.menu-items-container.network .network-ethernet-icon { +.menu-items-container.network .network-icon { font-size: 1.3em; + min-width: 1em; + min-height: 1em; + color: #7f849c; +} +.menu-items-container.network .network-icon.active { color: #cba6f7; } .menu-items-container.network .connection-container { @@ -843,7 +851,7 @@ window#powermenu .powermenu.box { font-size: 0.9em; } .menu-items-container.network .menu-section-container.wifi .menu-items-section { - min-height: 5em; + min-height: 3em; } .menu-items-container.network .network-element-item:not(:last-child) { margin-bottom: 0.5em; diff --git a/style.css.map b/style.css.map index 2cc1286..b8133bf 100644 --- a/style.css.map +++ b/style.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["scss/main.scss","scss/common/common.scss","scss/colors.scss","scss/common/widget-button.scss","scss/bar/menu.scss","scss/bar/audio.scss","scss/bar/media.scss","scss/bar/network.scss","scss/bar/bluetooth.scss","scss/bar/clock.scss","scss/bar/workspace.scss","scss/bar/window_title.scss","scss/bar/systray.scss","scss/bar/notifications.scss","scss/bar/power.scss","scss/bar/bar.scss","scss/menus/menu.scss","scss/menus/power.scss","scss/common/floating-widget.scss","scss/menus/audiomenu.scss","scss/menus/network.scss","scss/menus/bluetooth.scss","scss/menus/media.scss","scss/menus/notifications.scss","scss/menus/calendar.scss","scss/notifications/popups.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["scss/main.scss","scss/common/common.scss","scss/colors.scss","scss/common/widget-button.scss","scss/bar/menu.scss","scss/bar/audio.scss","scss/bar/media.scss","scss/bar/network.scss","scss/bar/bluetooth.scss","scss/bar/clock.scss","scss/bar/workspace.scss","scss/bar/window_title.scss","scss/bar/systray.scss","scss/bar/notifications.scss","scss/bar/power.scss","scss/bar/bar.scss","scss/menus/menu.scss","scss/menus/power.scss","scss/common/floating-widget.scss","scss/menus/audiomenu.scss","scss/menus/network.scss","scss/menus/bluetooth.scss","scss/menus/media.scss","scss/menus/notifications.scss","scss/menus/calendar.scss","scss/notifications/popups.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file