SkillAgentSearch skills...

Wlctl

🛜 TUI for managing wifi on Linux with Network Manager

Install / Use

/learn @aashish-thapa/Wlctl
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <h1>wlctl</h1> <h3>TUI for managing WiFi using NetworkManager</h3> <p>A fork of <a href="https://github.com/pythops/impala">impala</a> that uses NetworkManager instead of iwd</p>

CI Crates.io Downloads License

</div>

Purpose

I personally love impala but it has limitation due to use of iwd. So, this repo preserves the beauty but changes the underlying logic to use NetworkManager.

📸 Demo

✨ Features

  • WPA Enterprise (802.1X) Support
  • Station & Access Point Modes
  • QR Code Network Sharing
  • Uses NetworkManager - works alongside your existing network setup

💡 Prerequisites

[!NOTE] This fork uses NetworkManager instead of iwd, so it works with your existing network configuration without conflicts.

🚀 Installation

📦 crates.io

You can install wlctl from crates.io

cargo install wlctl

Arch Linux (AUR)

wlctl-bin is available on the Arch User Repository.

yay -S wlctl-bin

⚒️ Build from source

Run the following command:

git clone https://github.com/aashish-thapa/wlctl
cd wlctl
cargo build --release

This will produce an executable file at target/release/wlctl that you can copy to a directory in your $PATH.

🪄 Usage

Global

Tab or Shift + Tab: Switch between different sections.

j or Down : Scroll down.

k or Up: Scroll up.

ctrl+r: Switch adapter mode.

?: Show help.

esc: Dismiss the different pop-ups.

q or ctrl+c: Quit the app. (Note: <Esc> can also quit if esc_quit = true is set in config)

Device

i: Show device information.

o: Toggle device power.

Station

s: Start scanning.

Space or Enter: Connect/Disconnect the network.

New Networks

h: Connect to a hidden network.

Known Networks

t: Enable/Disable auto-connect.

d: Remove the network from the known networks list.

a: Show all the known networks.

p: Share via QR Code.

Shift + s: Speed test

[!NOTE] speedtest-cli is used. Install it with pip install speedtest-cli

Access Point

n: Start a new access point.

x: Stop the running access point.

Custom keybindings

Keybindings can be customized in the config file $HOME/.config/wlctl/config.toml

switch = "r"
mode = "station"
esc_quit = false  # Set to true to enable Esc key to quit the app

[device]
infos = "i"
toggle_power = "o"

[access_point]
start = 'n'
stop = 'x'

[station]
toggle_scanning = "s"

[station.new_network]
show_all = "a"
connect_hidden = "h"

[station.known_network]
toggle_autoconnect = "t"
remove = "d"
show_all = "a"
share = "p"

Differences from upstream impala

| Feature | impala (upstream) | wlctl (this fork) | |---------|-------------------|-------------------| | Backend | iwd | NetworkManager | | Config location | /var/lib/iwd/ | /etc/NetworkManager/system-connections/ | | Conflicts | Conflicts with NetworkManager | Works alongside existing setup |

Credits

This is a fork of pythops/impala. All credit for the original UI and architecture goes to the original author.

⚖️ License

GPLv3

View on GitHub
GitHub Stars47
CategoryDevelopment
Updated4d ago
Forks1

Languages

Rust

Security Score

95/100

Audited on Apr 1, 2026

No findings