Skip to content

Releases: networkmanager-rs/nmrs

nmrs 3.1.3

14 May 19:39

Choose a tag to compare

nmrs 3.1.3

Published to crates.io

See CHANGELOG.md for details.

What's Changed

  • fix: toggle kernel rfkill for bluetooth in set_bluetooth_radio_enabled by @cachebag in #418

Full Changelog: nmrs-v3.1.1...nmrs-v3.1.3

nmrs 3.1.1

14 May 19:16

Choose a tag to compare

nmrs 3.1.1

Published to crates.io

See CHANGELOG.md for details.

What's Changed

  • chore: scaffold mmrs crate by @cachebag in #413
  • feat(#401): add public model types for ModemManager domain by @cachebag in #416
  • fix: treat BluetoothToggleFailed as non-fatal in aggregate airplane mode toggle by @cachebag in #417

Full Changelog: nmrs-v3.1.0...nmrs-v3.1.1

nmrs 3.1.0

08 May 20:40

Choose a tag to compare

nmrs 3.1.0

Published to crates.io

See CHANGELOG.md for details.

3.1.0 introduces several networking and reliability improvements, including new support for loopback and VLAN (802.1Q) devices, better handling of activation failures and airplane mode behavior, and more stable certificate store testing. The release also continues internal cleanup work by decoupling nmrs-gui from the core nmrs crate.

What's Changed

  • fix(#270): resolve device state reason on activation failure by @cachebag in #384
  • chore: migrate nmrs-gui off of nmrs by @cachebag in #390
  • feat: implement loopback by @cachebag in #391
  • feat(#121): add VLAN (802.1Q) device support with VlanConfig model and connection builder by @cachebag in #392
  • fix(#354): consolidate env var mutex to fix flaky cert store tests by @cachebag in #393
  • fix(airplane): correct radio presence and Bluetooth settle behavior by @cachebag in #396

Full Changelog: nmrs-v3.0.1...nmrs-v3.1.0

nmrs 3.0.1

25 Apr 04:53

Choose a tag to compare

nmrs 3.0.1

Published to crates.io

See CHANGELOG.md for details.

nmrs 3.0.0

25 Apr 04:05
ee80a1b

Choose a tag to compare

nmrs 3.0.0

Published to crates.io.

nmrs 3.0 is a major expansion of the core library: OpenVPN support, broader VPN enumeration, per-interface Wi-Fi APIs, saved profile management, AP/BSSID detail, connectivity reporting, airplane mode, and a NetworkManager secret agent surface.

See CHANGELOG.md for the full technical changelog.

Highlights

  • Added NetworkManager secret agent support for credential prompts over D-Bus.
  • Added OpenVPN support, including builders, .ovpn import, inline certificate storage, auth handling, TLS hardening, compression, proxy, routing, and resilience options.
  • Added generic VPN enumeration for NetworkManager VPN plugins, including OpenVPN, OpenConnect, strongSwan, PPTP, L2TP, WireGuard, and a generic fallback.
  • Added UUID/name-based activation and UUID-based disconnect for saved VPN profiles.
  • Added per-interface Wi-Fi scoping for multi-radio systems via WifiScope, list_wifi_devices(), and interface-aware scan/connect/disconnect APIs.
  • Added per-BSSID access point enumeration, security flag decoding, and connect_to_bssid.
  • Added saved connection enumeration and management through NetworkManager Settings / Settings.Connection D-Bus APIs.
  • Added connectivity state reporting, check_connectivity(), connectivity_report(), and captive-portal URL detection.
  • Added airplane-mode helpers across Wi-Fi, WWAN, Bluetooth, and rfkill hardware state.
  • Improved builder ergonomics by returning Result instead of panicking on missing required fields.
  • Updated mdbook docs, README examples, and migration guidance for the 3.0 API.

Migration Notes

Most Wi-Fi methods now accept an optional interface argument. Pass None to preserve the old “any Wi-Fi device” behavior:

nm.list_networks(None).await?;
nm.scan_networks(None).await?;
nm.connect("MyNetwork", None, WifiSecurity::Open).await?;
nm.disconnect(None).await?;

Use WifiScope for per-device operations:

let wlan0 = nm.wifi("wlan0");
wlan0.scan().await?;
wlan0.connect("MyNetwork", WifiSecurity::Open).await?;

Other notable API changes:

  • set_wifi_enabled(bool) is now split into global set_wireless_enabled(bool) and per-interface set_wifi_enabled(interface, bool).
  • wifi_enabled() / wifi_hardware_enabled() are replaced by wifi_state().
  • list_saved_connections() now returns Vec<SavedConnection>; use list_saved_connection_ids() for the old name-list behavior.
  • VpnType is now a rich metadata enum; the old tag-style role is VpnKind.
  • VpnConfig::vpn_type() is now vpn_kind().
  • VpnConnectionInfo.vpn_type is now vpn_kind.
  • VpnCredentialsBuilder::build() and EapOptionsBuilder::build() now return Result.

What's Changed

Core 3.0 Features

  • NetworkManager secret agent API by @cachebag in #370
  • Airplane-mode surface and rfkill awareness by @cachebag in #372
  • Per-BSSID access points, security decoding, and connect_to_bssid by @cachebag in #373
  • Per-interface Wi-Fi scoping for multi-radio systems by @cachebag in #375
  • Saved connection enumeration through Settings / Settings.Connection proxies by @cachebag in #376
  • Connectivity state and captive-portal URL surface by @cachebag in #377
  • Generic VPN support with rich enumeration and UUID-based activation by @cachebag in #378

OpenVPN and VPN Work

Fixes and Polish

  • Support selecting Bluetooth adapters in BluetoothIdentity by @cachebag in #267
  • Fill active Wi-Fi network device/IP fields by @cachebag in #368
  • Fire network monitor callbacks on AP signal strength changes by @cachebag in #367
  • Add Send bound to monitoring stream trait objects by @cachebag in #359
  • Return Result from VpnCredentials and EapOptions builders by @cachebag in #379
  • Propagate disconnect errors and narrow Wi-Fi pre-connect teardown by @cachebag in #379
  • Add missing public API annotations by @cachebag in #379
  • Update mdbook for 3.0 per-interface Wi-Fi API and OpenVPN docs by @cachebag in #379

Maintenance

Contributors

Thank you to everyone who contributed code, docs, review, testing, bug reports, and release feedback for this cycle.

Full Changelog: nmrs-v2.4.0...nmrs-v3.0.0

nmrs 2.4.0

24 Apr 19:18

Choose a tag to compare

nmrs 2.4.0

Published to crates.io

See CHANGELOG.md for details.

What's Changed

  • chore: include AGENTS.md file by @cachebag in #338
  • fix(nmrs): add Send bound to monitoring stream trait objects by @cachebag in #359
  • fix(#363): fire network monitor on signal strength changes by @cachebag in #367
  • fix(#362): populate device and IP fields in list_networks by @cachebag in #368
  • refactor: use talk-e/install-action for semver checks by @cachebag in #369

Full Changelog: gui-v1.5.1...nmrs-v2.4.0

nmrs 2.3.0

10 Apr 19:19

Choose a tag to compare

nmrs 2.3.0

Published to crates.io

What's Changed

New Contributors

Full Changelog: gui-v1.5.0...nmrs-v2.3.0

nmrs-gui 1.5.1

10 Apr 19:20

Choose a tag to compare

nmrs-gui 1.5.1

A Wayland-compatible NetworkManager frontend built with GTK4.

Installation

Arch Linux (AUR)

yay -S nmrs

Manual Installation
Download the binary, extract, and move to your PATH:

tar -xzf nmrs-gui-1.5.1-x86_64-linux.tar.gz
sudo mv nmrs-gui /usr/local/bin/nmrs

See CHANGELOG.md for full details.

What's Changed

New Contributors

Full Changelog: gui-v1.5.0...gui-v1.5.1

nmrs-gui 1.5.0

19 Mar 19:03

Choose a tag to compare

[1.5.0] - 2026-03-19

Fixed

  • Custom ~/.config/nmrs/style.css is now applied after the saved theme, ensuring it always takes precedence over any predefined theme (#274) by @cachebag
  • Fixed header status label inflating natural width with long status strings (#279) by @pwsandoval

[1.1.0] - 2025-12-19

Fixed

  • Corrected binary name for .desktop file + postInstall hook for Nix flake (#146) @JonnieCache

A Wayland-compatible NetworkManager frontend built with GTK4.

Installation

Arch Linux (AUR)

yay -S nmrs

Manual Installation
Download the binary, extract, and move to your PATH:

tar -xzf nmrs-gui-1.5.0-x86_64-linux.tar.gz
sudo mv nmrs-gui /usr/local/bin/nmrs

See CHANGELOG.md for full details.

Release nmrs 2.2.0

18 Mar 02:29

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: nmrs-v2.0.1...nmrs-v2.2.0