summaryrefslogtreecommitdiff
path: root/src/modules/popdowns/networks.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/popdowns/networks.tsx')
-rw-r--r--src/modules/popdowns/networks.tsx101
1 files changed, 0 insertions, 101 deletions
diff --git a/src/modules/popdowns/networks.tsx b/src/modules/popdowns/networks.tsx
deleted file mode 100644
index 726f1c9..0000000
--- a/src/modules/popdowns/networks.tsx
+++ /dev/null
@@ -1,101 +0,0 @@
-import { bind, execAsync, Variable } from "astal";
-import { Gtk } from "astal/gtk3";
-import AstalNetwork from "gi://AstalNetwork";
-import PopdownWindow from "../../widgets/popdownwindow";
-
-const Network = (accessPoint: AstalNetwork.AccessPoint) => (
- <box
- className={bind(AstalNetwork.get_default().wifi, "activeAccessPoint").as(
- a => `network ${a === accessPoint ? "active" : ""}`
- )}
- >
- <icon className="icon" icon={bind(accessPoint, "iconName")} />
- <label
- truncate
- xalign={0}
- setup={self => {
- const update = () =>
- (self.label = `${accessPoint.ssid}${` (${accessPoint.frequency > 5000 ? 5 : 2.4}GHz | ${
- accessPoint.strength
- }/100)`}`);
- self.hook(accessPoint, "notify::ssid", update);
- self.hook(accessPoint, "notify::frequency", update);
- self.hook(accessPoint, "notify::strength", update);
- update();
- }}
- />
- <box hexpand />
- <button
- cursor="pointer"
- onClicked={self => {
- const cmd =
- AstalNetwork.get_default().wifi.activeAccessPoint === accessPoint ? "c down id" : "d wifi connect";
- execAsync(`nmcli ${cmd} '${accessPoint.ssid}'`)
- .then(() => (self.sensitive = true))
- .catch(console.error);
- self.sensitive = false;
- }}
- label={bind(AstalNetwork.get_default().wifi, "activeAccessPoint").as(a =>
- a === accessPoint ? "Disconnect" : "Connect"
- )}
- />
- <button
- cursor="pointer"
- onClicked={() => execAsync(`nmcli c delete id '${accessPoint.ssid}'`).catch(() => {})}
- label="Forget"
- />
- </box>
-);
-
-const List = () => {
- const { wifi } = AstalNetwork.get_default();
- const children = Variable.derive([bind(wifi, "accessPoints"), bind(wifi, "activeAccessPoint")], (aps, ac) =>
- aps
- .filter(a => a.ssid)
- .sort((a, b) => (a === ac ? -1 : b.strength - a.strength))
- .map(Network)
- );
-
- return (
- <box vertical valign={Gtk.Align.START} className="list" onDestroy={() => children.drop()}>
- {bind(children)}
- </box>
- );
-};
-
-export default () => {
- const network = AstalNetwork.get_default();
- const label = Variable("");
-
- const update = () => {
- if (network.primary === AstalNetwork.Primary.WIFI) label.set(network.wifi.ssid ?? "Disconnected");
- else if (network.primary === AstalNetwork.Primary.WIRED) label.set(`Ethernet (${network.wired.speed})`);
- else label.set("No Wifi");
- };
- network.connect("notify::primary", update);
- network.get_wifi()?.connect("notify::ssid", update);
- network.get_wired()?.connect("notify::speed", update);
- update();
-
- return (
- <PopdownWindow
- name="networks"
- count={bind(network.wifi, "accessPoints").as(a => a.length)}
- countLabel={bind(label)}
- headerButtons={[
- {
- label: bind(network.wifi, "enabled").as(e => (e ? "Disable" : "Enable")),
- onClicked: () => (network.wifi.enabled = !network.wifi.enabled),
- },
- {
- label: bind(network.wifi, "scanning").as(s => (s ? "Scanning" : "Scan")),
- onClicked: () => network.wifi.scan(),
- enabled: bind(network.wifi, "scanning"),
- },
- ]}
- emptyIcon="wifi_off"
- emptyLabel={bind(network.wifi, "enabled").as(p => (p ? "No available networks" : "Wifi is off"))}
- list={<List />}
- />
- );
-};