Somewhat hacky (though possible) way of doing it outside of NetworkManager: use NetworkManager's DBus API to watch for connecting to a wireless network. Once a connection is made, try and hit an external page and detect if there's a captive portal. If not, do nothing. If there is, then prompt the user to sign in.
Somewhat hacky (though possible) way of doing it outside of NetworkManager: use NetworkManager's DBus API to watch for connecting to a wireless network. Once a connection is made, try and hit an external page and detect if there's a captive portal. If not, do nothing. If there is, then prompt the user to sign in.