Merge pull request #350 from Cleboost/feat/hotspot-control-center-shortcut

feat(hotspot): add Control Center shortcut to toggle hotspot
This commit is contained in:
Spyridon Siarapis
2026-08-13 20:58:10 +02:00
committed by GitHub
4 changed files with 50 additions and 7 deletions
+4 -4
View File
@@ -8,7 +8,7 @@ devices in a panel, and control the service over IPC.
| Field | Value |
| --- | --- |
| ID | `cleboost/hotspot` |
| Entries | Bar widget: `toggle`; panel: `panel`; service: `hotspot` |
| Entries | Bar widget: `toggle`; shortcut: `cc-toggle`; panel: `panel`; service: `hotspot` |
## Requirements
@@ -19,9 +19,9 @@ Install `nmcli` from NetworkManager, plus `iw` and `ip` from iproute2, on
## Usage
1. Open the plugin settings and set the hotspot name and password.
2. Add the `toggle` widget to a bar.
3. Left-click the widget to open the panel with the connected device list.
4. Right-click the widget to start or stop the hotspot.
2. Add the `toggle` widget to a bar and/or the `cc-toggle` shortcut in Settings → Control Center.
3. Left-click the bar widget to open the panel with the connected device list.
4. Right-click the bar widget, or click the Control Center shortcut, to start or stop the hotspot.
```sh
noctalia msg panel-toggle cleboost/hotspot:panel
+7 -3
View File
@@ -1,12 +1,12 @@
id = "cleboost/hotspot"
name = "Wi-Fi Hotspot"
version = "1.0.0"
version = "1.1.0"
plugin_api = 9
author = "Cleboost"
license = "MIT"
icon = "router"
description = "Start and stop a Wi-Fi hotspot from the bar, with connected device list and IPC control."
tags = ["network", "bar", "panel", "service", "utility", "system", "indicator"]
description = "Start and stop a Wi-Fi hotspot from the bar or Control Center, with connected device list and IPC control."
tags = ["network", "bar", "panel", "service", "shortcut", "utility", "system", "indicator"]
dependencies = ["nmcli", "iw", "ip"]
[[setting]]
@@ -53,6 +53,10 @@ entry = "widget.luau"
label_key = "settings.glyph.label"
default = "router"
[[shortcut]]
id = "cc-toggle"
entry = "shortcut.luau"
[[panel]]
id = "panel"
entry = "panel.luau"
+35
View File
@@ -0,0 +1,35 @@
--!nonstrict
local COMMAND_KEY = "hotspot_command"
local status = noctalia.state.get("hotspot_status") or {
active = false,
busy = false,
available = true,
}
local function sendCommand(action)
noctalia.state.set(COMMAND_KEY, { action = action })
end
local function render()
local active = status.active == true
shortcut.setLabel(if active then noctalia.tr("shortcut.active") else noctalia.tr("shortcut.inactive"))
shortcut.setIcon("router", "wifi-off")
shortcut.setActive(active)
shortcut.setEnabled(status.available ~= false and status.busy ~= true)
end
noctalia.state.watch("hotspot_status", function(value)
if type(value) == "table" then
status = value
render()
end
end)
render()
function onClick()
if status.available == false or status.busy == true then return end
sendCommand("toggle")
end
+4
View File
@@ -44,6 +44,10 @@
"stopping_title": "Stopping"
}
},
"shortcut": {
"active": "Hotspot on",
"inactive": "Hotspot off"
},
"settings": {
"glyph": {
"label": "Bar glyph"