hoverpanel: fix pin icons, hide pin during osd, convert network to hover panel

This commit is contained in:
Damocles 2026-04-15 23:09:30 +02:00
parent dca6a8ac5c
commit 54f80f0da8
4 changed files with 16 additions and 41 deletions

View file

@ -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

View file

@ -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

View file

@ -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
id: networkMenu
showPanel: root._anyHover
screen: root.bar.screen
anchorX: root.mapToGlobal(root.width / 2, 0).x - (QsWindow.window?.screen?.x ?? 0)
onDismissed: menuLoader.active = false
}
anchorItem: root
accentColor: root.accentColor
}
}

View file

@ -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();
}
}
}