warp-cli register
warp-cli connect
warp-cli status
warp-cli register
warp-cli connect
warp-cli status
warp-cli register
warp-cli connect
warp-cli status
/etc/NetworkManager/dispatcher.d/
/etc/NetworkManager/dispatcher.d/
/etc/NetworkManager/dispatcher.d/
sudo nano /etc/NetworkManager/dispatcher.d/99-warp-toggle
sudo nano /etc/NetworkManager/dispatcher.d/99-warp-toggle
sudo nano /etc/NetworkManager/dispatcher.d/99-warp-toggle
#!/bin/bash INTERFACE="$1"
STATUS="$2" # Trigger only when a connection is established
if [ "$STATUS" = "up" ]; then SSID=$(iwgetid -r) if [ "$SSID" = "home_wifi" ]; then echo "Connecting WARP for $SSID" warp-cli connect elif [ "$SSID" = "office_wifi" ]; then echo "Disconnecting WARP for $SSID" warp-cli disconnect else echo "Unknown network: $SSID β no action taken" fi
fi
#!/bin/bash INTERFACE="$1"
STATUS="$2" # Trigger only when a connection is established
if [ "$STATUS" = "up" ]; then SSID=$(iwgetid -r) if [ "$SSID" = "home_wifi" ]; then echo "Connecting WARP for $SSID" warp-cli connect elif [ "$SSID" = "office_wifi" ]; then echo "Disconnecting WARP for $SSID" warp-cli disconnect else echo "Unknown network: $SSID β no action taken" fi
fi
#!/bin/bash INTERFACE="$1"
STATUS="$2" # Trigger only when a connection is established
if [ "$STATUS" = "up" ]; then SSID=$(iwgetid -r) if [ "$SSID" = "home_wifi" ]; then echo "Connecting WARP for $SSID" warp-cli connect elif [ "$SSID" = "office_wifi" ]; then echo "Disconnecting WARP for $SSID" warp-cli disconnect else echo "Unknown network: $SSID β no action taken" fi
fi
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-warp-toggle
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-warp-toggle
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-warp-toggle
sudo systemctl restart NetworkManager
sudo systemctl restart NetworkManager
sudo systemctl restart NetworkManager
warp-cli status
warp-cli status
warp-cli status
echo "$(date): Connected to $SSID" >> /var/log/warp-toggle.log
echo "$(date): Connected to $SSID" >> /var/log/warp-toggle.log
echo "$(date): Connected to $SSID" >> /var/log/warp-toggle.log
case "$SSID" in "home_wifi") warp-cli connect ;; "office_wifi") warp-cli disconnect ;; *) echo "No rule for $SSID" ;;
esac
case "$SSID" in "home_wifi") warp-cli connect ;; "office_wifi") warp-cli disconnect ;; *) echo "No rule for $SSID" ;;
esac
case "$SSID" in "home_wifi") warp-cli connect ;; "office_wifi") warp-cli disconnect ;; *) echo "No rule for $SSID" ;;
esac - π Trusted WiFi (Home) β You may not need WARP
- β Public WiFi β You definitely want WARP
- π’ Office networks β Might conflict with VPN routing - Detect the current SSID
- Apply conditional logic
- Toggle WARP via CLI - Connect to home_wifi β WARP should connect
- Connect to office_wifi β WARP should disconnect - Requires iwgetid (usually part of wireless-tools)
- Dispatcher scripts run as root
- Some networks may block WARP traffic
- Avoid rapid toggling (WARP CLI is tolerant, but donβt spam it) - Always connect WARP by default
- Explicitly disable only on trusted networks - β‘ Event-driven β no polling loops
- πͺΆ Lightweight β no extra services
- π Extensible β plug in more automations - Auto-sync files on trusted networks
- Trigger backups only at home
- Change DNS / proxies dynamically