Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JoyConBattery

A native macOS menu bar app that detects two Nintendo Switch Joy-Con controllers over Bluetooth and displays the battery level of each one.

The app only matches devices with the following identifiers:

Device Vendor ID Product ID
Left Joy-Con 0x057E 0x2006
Right Joy-Con 0x057E 0x2007

When connected, the app selects standard report mode 0x30 to retrieve the battery status. It does not activate vibration or interpret or display button, stick, accelerometer, or gyroscope data.

Requirements

  • An Apple Silicon Mac.
  • Xcode or Command Line Tools compatible with the installed macOS version.
  • The Joy-Con controllers paired under System Settings > Bluetooth.

First, verify that the development tools are available:

xcode-select -p
swift --version
xcrun --sdk macosx --show-sdk-path

If Xcode is installed but not selected, select its path (adjust the name if you are using a beta version):

sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer

You can also use a specific installation without changing the global selection:

export DEVELOPER_DIR=/Applications/Xcode-beta.app/Contents/Developer

Build the app

From the repository root:

./scripts/build-app.sh

This creates JoyConBattery.app in the project root.

Install and run

  1. Drag JoyConBattery.app into the Applications folder.
  2. Open Applications > JoyConBattery.
  3. If macOS requests access to input devices, grant permission.
  4. Connect the Joy-Con controllers from System Settings > Bluetooth.

The menu bar will display something like:

[icon] L 75% · R 50%

When a controller is disconnected, is displayed. While the app waits for the first battery report, is displayed. Click the menu bar item to show the details:

Left Joy-Con
Battery: medium
Status: discharging
Connected
[Disconnect]

The Disconnect button only closes the Bluetooth connection for the Joy-Con shown in that panel. The controller remains paired and can reconnect normally.

The app also provides:

  • Disconnect both Joy-Con controllers to close both connections at once.
  • Open at Login to keep the monitor available after signing in to macOS.
  • A notification when each Joy-Con connects, including its first battery reading.
  • One-time alerts when the battery reaches low (50%), critical (25%), and empty (0%).

To keep the app always available, enable Open at Login from its menu. If macOS requires additional confirmation, authorize it under System Settings > General > Login Items & Extensions. The app does not appear in the Dock while running; close it by selecting Quit JoyConBattery from the menu bar.

Run during development

You can also launch it directly from the project:

swift run joycon-battery

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages