์—…๋ฐ์ดํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
New releaseAug 21, 2026

wlctl v0.1.10

๐Ÿ›œ ๋ฆฌ๋ˆ…์Šค์—์„œ Network Manager๋ฅผ ์‚ฌ์šฉํ•œ wifi/ethernet/vpn ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ TUI

๊ณต์œ 

wlctl

NetworkManager์šฉ WiFi TUI.

CI Crates.io Downloads License

demo

์™œ

impala๋Š” ํ›Œ๋ฅญํ•œ WiFi TUI์ด์ง€๋งŒ iwd์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ๋ฐฐํฌํŒ์ด ์ด๋ฏธ NetworkManager๋ฅผ ์‹คํ–‰ ์ค‘์ด๋ผ๋ฉด (๋Œ€๋ถ€๋ถ„์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค โ€” GNOME, KDE, Ubuntu, Fedora, Pop, โ€ฆ), ์Šคํƒ์„ ๋œฏ์–ด๋‚ด์ง€ ์•Š๊ณ ๋Š” impala๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. wlctl์€ impala์˜ UX๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ NetworkManager๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ฏ€๋กœ, DE๊ฐ€ ์ด๋ฏธ ํ•˜๊ณ  ์žˆ๋Š” ์ž‘์—…๊ณผ ํ•จ๊ป˜ ๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ

  • ์Šคํ…Œ์ด์…˜ ๋ฐ ์•ก์„ธ์Šค ํฌ์ธํŠธ ๋ชจ๋“œ
  • WPA Enterprise (802.1X)
  • ์—ฌ๋Ÿฌ ์–ด๋Œ‘ํ„ฐ โ€” ๊ตฌ๋™ํ•  ์–ด๋Œ‘ํ„ฐ ์„ ํƒ, ์‹ค์‹œ๊ฐ„ ์ „ํ™˜
  • VPN ์—ฐ๊ฒฐ โ€” ์ผœ๊ธฐ/๋„๊ธฐ, ์ž๋™ ์—ฐ๊ฒฐ ๊ด€๋ฆฌ, ์ €์žฅ๋œ VPN/WireGuard ํ”„๋กœํ•„ ์‚ญ์ œ (nmtui์ฒ˜๋Ÿผ); ํ™œ์„ฑ ํ„ฐ๋„์€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ๋ฐฐ์ง€๋กœ ํ‘œ์‹œ
  • wlctl doctor โ€” rfkill, ๋“œ๋ผ์ด๋ฒ„, ์—ฐ๊ฒฐ, IP, DHCP, ๊ฒŒ์ดํŠธ์›จ์ด, DNS, ์ธํ„ฐ๋„ท์„ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค
  • QR ์ฝ”๋“œ ๊ณต์œ , ์ˆจ๊ฒจ์ง„ ๋„คํŠธ์›Œํฌ, ์†๋„ ํ…Œ์ŠคํŠธ
  • Vim ํ‚ค, ๋ชจ๋“  ํ‚ค ๋ฐ”์ธ๋”ฉ ์„ค์ • ๊ฐ€๋Šฅ

์„ค์น˜

# crates.io
cargo install wlctl

# Arch (AUR)
yay -S wlctl-bin

# Nix (์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ)
nix run github:aashish-thapa/wlctl

# ์†Œ์Šค์—์„œ
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.

์ „์—ญ

๋™์ž‘ํ‚ค
ํŒจ๋„ ์ „ํ™˜Tab / Shift+Tab
์ด๋™j k / ํ™”์‚ดํ‘œ
์–ด๋Œ‘ํ„ฐ ๋ชจ๋“œ ์ „ํ™˜ (์Šคํ…Œ์ด์…˜ โ†” AP)Ctrl+R
VPN ์—ฐ๊ฒฐv
์ข…๋ฃŒq / Ctrl+C
ํŒ์—… ๋‹ซ๊ธฐEsc

์•Œ๋ ค์ง„ ๋„คํŠธ์›Œํฌ

๋™์ž‘ํ‚ค
์—ฐ๊ฒฐ / ํ•ด์ œSpace ๋˜๋Š” Enter
์ž๋™ ์—ฐ๊ฒฐ ์ „ํ™˜t
๋„คํŠธ์›Œํฌ ์‚ญ์ œd
์ด๊ฒƒ์„ ์ธํ„ฐ๋„ท ๊ฒฝ๋กœ๋กœ ์„ค์ •u
๋ชจ๋‘ ํ‘œ์‹œa
QR ๊ณต์œ p
์†๋„ ํ…Œ์ŠคํŠธ (speedtest-cli ํ•„์š”)Shift+S

WiFi์™€ ์ด๋”๋„ท์ด ๋ชจ๋‘ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์„ ๋•Œ, NetworkManager๊ฐ€ ์‹ค์ œ๋กœ ์ธํ„ฐ๋„ท์„ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋งํฌ๊ฐ€ ๋…น์ƒ‰์œผ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋˜๊ณ  ์ƒ์ž ํ•˜๋‹จ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค (๓ฐ–Ÿ Internet: WiFi ยท <ssid>). ์ด๋”๋„ท ํ–‰ ๋˜๋Š” ์—ฐ๊ฒฐ๋œ WiFi์—์„œ u๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ธฐ๋ณธ ๊ฒฝ๋กœ๊ฐ€ ํ•ด๋‹น ๋งํฌ๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค (๋‹ค๋ฅธ ๋งํฌ๋Š” ๊ณ„์† ํ™œ์„ฑ ์ƒํƒœ).

์žฅ์น˜ ์ƒ์ž ํ•˜๋‹จ์—๋Š” ํ™œ์„ฑ ์–ด๋Œ‘ํ„ฐ์˜ LAN IP๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค (์˜ˆ: ๓ฐฉŸ wlan0 ยท 192.168.1.20). ๋”ฐ๋ผ์„œ ip addr์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ SSH๋กœ ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋„คํŠธ์›Œํฌ

๋™์ž‘ํ‚ค
์—ฐ๊ฒฐ / ํ•ด์ œSpace ๋˜๋Š” Enter
์ˆจ๊ฒจ์ง„ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐh
์ด๋ฆ„์œผ๋กœ ํ•„ํ„ฐ๋ง/
๋ชจ๋‘ ํ‘œ์‹œa

/๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ž…๋ ฅํ•˜๋Š”๋Œ€๋กœ SSID๋กœ ์Šค์บ” ๋ชฉ๋ก์„ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. Enter๋Š” ํ•„ํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ณ , Esc๋Š” ์ง€์›๋‹ˆ๋‹ค.

VPN ์—ฐ๊ฒฐ (v๋กœ ์—ด๊ธฐ)

๋™์ž‘ํ‚ค
์ผœ๊ธฐ/๋„๊ธฐ ์ „ํ™˜Space ๋˜๋Š” Enter
์ž๋™ ์—ฐ๊ฒฐ ์ „ํ™˜a
ํ”„๋กœํ•„ ์‚ญ์ œ (y/n ํ™•์ธ)d
WireGuard ๊ตฌ์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐi
๋‹ซ๊ธฐEsc

์„ ํƒํ•œ ํ„ฐ๋„์˜ ํ• ๋‹น๋œ IP์™€ ๊ฐ€๋™ ์‹œ๊ฐ„์ด ํ„ฐ๋„์ด ์ž‘๋™ ์ค‘์ผ ๋•Œ ๋ชฉ๋ก ์•„๋ž˜์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

WireGuard ๊ตฌ์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ: i๋ฅผ ๋ˆ„๋ฅธ ๋‹ค์Œ ์ „์ฒด ๊ตฌ์„ฑ์„ ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ (๋Œ€๋ถ€๋ถ„์˜ ์ œ๊ณต์—…์ฒด(Proton, Mullvad)๋Š” ํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค) .conf ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ๋ˆ„๋ฅด์„ธ์š”. wlctl์ด ์ด๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ NetworkManager ํ”„๋กœํ•„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค โ€” nmcli๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ๋ถ™์—ฌ๋„ฃ์€ ๊ตฌ์„ฑ์€ ์„œ๋ฒ„ ์—”๋“œํฌ์ธํŠธ์˜ ์ด๋ฆ„์œผ๋กœ ์ง€์ •๋˜๊ณ , ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ๋Š” ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ์—์„œ ~๋Š” ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœํ•„์€ ์ž๋™ ์—ฐ๊ฒฐ ์—†์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. Enter๋กœ ์ผœ๊ธฐ/๋„๊ธฐ๋ฅผ ์ „ํ™˜ํ•˜์„ธ์š”. OpenVPN .ovpn ํŒŒ์ผ์€ ์—ฌ๊ธฐ์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ํ•ด๋‹น ํŒŒ์ผ์€ nmcli connection import type openvpn file <path>๋กœ ๊ฐ€์ ธ์˜ค์„ธ์š” (NetworkManager-openvpn ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค).

์žฅ์น˜ ํŒจ๋„

๋™์ž‘ํ‚ค
์–ด๋Œ‘ํ„ฐ ์ •๋ณดi
์ „์› ์ „ํ™˜o
๋‹ฅํ„ฐ?

์Šคํ…Œ์ด์…˜ ๋ชจ๋“œ

๋™์ž‘ํ‚ค
์Šค์บ”s

์•ก์„ธ์Šค ํฌ์ธํŠธ ๋ชจ๋“œ

๋™์ž‘ํ‚ค
AP ์‹œ์ž‘n
AP ์ค‘์ง€x

์„ค์ •

~/.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"

vs. impala

impalawlctl
๋ฐฑ์—”๋“œiwdNetworkManager
๊ธฐ๋ณธ ๋ฐ์Šคํฌํ†ฑ ๋„คํŠธ์›Œํฌ ์Šคํƒ๊ณผ ๊ณต์กด์•„๋‹ˆ์˜ค์˜ˆ
๋‹ค์ค‘ ์–ด๋Œ‘ํ„ฐ ์„ ํƒ๊ธฐโ€”์˜ˆ
VPN ์—ฐ๊ฒฐ ์ „ํ™˜โ€”์˜ˆ
doctor ํ•˜์œ„ ๋ช…๋ น์–ดโ€”์˜ˆ

ํฌ๋ ˆ๋”ง

pythops/impala์—์„œ ํฌํฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. UI์™€ ์•„ํ‚คํ…์ฒ˜๋Š” ๊ทธ๋“ค์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

GPLv3

์นดํ…Œ๊ณ ๋ฆฌ