1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2026-01-09 21:38:32 +08:00

Compare commits

...

4 Commits

Author SHA1 Message Date
Paul Frederiksen
e99259cc54
Merge 897b56045d into 1b4497fc8f 2025-12-06 23:41:00 -08:00
Paul Frederiksen
897b56045d Add validation to btrestart function
- Track old PID before killing bluetoothd
- Wait for process to actually stop (5s timeout)
- Wait for process to restart (10s timeout)
- Verify new PID is different from old PID
- Provide clear success/failure feedback
- Handle edge cases (no process, restart failure)
- Return proper exit codes (0=success, 1=failure)
- Maintain simplicity while adding robustness

This ensures users know if the restart actually worked.
2025-10-07 16:45:32 -07:00
Paul Frederiksen
23f825ff64 Simplify btrestart to use pkill bluetoothd approach
- Replace complex launchctl approach with simple pkill bluetoothd
- macOS automatically restarts bluetoothd when killed
- Much more maintainable and future-proof
- Reduces from 6 commands to 1 command
- Less prone to OS changes and service discovery issues
- Cleaner, more readable implementation

Resolves #10934
2025-10-07 16:33:28 -07:00
Paul Frederiksen
cb932fe914 Fix btrestart command for macOS Monterey 12.2.1+
- Replace deprecated kextunload/kextload approach with launchctl
- Kill audio and bluetooth processes before restarting services
- Use launchctl to restart bluetooth and audio services
- Add error handling with 2>/dev/null || true for robustness
- Fixes issue where kext is 'in use or retained' on modern macOS

Resolves #10934
2025-10-07 16:24:07 -07:00

View File

@ -19,8 +19,44 @@ alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false &
# Bluetooth restart
function btrestart() {
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
echo "Restarting Bluetooth daemon..."
# 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() {