diff --git a/plugins/macos/macos.plugin.zsh b/plugins/macos/macos.plugin.zsh index e0bfd045a..362e4c280 100644 --- a/plugins/macos/macos.plugin.zsh +++ b/plugins/macos/macos.plugin.zsh @@ -20,8 +20,43 @@ alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false & # Bluetooth restart function btrestart() { echo "Restarting Bluetooth daemon..." - sudo pkill bluetoothd - echo "Bluetooth daemon restarted." + + # Get the current bluetoothd PID before killing + local old_pid=$(pgrep bluetoothd) + + if [ -n "$old_pid" ]; then + echo "Stopping bluetoothd (PID: $old_pid)..." + sudo pkill bluetoothd + + # Wait for the process to actually stop + local count=0 + while pgrep -f "bluetoothd" >/dev/null 2>&1 && [ $count -lt 10 ]; do + sleep 0.5 + count=$((count + 1)) + done + + # Wait for bluetoothd to restart + echo "Waiting for bluetoothd to restart..." + count=0 + while ! pgrep bluetoothd >/dev/null 2>&1 && [ $count -lt 20 ]; do + sleep 0.5 + count=$((count + 1)) + done + + # Check if it restarted successfully + local new_pid=$(pgrep bluetoothd) + if [ -n "$new_pid" ] && [ "$new_pid" != "$old_pid" ]; then + echo "✓ Bluetooth daemon restarted successfully (new PID: $new_pid)" + elif [ -n "$new_pid" ] && [ "$new_pid" = "$old_pid" ]; then + echo "⚠ Bluetooth daemon may not have restarted (same PID: $new_pid)" + else + echo "✗ Bluetooth daemon failed to restart" + return 1 + fi + else + echo "No bluetoothd process found to restart" + return 1 + fi } function _omz_macos_get_frontmost_app() {