Demora algum tempo até que o gerente de rede decida que a conexão não está voltando e só então tentará se reconectar. Acho que wicd
é mais "responsivo" do que NetworkManager
- eu consideraria mudar para isso.
Você também pode executar um script de segundo plano que monitora a intensidade do sinal e força uma desconexão se o sinal ultrapassar um determinado nível. Uma vez desconectado, o seu gerenciador de rede normalmente se conectará a uma rede com sinal mais strong.
Exemplo de script usando iw(1)
do pacote iw :
#!/bin/bash
IFACE="wlan0"
LIMIT="-75"
while true; do
signal=$(iw $IFACE link | grep signal | awk '{print $2}')
[ $signal ] && [ $signal -lt $LIMIT ] && iw $IFACE disconnect
echo $signal
sleep 1
done