NOTE: Python 2.x support ended as of 2019/11/13
Manage NetworkManager connections with dmenu instead of nm-applet
- Connect to existing NetworkManager wifi or wired connections
- Connect to new wifi connections. Requests passphrase if required
- Connect to existing VPN, Wireguard, GSM/WWAN and Bluetooth connections
- Enable/Disable wifi
- Enable/Disable WWAN
- Enable/Disable networking
- Launch nm-connection-editor GUI
- Support for multiple wifi adapters
- Optional Pinentry support for secure passphrase entry
- Delete existing connections
- Rescan wifi networks
- Uses notify-send for notifications if available
- Python 3.2+
- Dmenu. Basic support is included for Rofi_, but most Rofi
configuration/theming should be done via Xresources or Rofi themes. The
Suckless password patch_ is supported if desired.
- Python gobject (PyGObject, python-gobject, etc.)
- (Debian/Ubuntu based distros) libnm-util-dev and gir1.2-nm-1.0 (you have to
explicitly install the latter on Debian Sid)
- (optional) The network-manager-applet package (in order to launch the GUI
connection editor, if desired. The nm-applet does not need to be started.)
- (optional) Pinentry. Make sure to set which flavor of pinentry command to use
in the config file.
- (optional) ModemManager for WWAN support.
- (optional) notify-send for notifications (connected, disconnected, etc.)
- Copy script somewhere in $PATH OR install Archlinux
- Set your dmenu_command in config.ini if it's not 'dmenu' (for example
dmenu_run or rofi). The alternate command should still respect the -l, -p and
- To customize dmenu appearance, copy config.ini.example to
~/.config/networkmanager-dmenu/config.ini and edit.
- If using dmenu for passphrase entry (pinentry not set), dmenu options in the
[dmenu_passphrase] section of config.ini will override those in [dmenu] so you
can, for example, set the normal foreground and background colors to be the
same to obscure the passphrase. The
Suckless password patch_
-P option is
supported if that patch is installed.
- Set default terminal (xterm, urxvtc, etc.) command in config.ini if desired.
- If using Rofi, you can try some of the command line options in config.ini or
set them using the
dmenu_command setting, but I haven't tested most of them
so I'd suggest configuring via .Xresources where possible.
- Saved connections can be listed if desired. Set
list_saved = True under
[dmenu] in config.ini.
- If desired, copy the networkmanager_dmenu.desktop to /usr/share/applications
- If you want to run the script as $USER instead of ROOT, set
PolicyKit permissions_. The script is usable for connecting to pre-existing connections
without setting these, but you won't be able to enable/disable networking or
add new connections.
- Run script or bind to keystroke combination
- If desired, dmenu or Rofi options can be passed on the command line instead of
or in addition to the config file. These will override options in the config
.. _PolicyKit permissions: https://wiki.archlinux.org/index.php/NetworkManager#Set_up_PolicyKit_permissions
.. _AUR Package: https://aur.archlinux.org/packages/networkmanager-dmenu-git/
.. _Rofi: https://davedavenport.github.io/rofi/
.. _Suckless password patch: https://tools.suckless.org/dmenu/patches/password/