{"id":13407491,"url":"https://github.com/firecat53/networkmanager-dmenu","last_synced_at":"2026-02-24T04:03:51.839Z","repository":{"id":17098565,"uuid":"19863983","full_name":"firecat53/networkmanager-dmenu","owner":"firecat53","description":"Control NetworkManager via dmenu","archived":false,"fork":false,"pushed_at":"2024-07-05T19:48:04.000Z","size":4808,"stargazers_count":786,"open_issues_count":9,"forks_count":74,"subscribers_count":12,"default_branch":"main","last_synced_at":"2024-07-30T20:25:46.694Z","etag":null,"topics":["dmenu","networkmanager","rofi"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/firecat53.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-05-16T16:57:20.000Z","updated_at":"2024-07-30T18:12:03.000Z","dependencies_parsed_at":"2024-07-05T21:28:40.219Z","dependency_job_id":"5d10d222-8c48-48ef-b1ff-c4939585437b","html_url":"https://github.com/firecat53/networkmanager-dmenu","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firecat53%2Fnetworkmanager-dmenu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firecat53%2Fnetworkmanager-dmenu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firecat53%2Fnetworkmanager-dmenu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firecat53%2Fnetworkmanager-dmenu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firecat53","download_url":"https://codeload.github.com/firecat53/networkmanager-dmenu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221467834,"owners_count":16827232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dmenu","networkmanager","rofi"],"created_at":"2024-07-30T20:00:41.134Z","updated_at":"2025-10-22T06:25:11.245Z","avatar_url":"https://github.com/firecat53.png","language":"Python","funding_links":[],"categories":["Other","others","Python","Scripts","💣 Setup Installation"],"sub_categories":[],"readme":"# Networkmanager-dmenu\n\nManage NetworkManager connections with supported launchers instead of nm-applet.\n\n* [Bemenu][2]\n* [Dmenu][16]\n* [Fuzzel][8]\n* [Rofi][1]\n* [Tofi][14]\n* [Walker][11]\n* [Wmenu][15]\n* [Wofi][7]\n\n## Features\n\n- Connect to existing NetworkManager WiFi or wired connections\n- Connect to new WiFi connections. Requests passphrase if required\n- Connect to _existing_ VPN, Wireguard, GSM/WWAN and Bluetooth connections\n- Enable/Disable WiFi, WWAN, bluetooth and networking\n- Launch nm-connection-editor GUI\n- Support for multiple WiFi adapters\n- Optional Pinentry support for secure passphrase entry\n- Delete existing connections\n- Rescan WiFi networks\n- Uses notify-send for notifications if available\n- Start/stop/delete existing NetworkManager Hotspots\n- Show password/QR code for current WiFi network\n\n![Screencast](nmdm.gif)\n\n## Installation\n\n- Copy script somewhere into $PATH\n- Archlinux: [Arch Packages][3]\n- Gentoo: [Woomy Overlay][4]\n- Nix: [Nix Packages][9]\n\n- Run `./networkmanager_dmenu` in your terminal to generate the config file. \n \n## Requirements\n\n1. Python 3.7+\n2. NetworkManager\n3. Dmenu (X), Rofi (X or XWayland), Wofi (Wayland) or Bemenu (X or Wayland)\n4. Python gobject (PyGObject, python-gobject, etc.)\n5. (Debian/Ubuntu based distros) libnm0 (libnm-util-dev on older distributions)\n   and gir1.2-nm-1.0 (you have to explicitly install the latter on Debian Sid)\n6. (optional) The network-manager-applet or nm-connection-editor package,\n   depending on distro (in order to launch the GUI connection editor, if\n   desired. The applet does _not_ need to be started.)\n7. (optional) Pinentry. Make sure to set which flavor of pinentry command to use\n   in the config file.\n8. (optional) ModemManager for WWAN support.\n9. (optional) notify-send (libnotify) for notifications (connected,\n   disconnected, etc.)\n10. (optional) bluez package for bluetooth control\n\n## Configuration \n\n### Initial Setup\n\n- Run `./networkmanager_dmenu` in your terminal to generate the config file.\n  Checks for installed launchers and terminals and prompts for selection. The\n  generated config file will be created at:\n  `~/.config/networkmanager-dmenu/config.ini`\n\n### Custom Configuration\n\n- To customize behavior further, edit the generated configuration file\n- You can also manually copy config.ini.example to\n  ~/.config/networkmanager-dmenu/config.ini and edit it directly\n- Alternatively, specify a custom config file location using:\n  - Command line: `--config /path/to/config.ini`\n  - Environment variable: `NM_DMENU_CONFIG=/path/to/config.ini\n    networkmanager_dmenu`\n  - The command line flag takes precedence over the environment variable\n- All theming is done through the respective menu programs. Set `dmenu_command`\n  with the desired options, including things like `-i` for case insensitivity.\n  See config.ini.example for examples.\n    * Note: if a literal `%` is used in the config, it must be entered as `%%`.\n      See config.ini.example.\n- If using dmenu for passphrase entry (pinentry not set), dmenu options in the\n  `[dmenu_passphrase]` section of config.ini will set the normal foreground and\n  background colors to be the same to obscure the passphrase. The [Suckless\n  password patch][6] `-P` option is supported if that patch is installed. Rofi,\n  Wofi and Bemenu will use their respective flags for passphrase entry.\n- Set default terminal (xterm, urxvtc, etc.) command in config.ini.\n- Configure `show_pass` to run `nmcli dev wifi show-password` in a terminal.\n  This may take some experimentation to determine what will work for your\n  terminal.\n- Saved connections can be listed if desired. Set `list_saved = True` under\n  `[dmenu]` in config.ini. If set to `False`, saved connections are still\n  accessible under a \"Saved connections\" sub-menu.\n- If desired, copy the networkmanager_dmenu.desktop to /usr/share/applications\n  or ~/.local/share/applications.\n- If you want to run the script as $USER instead of ROOT\n    1. Set [PolicyKit permissions][5]. The script is usable for connecting to\n    pre-existing connections without setting these, but you won't be able to\n    enable/disable networking or add new connections.\n- For bluetooth control, there are two options:\n    1. If bluez is installed and the bluetooth service is running, no further\n    action is needed.\n    2. If not, the user needs to have access to `/dev/rfkill`. On some distros\n    (e.g. Archlinux), `/dev/rfkill` belongs to a group such as `rfkill`. In this\n    case, ensure $USER belongs to that group. For other distros (e.g. Fedora),\n    you can use udev to ensure `/dev/rfkill` belongs to a group. For example,\n    create `/etc/udev/rules.d/10-rfkill.rules`:\n\n               KERNEL==\"rfkill\", GROUP=\"wheel\", MODE=\"0664\"\n    \n       and then ensure $USER belongs to the `wheel` group.\n\n### Config.ini values\n\n| Section              | Key                | Default                | Notes                                            |\n|----------------------|--------------------|------------------------|--------------------------------------------------|\n| `[dmenu]`            | `compact`          | `False`                |                                                  |\n|                      | `dmenu_command`    | `dmenu`                | Command can include arguments                    |\n|                      | `list_saved`       | `False`                |                                                  |\n|                      | `pinentry`         | None                   |                                                  |\n|                      | `active_chars`     | ==                     | Prefix of active connection                      |\n|                      | `highlight`        | `True`                 | Only applicable to rofi / wofi                   |\n|                      | `highlight_fg`     | None                   | Only applicable to wofi                          |\n|                      | `highlight_bg`     | None                   | Only applicable to wofi                          |\n|                      | `highlight_bold`   | `True`                 | Only applicable to wofi                          |\n|                      | `prompt`           | Networks               |                                                  |\n|                      | `wifi_chars`       | None                   | String of 4 unicode characters                   |\n|                      | `wifi_icons`       | None                   | String of icon characters                        |\n|                      | `format`           | (depends on `compact`) | Python-style format string                       |\n| `[pinentry]`         | `description`      | `Get network password` |                                                  |\n|                      | `prompt`           | `Password:`            |                                                  |\n| `[dmenu_passphrase]` | `obscure`          | `False`                |                                                  |\n|                      | `obscure_color`    | `#222222`              | Only applicable to dmenu                         |\n|                      | `show_pass`        | See config.ini.example | CLI to run `nmcli d wifi show-password`          |\n| `[editor]`           | `gui_if_available` | `True`                 |                                                  |\n|                      | `gui`              | `nm-connection-editor` |                                                  |\n|                      | `terminal`         | `xterm`                | Can include terminal arguments                   |\n| `[nmdm]`             | `rescan_delay`     | `5`                    | Adjust delay in re-opening nmdm following rescan |\n\n## Usage\n\n`networkmanager_dmenu [-h] [--config CONFIG_PATH] \u003cmenu args\u003e`\n\n- Run script or bind to keystroke combination\n- If desired, menu options can be passed on the command line instead of or in\n  addition to the config file. These will override options in the config file.\n- Networkmanager_dmenu cannot create hotspots, but can manage existing ones. To\n  create a new NetworkManager hotspot and show a QR Code with the password:\n\n```bash\nnmcli device wifi hotspot ifname wlp0s20f3 ssid testing password pass123456 band a\nnmcli connection up hotspot (or use networkmanager_dmenu to enable)\nnmcli device wifi show-password\n```\n\n  This may not work for your setup.  [Linux-wifi-hotspot][10] is an option if straight\n  NetworkManager WiFi sharing doesn't work for you.  Unfortunately, these\n  hotspots cannot be managed with networkmanager_dmenu.\n\n* **NOTE** Running under [UWSM][12] requires some [extra configuration][13].\n    + Assigning to keyboard shortcut: `uwsm app -- networkmanager_dmenu`\n    + If launching by, for example, clicking a Waybar icon, Waybar must be the\n      version that works with UWSM and be started as a `systemd --user` service.\n \n## MIT License\n\n[1]: https://davedavenport.github.io/rofi/ \"Rofi\"\n[2]: https://github.com/Cloudef/bemenu \"Bemenu\" \n[3]: https://archlinux.org/packages/extra/any/networkmanager-dmenu/ \"Arch Packages\"\n[4]: https://github.com/Woomy4680-exe/Woomy-overlay \"Woomy Overlay\" \n[5]: https://wiki.archlinux.org/index.php/NetworkManager#Set_up_PolicyKit_permissions \"PolicyKit permissions\"\n[6]: https://tools.suckless.org/dmenu/patches/password/ \"Suckless password patch\" \n[7]: https://hg.sr.ht/~scoopta/wofi \"Wofi\"\n[8]: https://codeberg.org/dnkl/fuzzel \"Fuzzel\"\n[9]: https://search.nixos.org/packages? \"Nix Packages\"\n[10]: https://github.com/lakinduakash/linux-wifi-hotspot\n[11]: https://github.com/abenz1267/walker\n[12]: https://github.com/Vladimir-csp/uwsm \"UWSM\"\n[13]: https://github.com/Vladimir-csp/uwsm#5-launchers \"Launchers under UWSM\"\n[14]: https://github.com/philj56/tofi \"Tofi\"\n[15]: https://codeberg.org/adnano/wmenu \"Wmenu\"\n[16]: https://tools.suckless.org/dmenu/ \"Dmenu\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirecat53%2Fnetworkmanager-dmenu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirecat53%2Fnetworkmanager-dmenu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirecat53%2Fnetworkmanager-dmenu/lists"}