Skip to main content

CLI tool for Logitech Options+ device management on macOS

Project description

logi-cli

CLI tool for Logitech Options+ device management on macOS.

Communicates directly with the logioptionsplus_agent daemon via its Unix socket IPC protocol. No GUI needed — the agent runs independently as a system LaunchAgent.

Requirements

  • macOS with Logi Options+ installed (the agent must be running)
  • Python 3.9+
  • Tested with MX Master 3S

Install

pip install -e .

Or just run directly:

python3 logi.py status

Shell completion

# zsh
source completions/logi.zsh

# bash
source completions/logi.bash

Usage

Device status

logi status
MX Master 3S (Wireless Mouse MX Master 3S)
  State:      ACTIVE
  Connection: BLE
  Firmware:   22.0.3
  Battery:    55% [GOOD]
  Pointer:    speed=0.44 (~3632 DPI)
  SmartShift: mode=RATCHET sensitivity=82 enabled=True
  Scroll:     speed=0.62 dir=STANDARD smooth=False
  DPI Range:  200-8000 (step 50)

Configure settings

logi set dpi 1600                    # Set DPI
logi set speed 0.5                   # Pointer speed (0.0-1.0)
logi set smartshift free             # SmartShift: on/off/free
logi set smartshift-sensitivity 50   # SmartShift sensitivity (0-100)
logi set scroll-speed 0.8            # Scroll wheel speed
logi set scroll-direction natural    # Scroll direction: natural/standard

Button remapping

logi buttons                         # Show current assignments
logi button back undo                # Remap to preset action
logi button back "Cmd+Z"             # Remap to custom keystroke
logi button back "Ctrl+Shift+A"      # Any modifier combo
logi button back back                # Restore default

Available buttons: middle, back, forward, gesture

Available actions: back, forward, undo, redo, copy, paste, cut, screenshot, emoji, search, desktop, mission-control, launchpad, smart-zoom, close-tab, do-not-disturb, lookup, switch-apps, dictation

Per-app profiles

logi buttons --profile safari        # View Safari-specific buttons
logi button back undo --profile zoom # Set button for Zoom only
logi profiles                        # List all profiles

Config backup/restore

logi export config.json              # Export all settings
logi import config.json              # Restore settings

Thumb wheel

logi set thumb-direction natural     # Thumb wheel direction
logi set thumb-smooth off            # Thumb wheel smooth scrolling

Declarative config

logi apply config.toml               # Apply all settings from TOML file
logi daemon config.toml              # Auto-apply on device connect

See example.toml for the config format.

Real-time monitoring

logi watch                           # Watch device events (Ctrl+C to stop)

Gesture button

logi gesture window                  # Window navigation (default)
logi gesture media                   # Media control (play/pause, volume, track)
logi gesture pan                     # Pan and smart zoom
logi gesture zoom                    # Zoom and rotate
logi gesture app                     # App navigation (Mission Control, Launchpad)
logi gesture custom                  # Custom gesture (configurable)

Easy Switch & Flow

logi switch                          # Show Easy Switch channels
logi flow                            # Show Logitech Flow status

Permissions & Reset

logi permissions                     # Check macOS security permissions
logi reset                           # Reset to factory defaults (with confirmation)
logi reset -y                        # Skip confirmation

Multi-device

logi -d mx status                    # Select device by name
logi -d dev00000000 set dpi 1600     # Select device by ID

System info

logi info                            # Agent version, OS, etc.

Raw API access

logi raw GET /permissions
logi raw GET /battery/dev00000000/state
logi raw SET /mouse/dev00000000/pointer_speed --payload '{"active":{"value":0.5}}'

Disclaimer

This is an unofficial, community-developed tool. It is not affiliated with, endorsed by, or associated with Logitech in any way. "Logitech", "Logi Options+", and "MX Master" are trademarks of Logitech International S.A. Use at your own risk.

Acknowledgements

  • logiops — Unofficial Logitech HID++ driver for Linux. Inspired the idea of a CLI-first approach to Logitech device management. logiops communicates directly via HID++ protocol; logi-cli takes a different approach by talking to the Options+ agent via its IPC socket.

Protocol

See PROTOCOL.md for the reverse-engineered IPC protocol documentation.

83 extracted protobuf definitions are in extracted_protos/.

Architecture

┌──────────┐     Unix Socket (JSON)     ┌──────────────────────┐
│ logi CLI ├────────────────────────────►│ logioptionsplus_agent│
└──────────┘  /tmp/logitech_kiros_agent  │  (system daemon)     │
                                         │  RunAtLoad, KeepAlive│
                                         └──────────┬───────────┘
                                                     │ HID++ / BLE
                                                     ▼
                                              ┌──────────────┐
                                              │ MX Master 3S │
                                              └──────────────┘

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logi_cli-0.1.1.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logi_cli-0.1.1-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file logi_cli-0.1.1.tar.gz.

File metadata

  • Download URL: logi_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for logi_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2c7f26cf70111c29f655f1d025aa0ead5b72206c0063e7423dc122c995946148
MD5 1bbdbf6dce61ea760ab78c123e6abec5
BLAKE2b-256 1108b3a99300cc87635e56abf61ced4ddd5eb90c3ec7ffbb55a293ea26cd2886

See more details on using hashes here.

File details

Details for the file logi_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: logi_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for logi_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d425a8b2cf61f903d57f6cbfc58a2af3c2dea0e7414c055b4b8f8be0f0239b9b
MD5 00f5098d924fea1c70930d57f4663ba7
BLAKE2b-256 e110cfb1f594447e37a5a03923911ad8d7b4bc8ba4db22f23bfc5d272f1cf202

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page