Skip to content

Bundled libraries

Mixlar Control ships a fixed Python 3.13 runtime on Windows. Your plugin runs inside that runtime, not inside a virtual environment you control — so the set of importable packages is fixed too. This page lists everything you can import, and nothing else.

The full Python standard library is always available. Commonly used modules in plugins include threading, time, datetime, json, os, sys, subprocess, socket, urllib, http, ctypes, winreg, math, random, re, pathlib, tempfile, shutil, base64, hashlib, hmac, uuid, collections, functools, itertools, webbrowser, queue, struct, wave, csv, sqlite3, and logging.

These packages are pre-installed in the app’s runtime. The table shows the import name (what you actually type), the PyPI package it comes from, and what it’s for.

import package use
requests requests HTTP GET/POST to any web API
websocket websocket-client WebSocket clients (OBS, Logitech G HUB, etc.)
pynput pynput send keystrokes / mouse input; global hotkeys
PyQt5 PyQt5 Qt widgets for settings and macro-editor UIs (QLineEdit, QCheckBox, QComboBox, QLabel, …)
qtawesome qtawesome Font Awesome icons in Qt (fa5s.* names, also used for plugin_icon)
comtypes comtypes Windows COM access (audio sessions, SMTC internals)
pycaw pycaw Windows Core Audio — per-app volume, mute, device enumeration
mido mido build and send MIDI messages (note on/off, control change)
rtmidi python-rtmidi mido’s backend — actually opens the MIDI ports
serial pyserial talk to other hardware over a serial port
psutil psutil CPU / RAM / disk / network / process stats
GPUtil GPUtil NVIDIA GPU load, temperature, memory
cpuinfo py-cpuinfo CPU model name / frequency details
keyring keyring store secrets in Windows Credential Manager
PIL Pillow load / resize / convert images (feeds push_widget_image)
numpy numpy arrays and math (audio, image, or data processing)
winrt winrt-runtime + Windows.Media.Control + Windows.Storage.Streams Windows SMTC — now-playing title/artist/art from any media app
yfinance yfinance stock / index quotes
curl_cffi curl_cffi browser-impersonating HTTP (yfinance’s backend; useful against anti-bot sites)
syncedlyrics syncedlyrics fetch synced song lyrics
qrcode qrcode generate QR codes (device pairing, links)
packaging packaging parse and compare version strings

Don’t confuse this runtime with the Mixlar CLI. The CLI is a separate local toolchain you install on your own machine to scaffold, validate, pack, sign, and publish plugins — it can depend on whatever packages it likes, because it never ships to the end user. The table above is strictly about what code running inside a plugin, inside Mixlar Control can import.

  • Macro actions (execute_macro_step) and slider modes (handle_slider_value) run on a background thread — a good place to reach for requests, pynput, mido, serial, or pycaw. See the Macro actions and Sliders pages.
  • Device widgets are fed live data with push_widget_data / push_widget_image, commonly sourced from psutil, GPUtil, cpuinfo, winrt, or yfinance polled on a background thread. See Widgets: data & events.
  • Settings panels (build_settings_ui) are built with PyQt5 widgets and qtawesome icons. See Settings.

If a library you need isn’t on this list, there’s no workaround for shipping it inside the app runtime — build against the stdlib and the packages above, or reach the functionality over HTTP/WebSocket/serial with requests, websocket, or serial instead.