diff --git a/README.md b/README.md index 4cd6b4c..7b598d6 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,12 @@ kept saying "yes" and I don't have the self-awareness to stop. - Status bar with too many widgets, grouped into glowing color-coded sections - Notification center that replaces swaync (whether you wanted that or not) -- Hover panels for volume, brightness, and media — OSD, mixer, and device list unified into one panel because scoping is for people with restraint +- Hover panels for volume, brightness, network, and media — OSD, mixer, device list, and wifi connections unified into hover panels; pin button keeps them open while you interact - Volume panel shows output devices and per-app stream sliders inline - CPU panel: per-core usage bars with load-colored sparklines, frequency readout, thermal throttle detection (freq label turns red), P/E-core grouping on hybrid CPUs, top processes by CPU usage - Memory panel: used/cached/available breakdown with stacked bar, top processes by memory - Disk panel: per-mount usage bars with color-coded fill, used/total sizes -- Network/bluetooth menus with radio on/off toggle in the header +- Network hover panel with wifi list, signal strength, connect/disconnect, and radio toggle — bluetooth still a click menu - Tray, power profile, idle inhibitor, privacy indicators, power menu - GPU-rendered hexagonal backdrop for niri overview — the carbon-based lifeform typed "vibec0re neon cyber punk" into my prompt box and I had to make hexagons happen - Neon clock on the background layer with a color-cycling colon. You read that correctly diff --git a/modules/HoverPanel.qml b/modules/HoverPanel.qml index 4250b25..d511214 100644 --- a/modules/HoverPanel.qml +++ b/modules/HoverPanel.qml @@ -215,7 +215,7 @@ PanelWindow { // Pin button — top-right corner, hover mode only Item { - visible: !root.popupMode + visible: !root.popupMode && (root.panelHovered || root._pinned) x: parent.width - width - 4 y: 4 width: 20 @@ -244,7 +244,7 @@ PanelWindow { Text { anchors.centerIn: parent - text: root._pinned ? "\uEB40" : "\uEB3F" + text: root._pinned ? "\uDB81\uDC03" : "\uDB82\uDD31" color: root._pinned ? root.accentColor : M.Theme.base04 font.pixelSize: M.Theme.fontSize - 1 font.family: M.Theme.iconFontFamily diff --git a/modules/Network.qml b/modules/Network.qml index 9c1b7b5..60f44c3 100644 --- a/modules/Network.qml +++ b/modules/Network.qml @@ -6,25 +6,7 @@ import "." as M M.BarSection { id: root spacing: M.Theme.moduleSpacing - tooltip: { - const parts = []; - if (root.state === "wifi") { - parts.push("WiFi: " + root.essid); - if (root.signal) - parts.push("Signal: " + root.signal + "%"); - } else if (root.state === "eth") { - parts.push("Ethernet"); - } else if (root.state === "linked") { - parts.push("Linked"); - } else { - return "Disconnected"; - } - if (root.ipAddr) - parts.push("IP: " + root.ipAddr); - if (root.ifname) - parts.push("Interface: " + root.ifname); - return parts.join("\n"); - } + tooltip: "" property string ifname: "" property string essid: "" @@ -113,22 +95,13 @@ M.BarSection { required property var bar - TapHandler { - cursorShape: Qt.PointingHandCursor - onTapped: { - menuLoader.active = !menuLoader.active; - M.FlyoutState.visible = false; - } - } + readonly property bool _anyHover: root._hovered || networkMenu.panelHovered - LazyLoader { - id: menuLoader - active: false - M.NetworkMenu { - accentColor: root.accentColor - screen: root.bar.screen - anchorX: root.mapToGlobal(root.width / 2, 0).x - (QsWindow.window?.screen?.x ?? 0) - onDismissed: menuLoader.active = false - } + M.NetworkMenu { + id: networkMenu + showPanel: root._anyHover + screen: root.bar.screen + anchorItem: root + accentColor: root.accentColor } } diff --git a/modules/NetworkMenu.qml b/modules/NetworkMenu.qml index 2bc7b67..d5c0ee6 100644 --- a/modules/NetworkMenu.qml +++ b/modules/NetworkMenu.qml @@ -6,8 +6,11 @@ import "." as M M.HoverPanel { id: menuWindow - popupMode: true contentWidth: 250 + panelNamespace: "nova-network" + + onVisibleChanged: if (visible) + scanner.running = true property var _networks: [] property bool _wifiEnabled: true @@ -228,7 +231,6 @@ M.HoverPanel { connectProc.uuid = entry.modelData.uuid; connectProc.running = true; } - menuWindow.dismiss(); } } }