I am getting used to netplan.io
on my laptop after routinely uninstalling it for several years in favor of ifupdown
.
This is probably far-fetched, but since it's running a desktop front-end (plasma), I'm wondering if it'd be possible to use it to use two different renderers simultaneously - one for ethernet, and one for wifi, as I have failed to find a GUI for systemd-networkd
, but would still like to be able to configure the wifi with a GUI.
Example:
"network": {
"version": 2,
"renderer": "networkd",
"ethernets": {
"enp0s31f6": {
"dhcp4": false,
"addresses": [
"192.168.1.28/24"
],
"routes": [
{
"to": "default",
"via": "192.168.1.1"
}
],
"nameservers": {
"addresses": [
"192.168.1.2", "192.168.1.3"
],
"search": [
"domain.com"
]
},
"dhcp6": true
}
},
"wifis": {
"wlan0": {
"renderer": "NetworkManager"
}
}
}
(I've been writing my configs in JSON and converting them with yq
, since I like how JSON is a bit more explicit)
If it is impossible to use two renderers at once, is there an alternative to NetworkManager
but has a similar interface that uses ncurses
or Qt
, and will interact with wlan0
on systemd-networkd
?
I came across Intel's
connman
package, which appears to work just fine, and there is a Qt interface package for it calledcmst
.I didn't think it would work with
systemd-networkd
, but it let me join the local wifi network without any issues, and it is in fact controlling the configuration ofsystemd-networkd
, as evidenced by its unit file:connman
appears to be a decent connection manager in its own right, with a CLI helper namedconnctl
- here's the identification of the technologies, and a sampling of its CLI monitor:But the GUI was what I was really after. Despite not looking all that slick, it actually appears to have access to quite a few more features than
NetworkManager
typically would:So, there you have it. Nice to know there's an alternative!
Yes, it is possible to use NetworkManager for one set of interfaces and networkd for another. As documented at https://netplan.io/reference/:
While not explained there, if you have multiple interfaces of each type, it is possible to have a separate file for each renderer and declare the
renderer:
at the top level within the file so that you don't have to repeat it for each interface.