Posture monitoring tool for Linux — webcam slouch detection with screen overlay
Project description
dorso-linux
Posture monitoring for Linux. Uses your webcam to detect slouching and overlays a progressive red glow on your screen as a reminder to sit straight.
Installation
pip install dorso-linux
System dependencies
GTK4 and PyGObject are required:
# Fedora / RHEL
sudo dnf install gtk4-devel python3-gobject
# Ubuntu / Debian
sudo apt install libgtk-4-dev python3-gi gir1.2-gtk-4.0
Usage
dorso
On first launch, sit in your best posture and click Calibrate. Monitoring starts automatically.
When you slouch, a red glow appears on your screen edges. Sit straight and it fades away.
Features
- Real-time posture detection via webcam (MediaPipe PoseLandmarker)
- Progressive screen overlay — glow, border, or solid color, with adjustable intensity
- Click-through — keyboard and mouse work normally through the overlay
- System tray with posture status and quick controls
- Analytics dashboard — daily score, 7-day chart, slouch stats
- Auto-pause on screen lock
- Dark/light theme support
- Works on GNOME Wayland, X11, Sway, and Hyprland
Configuration
Settings UI is accessible from the tray icon. Config stored in ~/.config/dorso/config.toml:
warning_mode = "glow" # glow, border, solid, none
detection_mode = "responsive" # responsive (~10fps), balanced (~4fps), performance (~2fps)
intensity = 1.0 # 0.5 = gentle, 2.0 = harsh
slouch_sensitivity = 0.03 # lower = more sensitive
warning_onset_delay = 0.0 # seconds before warning appears
camera_id = 0 # camera device index
How it works
- OpenCV captures webcam frames at adaptive rates
- MediaPipe PoseLandmarker extracts nose position and face width
- Slouch detection compares nose Y to your calibrated baseline (5-frame smoothing)
- A pure-function posture engine applies hysteresis to avoid flicker
- The overlay renders via GNOME Shell extension, Layer Shell, or transparent GTK4 window
Requirements
- Python 3.11+
- Linux with GTK4
- Webcam
Links
- Source code
- Issue tracker
- GNOME Shell extension (recommended for multi-monitor GNOME)
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 Distribution
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 dorso_linux-0.1.2.tar.gz.
File metadata
- Download URL: dorso_linux-0.1.2.tar.gz
- Upload date:
- Size: 70.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec8205b9a762c6e4b7e786674be7050c9390211e9de8a55f90416ace76b30cc2
|
|
| MD5 |
13eced705f56374209aece65a4802b04
|
|
| BLAKE2b-256 |
a41412226b84905c5a4599be32b2611e75e7bffc86d4e9def10a8e2da4a61d58
|
Provenance
The following attestation bundles were made for dorso_linux-0.1.2.tar.gz:
Publisher:
publish.yml on Gheop/dorso-linux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dorso_linux-0.1.2.tar.gz -
Subject digest:
ec8205b9a762c6e4b7e786674be7050c9390211e9de8a55f90416ace76b30cc2 - Sigstore transparency entry: 1134883160
- Sigstore integration time:
-
Permalink:
Gheop/dorso-linux@96ce5e8eb4b3cf373d795eac0680e6030f687154 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Gheop
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@96ce5e8eb4b3cf373d795eac0680e6030f687154 -
Trigger Event:
release
-
Statement type:
File details
Details for the file dorso_linux-0.1.2-py3-none-any.whl.
File metadata
- Download URL: dorso_linux-0.1.2-py3-none-any.whl
- Upload date:
- Size: 82.5 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 |
40d77815baebaa2434f225d290f74ca3c963bb594b1b1112491021711acb1ab6
|
|
| MD5 |
717194f8e3f2506254ec092f92eaa097
|
|
| BLAKE2b-256 |
35f6d3a13b5e4bbf3bc978dbfe6b78db57b7904f96d65c4dbacb2ad8f41457a1
|
Provenance
The following attestation bundles were made for dorso_linux-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on Gheop/dorso-linux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dorso_linux-0.1.2-py3-none-any.whl -
Subject digest:
40d77815baebaa2434f225d290f74ca3c963bb594b1b1112491021711acb1ab6 - Sigstore transparency entry: 1134883190
- Sigstore integration time:
-
Permalink:
Gheop/dorso-linux@96ce5e8eb4b3cf373d795eac0680e6030f687154 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/Gheop
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@96ce5e8eb4b3cf373d795eac0680e6030f687154 -
Trigger Event:
release
-
Statement type: