Introduction:
Before you get started, seriously consider making a timeshift (or other) backup first. That way if you do not like the results of the changes you have made then you can easily roll the changes back. Backups are an excellent precaution, and should always be performed before making any major changes to your system.
How to install ConnMan
Switching from Network Manager to ConnMan:
This is a general guide to replacing Network Manager with ConnMan. This guide explains how to setup a WiFi connection with ConMan. ConnMan can of course also be used with a LAN connection, but is more widely used with WiFi.
Start the process by installing ConnMan alongside NetworkManager.
If you require Bluetooth and VPN functionality make sure you have bluez and openvpn installed as well.
Install connman:
sudo pacman -S connman
There are various GUI frontends for ConnMan. The one I recommend is cmst (see the ConnMan Archwiki link for other GUI alternatives).
Install cmst:
sudo pacman -S cmst
Enable/Start ConnMan and temporarily shutdown Network Manager with these commands:
sudo systemctl enable connman.service
sudo systemctl start connman.service
sudo systemctl stop NetworkManager
sudo systemctl daemon-reload
cmst &
Once you have started cmst you will need to change various cmst settings to enable your WiFi connection. CMST is very different than Network Manager, so it may take you a bit to figure out how to get your connection set up properly. The following recommendations are only my own personal cmst setting preferences. Your WiFi connection may require different settings to connect properly.
Ensure you have the cmst tray icon set to be "Shown" in your systray option settings.
Then, right click on the cmst system tray icon:
Select "Technologies", and then deselect "Wired" and ensure WiFi is selected on the menu.
Then, open the cmst control panel by left clicking on the cmst tray icon.
In the cmst Status tab:
Be sure your Wifi's "Power" button is in the On position.
Under your Wifi's "ID:Password" field you need to press the ID:Pass button and then enter your Wifi password.
In the cmst Wireless tab:
Click on your prefered connection's name from the list of those available.
Then click on the Connect button.
In the cmst Preferences tab, enable the following settings:
Use Start Options ---> Start Minimized
Retain state
Enable ToolTips (Interface)
Enable System Tray Popups
Notification Daemon
Retry Failed Connection
Enable Autostart
Hopefully you are now connected and you may now close the cmst configuration page.
Once you have connman and cmst installed and working properly you can disable Network Manager in a more permanent manner.
Mask (completely disable) Network Manager:
sudo systemctl mask NetworkManager.service
Mask (completely disable) Network Manager dispatcher:
sudo systemctl mask NetworkManager-dispatcher
If you have the NetworkManager-wait-online.service enabled, then mask it as well:
sudo systemctl mask NetworkManager-wait-online.service
Restart your computer after making changes to the services.
If you want to switch back to Network Manager again in the future the changes are easily reversible. Running any of the above commands you used again with "unmask" instead of "mask" will re-enable the NetworkManager services. Then simply disable or uninstall connman and cmst and your system should be returned to its original state.
For more in depth information on Connman refer to the Archwiki:
https://wiki.archlinux.org/index.php/ConnMan
Optional step: replace wpa_supplicantant with iwd.
IWD is the new replacement for wpa_supplicantant (now used by default in Arch Linux). ConnMan works well in conjunction with IWD. You can easily test iwd in place of wpa_supplicant by following the steps below:
sudo pacman -S iwd
sudo systemctl stop wpa_supplicant
sudo systemctl mask wpa_supplicant
sudo systemctl enable --now iwd.service
sudo systemctl daemon-reload
sudo systemctl restart connman.service
IWD is not required to use ConnMan. It may be used with either ConnMan or Network Manager to replace the wpa_supplicant.
If you would like to return to using wpa_supplicant simply reverse the process:
sudo systemctl stop iwd.service
sudo systemctl mask iwd.service
sudo systemctl unmask wpa_supplicant
sudo systemctl enable --now wpa_supplicant
sudo systemctl daemon-reload
sudo systemctl start connman.service
You can also simply restart your computer to be sure all changes have been applied.