
なぜ
impalaは優れたWiFi TUIですが、iwdを経由して通信します。お使いのディストリビューションが既にNetworkManagerを実行している場合(GNOME、KDE、Ubuntu、Fedora、Popなど、ほとんどの場合)、スタックを引き剥がさずにimpalaをそのまま導入することはできません。wlctlはimpalaのユーザー体験を維持しつつ、NetworkManagerを対象とするため、デスクトップ環境が既に行っている処理と並行してそのまま動作します。
機能
- ステーションモードとアクセスポイントモード
- WPA Enterprise (802.1X)
- 複数のアダプタ — 使用するアダプタを選択し、動的に切り替え可能
- VPN接続 — on/offの切り替え、自動接続の管理、保存済みVPN/WireGuardプロファイルの削除(nmtuiと同様)。アクティブなトンネルは右上にバッジとして表示されます。
wlctl doctor — rfkill、ドライバ、アソシエーション、IP、DHCP、ゲートウェイ、DNS、インターネットを順にチェック
- QRコード共有、隠しネットワーク、スピードテスト
- Vimキー、すべてのキーバインドの設定が可能
インストール
# crates.io
cargo install wlctl
# Arch (AUR)
yay -S wlctl-bin
# Nix (run without installing)
nix run github:aashish-thapa/wlctl
# from source
git clone https://github.com/aashish-thapa/wlctl && cd wlctl
cargo build --release
NixOSでは、flakeを入力として追加し、wlctl.packages.${system}.defaultを使用するか、nix shell github:aashish-thapa/wlctlでシェルに取り込んでください。
NetworkManagerの実行が必要です。アイコン表示にはNerd Fontsがオプションで利用できます。
使い方
TUIを起動するにはwlctl。何かが壊れていてどのレイヤーに問題があるか知りたい場合はwlctl doctor。
グローバル
既知のネットワーク
WiFiとイーサネットの両方が有効な場合、NetworkManagerが実際にインターネットをルーティングしているリンクが緑色で強調表示され、ボックスフッターにその情報が表示されます( Internet: WiFi · <ssid>)。イーサネット行または接続中のWiFiでuを押すと、デフォルトルートをそちらに切り替えます(もう一方のリンクは有効のままです)。
デバイスボックスのフッターにはアクティブなアダプタのLAN IP(例: wlan0 · 192.168.1.20)が表示されるため、ip addrを実行しなくてもSSHで接続できます。
新しいネットワーク
| アクション | キー |
|---|
| 接続 / 切断 | Space または Enter |
| 隠しネットワークに接続 |
/を押すと、入力中にSSIDでスキャンリストをフィルタリングできます。Enterでフィルタを保持、Escでクリアします。
VPN接続(vで開く)
選択したトンネルに割り当てられたIPと稼働時間は、トンネルが有効な間、リストの下に表示されます。
WireGuard設定のインポート: iを押して、設定全体を貼り付ける(ほとんどのプロバイダー(Proton、Mullvadなど)はテキストをそのまま提供します)か、.confファイルへのパスを入力してEnterキーを押します。wlctlが解析し、NetworkManagerプロファイルを作成します — nmcliは不要です。貼り付けた設定はサーバーエンドポイントに基づいて名前が付けられ、ファイルインポートはファイル名に基づきます。パスでは~が展開されます。プロファイルは自動接続せずに追加されます。Enterで有効に切り替えてください。OpenVPNの.ovpnファイルはここではサポートされていません。それらはnmcli connection import type openvpn file <path>を使用してインポートしてください(NetworkManager-openvpnプラグインが必要です)。
デバイスパネル
| アクション | キー |
|---|
| アダプタ情報 | i |
| 電源の切り替え | o |
| 診断 | ? |
ステーションモード
アクセスポイントモード
設定
~/.config/wlctl/config.toml。すべてのキーを再割り当て可能。
switch = "r"
mode = "station"
esc_quit = false
vpn = "v"
[device]
infos = "i"
toggle_power = "o"
doctor = "?"
[station]
toggle_scanning = "s"
[station.known_network]
toggle_autoconnect = "t"
remove = "d"
show_all = "a"
share = "p"
speed_test = "S"
prefer = "u"
[station.new_network]
show_all = "a"
connect_hidden = "h"
filter = "/"
[access_point]
start = "n"
stop = "x"
impalaとの比較
クレジット
pythops/impalaからフォークしました。UIとアーキテクチャは彼らのものです。
ライセンス
GPLv3