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)
libX11andlibXextsystem 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6e2163ddf563fadec90661ba1904475a10e1abcf3c20586177fde273633507c
|
|
| MD5 |
1f056eef147e3a3da5842e8b58236a19
|
|
| BLAKE2b-256 |
07085c62132ec95f77b3c35b4b4169b3cc78d61bbcce1b90c67f088b31240015
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
motion_cues-0.2.0-py3-none-any.whl -
Subject digest:
b6e2163ddf563fadec90661ba1904475a10e1abcf3c20586177fde273633507c - Sigstore transparency entry: 1437382618
- Sigstore integration time:
-
Permalink:
monperrus/motion-cues@28eedb9b532b549e24195848874b6870a914ddf9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/monperrus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@28eedb9b532b549e24195848874b6870a914ddf9 -
Trigger Event:
push
-
Statement type: