wifi-config

Crates.iowifi-config
lib.rswifi-config
version0.2.0
created_at2025-09-03 09:35:42.743155+00
updated_at2025-10-13 15:46:08.786693+00
descriptionLibrary + CLI for configuring Wi-Fi via NetworkManager over D-Bus
homepage
repositoryhttps://github.com/ATverdyi/wifi-config
max_upload_size
id1822250
size75,868
Andrii Tverdyi (ATverdyi)

documentation

README

wifi-config

CLI tool and Rust library for configuring Wi-Fi connections via NetworkManager over the system D-Bus. Supports both DHCP and static IPv4 configuration.


📦 Installation

Install the CLI tool from crates.io:

cargo install wifi-config

Or build from source:

git clone https://github.com/yourname/wifi-config.git
cd wifi-config
cargo install --path .

🚀 CLI Usage

Connect using DHCP

wifi-config <SSID> <PASSWORD>

Example:

wifi-config MyHomeWiFi supersecret123

This will:

  • Connect to the system D-Bus
  • Find the first Wi-Fi device (DeviceType == 2)
  • Create a WPA-PSK connection profile
  • Activate the connection via NetworkManager

Connect using Static IP

wifi-config <SSID> <PASSWORD> --static <IP> <PREFIX> <GATEWAY>

Example:

wifi-config MyOfficeWiFi topsecretpass --static 192.168.10.50 24 192.168.10.1

This will:

  • Create a connection profile with UUID, ID, and type 802-11-wireless
  • Set 802-11-wireless section with SSID and mode infrastructure
  • Set 802-11-wireless-security section with WPA-PSK password
  • Set ipv4 section with method manual and addresses [IP, prefix, gateway]
  • Add and activate the connection immediately via NetworkManager

🧰 Library Usage

Add to your Cargo.toml:

[dependencies]
wifi-config = "0.1"

Example usage:

use wifi_config::{send_wifi_to_network_manager, send_static_wifi_to_network_manager};

fn main() {
    // Connect using DHCP
    send_wifi_to_network_manager("MyHomeWiFi", "supersecret123");

    // Connect using static IP
    send_static_wifi_to_network_manager(
        "MyOfficeWiFi",
        "topsecretpass",
        "192.168.10.50",
        24,
        "192.168.10.1",
    );
}

📄 License

Licensed under either of:

at your option.

Commit count: 6

cargo fmt