https://github.com/e-tho/iwmenu
Launcher-driven Wi-Fi manager for Linux
https://github.com/e-tho/iwmenu
cli dmenu fuzzel iwd launcher linux rofi walker wifi
Last synced: 12 days ago
JSON representation
Launcher-driven Wi-Fi manager for Linux
- Host: GitHub
- URL: https://github.com/e-tho/iwmenu
- Owner: e-tho
- License: gpl-3.0
- Created: 2024-08-01T20:36:17.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-02-15T23:11:49.000Z (16 days ago)
- Last Synced: 2026-02-16T04:40:01.108Z (16 days ago)
- Topics: cli, dmenu, fuzzel, iwd, launcher, linux, rofi, walker, wifi
- Language: Rust
- Homepage:
- Size: 2.4 MB
- Stars: 411
- Watchers: 4
- Forks: 12
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
- awesome-useful-projects - <img src="https://icon.horse/icon/github.com" height="20px" align="center"/>/e-tho/iwmenu - Network management menu (Linux / Other)
README
## About
`iwmenu` (**i**Net **W**ireless **Menu**) manages Wi-Fi through your launcher of choice.
## Dependencies
### Build
- [`Rust`](https://www.rust-lang.org/) (includes `cargo`)
### Runtime
- [`iwd`](https://iwd.wiki.kernel.org) – iNet Wireless Daemon
- [`dbus`](https://www.freedesktop.org/wiki/Software/dbus) – For communicating with `iwd`
- A launcher with `stdin` mode support
#### Optional
- [NerdFonts](https://www.nerdfonts.com/) – For font-based icons (default mode)
- [XDG icon theme](https://specifications.freedesktop.org/icon-theme-spec/latest) – For image-based icons (used with `-i xdg`, included with DEs or can be installed manually)
- [Notification daemon](https://specifications.freedesktop.org/notification-spec/latest/) – For system notifications (e.g. `dunst` or `fnott`, included with DEs or can be installed manually)
## Compatibility
| Launcher | Font Icons | XDG Icons | Notes |
| ------------------------------------------ | :--------: | :-------: | ------------------------------------------------------------------------------------- |
| [Fuzzel](https://codeberg.org/dnkl/fuzzel) | ✅ | ✅ | XDG icons supported since v1.13.0 |
| [Rofi](https://github.com/davatorium/rofi) | ✅ | 🔄 | XDG icon support pending via [PR #2122](https://github.com/davatorium/rofi/pull/2122) |
| [dmenu](https://tools.suckless.org/dmenu) | ✅ | ❌ | No XDG icon support |
| Custom (stdin) | ✅ | ❔ | Depends on launcher implementation |
> [!TIP]
> If your preferred launcher isn't directly supported, use `custom` mode with appropriate command flags.
## Installation
### Build from source
Run the following commands:
```shell
git clone https://github.com/e-tho/iwmenu
cd iwmenu
cargo build --release
```
An executable file will be generated at `target/release/iwmenu`, which you can then copy to a directory in your `$PATH`.
### Nix
Install from nixpkgs:
```nix
{ pkgs, ... }:
{
environment.systemPackages = [ pkgs.iwmenu ];
}
```
Alternative: Install from flake
Add flake as an input:
```nix
inputs.iwmenu.url = "github:e-tho/iwmenu";
```
Install from flake:
```nix
{ inputs, ... }:
{
environment.systemPackages = [ inputs.iwmenu.packages.${pkgs.system}.default ];
}
```
### Alpine Linux
Install from the testing repository:
```shell
apk add iwmenu
```
### Arch Linux
Install from AUR with your favorite helper:
```shell
paru -S iwmenu # or iwmenu-git
```
### Gentoo
Install from GURU overlay:
```shell
sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge -a net-wireless/iwmenu
```
## Usage
### Supported launchers
Specify an application using `-l` or `--launcher` flag.
```shell
iwmenu -l fuzzel
```
### Custom launchers
Specify `custom` as the launcher and set your command using the `--launcher-command` flag. Ensure your launcher supports `stdin` mode, and that it is properly configured in the command.
```shell
iwmenu -l custom --launcher-command "my_custom_launcher --flag"
```
#### Prompt and Placeholder support
Use `{hint}` as the value for the relevant flag in your command; it will be substituted with the appropriate text as needed.
```shell
iwmenu -l custom --launcher-command "my_custom_launcher --placeholder-flag '{hint}'" # or --prompt-flag '{hint}:'
```
#### Password obfuscation support
To enable support for password obfuscation, set the appropriate flag via `{password_flag:--my-password-flag}`.
```shell
iwmenu -l custom --launcher-command "my_custom_launcher {password_flag:--my-password-flag}"
```
#### Example to enable all features
This example demonstrates enabling all available features in custom mode with `fuzzel`.
```shell
iwmenu -l custom --launcher-command "fuzzel -d --placeholder '{hint}' {password_flag:--password}"
```
### Available Options
| Flag | Description | Supported Values | Default Value |
| -------------------- | --------------------------------------------------------- | ----------------------------------- | ------------- |
| `-l`, `--launcher` | Specify the launcher to use (**required**). | `dmenu`, `rofi`, `fuzzel`, `custom` | `None` |
| `--launcher-command` | Specify the command to use when `custom` launcher is set. | Any valid shell command | `None` |
| `-i`, `--icon` | Specify the icon type to use. | `font`, `xdg` | `font` |
| `-s`, `--spaces` | Specify icon to text space count (font icons only). | Any positive integer | `1` |
| `--back-on-escape` | Return to previous menu on escape. | N/A | `false` |
## Contributing
Please see [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
## License
This project is licensed under the terms of the GNU General Public License version 3, or (at your option) any later version.
## Support this project
If you find this project useful and would like to help me dedicate more time to its development, consider supporting my work.
[](https://ko-fi.com/e_tho)
[](https://liberapay.com/e-tho)