Skip to main content

Vehicle Motion Cues for Linux — reduces motion sickness while using a laptop in a vehicle

Project description

motion-cues

Animated peripheral dots that reduce motion/transport sickness while using a laptop in a vehicle — a Linux port of Apple's Vehicle Motion Cues (iOS 18 / macOS 15).

The overlay is fully click-through and focus-free: you see the dots at the screen edges and can keep working normally underneath.

How it works

Motion sickness occurs when the vestibular system (inner ear) detects vehicle motion but the eyes, focused on a static screen, do not. The dots appear in the peripheral visual field (~80 px from each edge) and drift to match vehicle motion, providing the optic-flow signal the peripheral visual system expects and collapsing the sensory conflict.

Dot direction mirrors Apple's convention:

Vehicle motion Dot direction
Accelerate drift down
Brake drift up
Turn left drift right
Turn right drift left

Installation

pip install motion-cues

Requires Python ≥ 3.9, Linux + X11, and PyQt6 (pulled in automatically). Does not require a compositor.

Usage

motion-cues

Or run directly:

python -m motion_cues

A blue dot appears in the system tray. Right-click it to inject simulated motion impulses (useful when stationary) or to quit. Press Ctrl-C in the terminal to quit as well.

Requirements

  • Linux with X11 (Wayland support is not yet implemented)
  • libX11 and libXext system libraries (present on any X11 system)
  • PyQt6 ≥ 6.0 (or PyQt5 ≥ 5.15 as fallback)

Technical notes

The overlay window uses X11 ShapeBounding (setMask) to cut the window to only the dot pixels, so there is no opaque background anywhere — no compositor required. Mouse events are discarded via X11 ShapeInput (empty region), so clicks always fall through to the desktop.

License

MIT

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

motion_cues-0.2.0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file motion_cues-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: motion_cues-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for motion_cues-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b6e2163ddf563fadec90661ba1904475a10e1abcf3c20586177fde273633507c
MD5 1f056eef147e3a3da5842e8b58236a19
BLAKE2b-256 07085c62132ec95f77b3c35b4b4169b3cc78d61bbcce1b90c67f088b31240015

See more details on using hashes here.

Provenance

The following attestation bundles were made for motion_cues-0.2.0-py3-none-any.whl:

Publisher: pypi-publish.yml on monperrus/motion-cues

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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