juno

Warning

The juno package is a work in progress, only available in Juno 4.0 — which is itself currently in beta. Public surfaces may change between releases until the API stabilises. The BETA badge next to each page title is a reminder that you are reading pre-stable documentation.

Pythonic iOS device APIs for Juno scripts.

The juno package gives Python scripts running inside Juno first-class access to iOS frameworks — clipboard, contacts, reminders, photos, sound, notifications, sharing, location, motion, the device itself, the keychain, and Bluetooth — without any of the boilerplate of bridging to ObjC by hand. Each submodule wraps a single iOS framework with a small, idiomatic Python surface (dataclasses, context managers, generators, with-blocks).

Typical usage:

from juno import clipboard, sound, bluetooth

clipboard.set_string("Hello from Python")

sound.play("/path/to/notification.wav")

for adv in bluetooth.scan(timeout=10):
    print(adv.name, adv.rssi)

Modules

  • juno.bluetooth — Core Bluetooth (central role) scan, connect, characteristic read/write/notify.

  • juno.clipboard — read / write the system pasteboard (text, URL, image bytes).

  • juno.contacts — read and write the device address book.

  • juno.device — device info (model, OS version, screen geometry, battery, haptics).

  • juno.keychain — store and retrieve secrets in the iOS keychain.

  • juno.location — one-shot location fixes and reverse-geocoding.

  • juno.motion — accelerometer / gyroscope / magnetometer / device-motion streams.

  • juno.notifications — schedule and cancel local user notifications.

  • juno.photos — pick photos from the user’s library; save bytes to the camera roll.

  • juno.reminders — read, add, complete, and delete EventKit reminders.

  • juno.sharing — present the system share sheet (UIActivityViewController).

  • juno.sound — fire-and-forget audio playback and a Player class for stateful control of a long-lived AVAudioPlayer.