- JavaScript 96.1%
- Python 1.9%
- Shell 1.1%
- Makefile 0.8%
- Dockerfile 0.1%
| docs | ||
| po | ||
| src | ||
| tests | ||
| tools | ||
| types | ||
| .editorconfig | ||
| .gitignore | ||
| CHANGELOG.md | ||
| GNOME-Shell-Motion-Dots.code-workspace | ||
| LICENSE | ||
| Makefile | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Motion Dots
A GNOME Shell extension for passengers who feel motion sick while reading or watching in a car, bus or train. It shows small dots along the edges of the screen that move with the vehicle, so what you see matches what your body feels.
For passengers only. Never use it while driving.
How it works
Motion sickness often comes from a mismatch: your inner ear feels the vehicle turn, speed up and brake, while your eyes see a still screen. Motion Dots reads the laptop's accelerometer and slides a field of dots the way loose objects would move: speeding up moves them down the screen, braking moves them up, and a right turn moves them left. When the vehicle holds a steady speed, the dots settle back home.
The laptop has no gyroscope, so a slow tilt of the laptop and a long, gentle push of the vehicle look the same to it. Motion Dots slowly relearns what "level" is, which fades very long turns, and Re-level Now in the Quick Settings menu clears a tilt at once. docs/motion-model.md explains the details.
What you need
- GNOME Shell 50 or 51, on Wayland.
- A laptop or convertible with an accelerometer that Linux exposes through IIO. Most convertibles have one, and so do many laptops that rotate their screen.
ls /sys/bus/iio/devices/*/in_accel_x_rawlists them.
Without an accelerometer you can still try the extension with a simulated ride.
Install
Once Motion Dots is on extensions.gnome.org, install it from there, or from the Extension Manager app.
To install from source:
git clone https://git.lalonde.me/matth/gnome-shell-motion-dots.git
cd gnome-shell-motion-dots
make install
Then log out and back in, and run gnome-extensions enable motion-dots@matth.lalonde.me.
Use
Turn the dots on and off with the Motion Dots toggle in Quick Settings. Its subtitle says which sensor is in use, or what is wrong. The toggle's menu has a Sensitivity slider, Re-level Now, and a link to the settings.
The settings window has four pages:
- General: which screens show dots (the laptop screen by default), hiding the dots when the ride is steady, over fullscreen windows, or during screen recordings, and resetting everything to the defaults.
- Appearance: where the dots sit (a border on all four edges, the two sides only, or a deeper field), their spacing, size and opacity, and their style. Adaptive dots turn lighter over dark content and darker over light content; Color dots are one colour of your choice.
- Motion: how far and how fast the dots move, a dead zone for small jiggles, reversing the direction, the pattern, and optional depth cues for speeding up and braking. Steady keeps the dots in rows; Lively starts with a few dots along each edge and adds smaller, drifting ones from the edges as the vehicle pushes harder.
- Sensor: which accelerometer to use, a simulated ride, and a live readout of what the sensor reports and where the dots would go.
Adaptive dots turn light over a dark window:
The Lively pattern partway through a push, with smaller dots spreading in from the edges:
High contrast makes the dots fully opaque. Reduced Motion in the accessibility settings turns off the depth cues and keeps the pattern steady, but the dots still slide, since they are an aid rather than decoration.
Sources
- The laptop's accelerometer (the default). With the laptop open, Motion Dots uses the sensor in the keyboard half, which sits still on a lap or table. With the laptop folded back as a tablet, it uses the sensor behind the screen. docs/sensors.md covers how sensors are found and picked.
- A simulated ride, for trying the extension at a desk: a city drive, a country road, a highway trip, or a calibration ride that makes one clear move at a time.
Privacy
Motion Dots doesn't use the network. It reads the accelerometer from files under /sys and never writes to them. Adaptive dots copy the part of the screen under them into a texture on the graphics card to pick a shade; nothing is read back, saved or sent anywhere. Debug logging, which is off by default, writes sensor statistics to the system journal.
Troubleshooting
| The subtitle reads | What it means |
|---|---|
| No Accelerometer | No IIO accelerometer was found. Try the simulated ride on the Sensor page. |
| Sensor Busy | Another program holds the sensor. Motion Dots tries again every 3 seconds, and after three tries moves to another sensor if there is one. |
| No Sensor Data | The sensor stopped sending readings. The dots hide after two seconds, and Motion Dots looks again after 1, 5 and then every 30 seconds. |
| Sensor Disconnected | The sensor went away. Motion Dots looks for it the same way. |
| Sensor Error | Reading the sensor failed. Motion Dots tries again, and stops after five errors in a row until you turn the dots off and on, change a sensor setting, or wake the computer from sleep. |
| Not Available in Portrait | The screen content is turned a quarter turn while the laptop isn't folded back as a tablet. Left and right on the screen then run up and down, with no level direction for the dots to slide along, so they stay hidden. |
| Paused | The computer is going to sleep or the screens are off. |
If the dots move the wrong way, check the Accelerometer row on the Sensor page: its subtitle says where the sensor's axes come from. "Axes unknown, assumed upright" means the system didn't say how the sensor is mounted, and it may be mounted turned. Reverse Direction on the Motion page flips the dots as a last resort; please also report your laptop model.
Logs are in the system journal: journalctl -f -o cat /usr/bin/gnome-shell | grep -F '[Motion Dots]'.
Development
See docs/development.md for setup, the everyday commands and the code rules, and docs/architecture.md for how the code fits together.
Translations
Motion Dots is translated into French, German, Portuguese (Brazil and Portugal), Spanish and Simplified Chinese. These first translations are drafts that native speakers are still reviewing; corrections and new languages are welcome. docs/release.md explains how to add or update one.
License
GPL-3.0-or-later. See LICENSE.




