fix: having no wifi crashes network module

This commit is contained in:
2025-07-23 12:10:53 -07:00
parent 0e36703330
commit 4cfc6ac389
3 changed files with 99 additions and 51 deletions

View File

@@ -1,25 +1,27 @@
import { App, Astal, Gtk, Gdk } from "astal/gtk3" import { App, Astal, Gtk, Gdk } from "astal/gtk3";
import Workspaces from "./workspaces" import Workspaces from "./workspaces";
import Audio from "./audio" import Audio from "./audio";
import NetworkModule from "./network" import NetworkModule from "./network";
import Cpu from "./cpu-widget" import Cpu from "./cpu-widget";
import Ram from "./ram" import Ram from "./ram";
import Disk from "./disk" import Disk from "./disk";
import Battery from "./battery" import Battery from "./battery";
import Time from "./time" import Time from "./time";
export default function Bar(gdkmonitor: Gdk.Monitor) { export default function Bar(gdkmonitor: Gdk.Monitor) {
const { BOTTOM, LEFT, RIGHT } = Astal.WindowAnchor const { BOTTOM, LEFT, RIGHT } = Astal.WindowAnchor;
//@ts-ignore //@ts-ignore
return <window return (
<window
className="Bar" className="Bar"
gdkmonitor={gdkmonitor} gdkmonitor={gdkmonitor}
exclusivity={Astal.Exclusivity.EXCLUSIVE} exclusivity={Astal.Exclusivity.EXCLUSIVE}
anchor={BOTTOM | LEFT | RIGHT} anchor={BOTTOM | LEFT | RIGHT}
application={App}> application={App}
>
<centerbox> <centerbox>
<box hexpand halign={Gtk.Align.START} > <box hexpand halign={Gtk.Align.START}>
<box className="nix-icon"> <box className="nix-icon">
<icon icon="nixos-3" /> <icon icon="nixos-3" />
</box> </box>
@@ -37,4 +39,5 @@ export default function Bar(gdkmonitor: Gdk.Monitor) {
</box> </box>
</centerbox> </centerbox>
</window> </window>
);
} }

View File

@@ -1,26 +1,47 @@
import { bind, Variable } from "astal"; import { bind, Variable } from "astal";
import AstalNetwork from "gi://AstalNetwork?version=0.1"; import AstalNetwork from "gi://AstalNetwork?version=0.1";
export default function NetworkModule() { const disconnected_label = { label: `Disconnected ⚠` };
const network = AstalNetwork.get_default()
const wifi = network.wifi;
const wired = network.wired
const derived = Variable.derive([bind(network, "primary"), bind(wifi, "ssid"), bind(wifi, "strength")], (primary, ssid, strength) => { function create_label(
primary: AstalNetwork.Primary,
wired: AstalNetwork.Wired,
wifi?: AstalNetwork.Wifi,
) {
if (primary === AstalNetwork.Primary.WIRED) { if (primary === AstalNetwork.Primary.WIRED) {
return { label: `🖧 Wired ${wired.device.interface}` } return { label: `🖧 Wired ${wired.device.interface}` };
}
if (!wifi) {
return disconnected_label;
} }
if (wifi.active_access_point !== null) { if (wifi.active_access_point !== null) {
return { label: `${ssid} (${strength}%) ` } return { label: `${wifi.ssid} (${wifi.strength}%) ` };
}
return disconnected_label;
}
export default function NetworkModule() {
const network = AstalNetwork.get_default();
const wifi = network.wifi;
const wired = network.wired;
let derived;
if (!wifi) {
derived = Variable.derive([bind(network, "primary")], (primary) => {
return create_label(primary, wired);
});
} else {
derived = Variable.derive(
[bind(network, "primary"), bind(wifi, "ssid"), bind(wifi, "strength")],
(primary) => {
return create_label(primary, wired, wifi);
},
);
} }
return { label: `Disconnected ⚠` }
})
return ( return (
<box className="status-box"> <box className="status-box">
<label <label label={derived((v) => v.label)} />
label={derived((v) => v.label)} />
</box> </box>
) );
} }

24
nix/flake.lock generated
View File

@@ -83,11 +83,19 @@
] ]
}, },
"locked": { "locked": {
<<<<<<< Updated upstream
"lastModified": 1752780124, "lastModified": 1752780124,
"narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=", "narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "c718918222bdb104397762dea67e6b397a7927fe", "rev": "c718918222bdb104397762dea67e6b397a7927fe",
=======
"lastModified": 1751990210,
"narHash": "sha256-krWErNDl9ggMLSfK00Q2BcoSk3+IRTSON/DiDgUzzMw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "218da00bfa73f2a61682417efe74549416c16ba6",
>>>>>>> Stashed changes
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -155,11 +163,19 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
<<<<<<< Updated upstream
"lastModified": 1752620740, "lastModified": 1752620740,
"narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=", "narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e", "rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e",
=======
"lastModified": 1751792365,
"narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb",
>>>>>>> Stashed changes
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -229,11 +245,19 @@
] ]
}, },
"locked": { "locked": {
<<<<<<< Updated upstream
"lastModified": 1752544651, "lastModified": 1752544651,
"narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=", "narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "2c8def626f54708a9c38a5861866660395bb3461", "rev": "2c8def626f54708a9c38a5861866660395bb3461",
=======
"lastModified": 1751606940,
"narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d",
>>>>>>> Stashed changes
"type": "github" "type": "github"
}, },
"original": { "original": {