Can WiFi priority be dragged up and down in NetworkManager?
The short answer is “Not yet.” As of mid 2018, Ubuntu has nothing as easy as Microsoft Windows for setting the WiFi priority. However, there are ways to accomplish what you want.
For command line use
nmcli. For GUI,
nmcli -f autoconnect-priority,name c
nmcli c mod "mypreferred" conn.autoconnect-p 10
nmcli c mod "xfinitywifi" conn.autoconnect-p -10
apt install plasma-nm
Here are the currently available ways of setting WiFi priority, along with a short description of why they don't quite answer the original question.
Command line tools (nmcli)
While this solution is probably the easiest way to do it and it does work with NetworkManager,
nmcli does not allow Microsoft Windows-style drag-and-drop reordering. In fact,
nmcli (as the name suggests) is a "command line interface" to NetworkManager, which means you'll need to type commands in the terminal, which can be off-putting for some people. I'll describe more how to use it below.
This tool does not allow drag-and-drop reordering, but it does work with NetworkManager. Despite the name "KDE", it works with any desktop environment (I tested it with GNOME). It presents a graphical interface that lets one edit the "autoconnect-priority" of a network. I'll discuss how to use it below.
This tool does allow moving network priorities up and down, as requested. However, it is not actually integrated with Network Manager; in fact I believe it is a mistake to run both at the same time. Also, despite having a graphical interface, it is not as easy to use as it should be. Another reason to not use Wifi Radar is that it is a Python script that must be run as root, a potential security risk. Also, according to the man page, WiFi Radar is very power consuming and has "probably lots" of bugs.
GNOME network control panel (not even in the running)
I mention this more for completeness as it's what people would expect to work, but it doesn't. GNOME, which is Ubuntu's current default desktop environment, comes with a network control panel that simply cannot show or edit autoconnect priorities at all. (By the way,
plasma-nm both work fine under GNOME.)
nm-connection-editor: GNOME's old network control panel
GNOME used to have the ability to set connection priorities, albeit in a clunky way, not drag and drop. The old control panel is yet included in GNOME, but is not accessible by clicking. Instead, run the command
nm-connection-editor, then select a WiFi network, click Edit, go to the General tab, and click the - / + buttons next to "connection priority for auto activation".
If you're a hardcore geek, mumble code in your sleep, all you need to do is add the line "autoconnect-priority: 10" to the file
/etc/NetworkManager/system-connections/foo. See nm-settings(5).
Full explanation with examples
kde5-nm-connection-editor can edit individual network autoconnect priorities. Only
nmcli can show you a list of all the currently set priorities. Both assume that you know that higher numbers represent higher priorities and that zero is the default. Negative numbers are allowed and work to mark a network as a "last resort" if nothing else is available (See
man nm-settings and search for "autoconnect-priority".)
The changes nmcli and plasma-nm make are stored permanently by NetworkManager in /etc/NetworkManager/system-connections/.
How to use nmcli
This is my preferred solution and it already comes with Ubuntu. If you're familiar with the command line or if you have a naturally linguistic brain, you may find this solution easier than using a mouse. On the other hand, if you want to try a graphical interface first, skip ahead to the next section on KDE's plasma-nm. For all of the examples below, you'll need to open a Terminal to type in the commands.
To list current priorities
$ nmcli -f autoconnect-priority,name c
0 Caffe Ubuntu
0 Caffe Ubuntu Guest
0 Fire Hotspot
0 JET & Mishka
0 La Marzocco
Tip: If you have a very long list, you may want to sort them by priority:
nmcli -f autoconnect-priority,name c | tail -n +2 | sort -nr
How to set a network as preferred
nmcli connection modify "Caffe Ubuntu" connection.autoconnect-priority 10
Note that you can use any number you want for the priority. A larger number moves the network to the top of the list.
How to set a network as a last resort
nmcli connection modify "xfinitywifi" connection.autoconnect-priority -10
Negative priority values are lower than the default of 0, which means they will be tried last, if no other known WiFi network can be found. Note that, due to a bug in some versions of
nmcli, you may see negative numbers listed as huge positive numbers like 4294967286. Don't worry about this as it will still work fine.
How to use plasma-nm
Plasma-nm, KDE's NetworkManager client, lets you change a network's priority through several clicks in a graphical interface. You cannot drag-and-drop, instead you must specify a number. As with
nmcli, higher numbers are higher priority. Unfortunately, you cannot see a list of what other priorities you've set in the past so you may have to guess at a number. Personally, I just use "10" for preferred networks and "-10" for last resort networks and I don't differentiate between them beyond that.
You don't need to install all of KDE just to get plasma-nm. (On my machine, running GNOME, the full KDE package would have required downloading over 600MB; in contrast, plasma-nm was only 8MB). I installed plasma-nm from the command line like so:
sudo apt install plasma-nm
and I ran it by typing this:
(Well, technically, I didn't type all that. I used TAB to autocomplete the typing for me).
If you don't use KDE, the first time you run plasma-nm, it will ask you about creating a "wallet" to store credentials. I just hit "Cancel" to the question and it worked fine for me.
Then it will show you a list of connections. Double-click on the connection you want to edit. That will bring up the "Connection Editor" panel. Choose the "General Configuration" tab. At the bottom, you'll see a box labeled "Priority". Change it from 0 to 10 (preferred) or -10 (last resort). Click "OK" to save the changes.
Since changes are permanently stored with NetworkManager, once you're finished adjusting priorities, you don't have to keep plasma-nm installed if you don't want to. (
sudo apt remove plasma-nm)