Compare commits

4 Commits
Author SHA1 Message Date
swaits 1ba0e698cb chore: repoint URLs at git.swaits.com and bump for release
Rewrites remaining github.com / git.sr.ht references to git.swaits.com,
translating GitHub URL shapes to Gitea's (/blob/<ref>/ -> /src/branch/<ref>/,
/tree/<tag> -> /src/tag/<tag>, /actions/workflows/X -> /actions?workflow=X,
/edit/ -> /_edit/).

Left pointing at GitHub on purpose: pull-request links (PRs were not migrated)
and GitHub-only surfaces Gitea lacks (security advisories, discussions).
2026-08-31 17:58:38 -06:00
swaits 4e986bdd8c chore: point repository at git.swaits.com 2026-08-31 17:19:23 -06:00
swaits 4d728e2712 chore: bump version to 0.1.2 2026-04-07 13:12:27 -06:00
swaits f0fa2866f2 fix: remove auto-exit timer and smooth cursor tracking
Remove the 10-second display timer so the overlay runs until toggled
off. Shrink the cursor input hole from 512px to 48px for near-pixel-
perfect tracking instead of chunky jumps.
2026-04-07 13:10:24 -06:00
6 changed files with 26 additions and 20 deletions

No files matched your search

+15
View File
@@ -1,5 +1,20 @@
# Changelog
## 0.1.2 (2026-04-07)
### Bug Fixes
- Decouple input passthrough hole from shader cursor avoidance radius
- Small constant-size input hole (48px) for click passthrough
- Shader cursor avoidance tracks independently with smooth updates
## 0.1.1 (2026-04-07)
### Bug Fixes
- Remove 10-second auto-exit timer; overlay now runs until toggled off
- Smooth cursor tracking by reducing input hole from 512px to 48px
## 0.1.0 (2026-04-07)
Initial release.
Generated
+1 -1
View File
@@ -727,7 +727,7 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
[[package]]
name = "ringa"
version = "0.1.0"
version = "0.1.2"
dependencies = [
"anyhow",
"bytemuck",
+3 -3
View File
@@ -1,11 +1,11 @@
[package]
name = "ringa"
version = "0.1.0"
version = "0.1.3"
edition = "2021"
license = "MIT"
description = "GPU-rendered ring light overlay for Wayland"
repository = "https://github.com/swaits/ringa"
homepage = "https://github.com/swaits/ringa"
repository = "https://git.swaits.com/swaits/ringa"
homepage = "https://git.swaits.com/swaits/ringa"
readme = "README.md"
keywords = ["wayland", "ring-light", "overlay", "wgpu", "camera"]
categories = ["command-line-utilities", "multimedia"]
+1 -1
View File
@@ -16,7 +16,7 @@ GPU-rendered ring light overlay for Wayland. Simulates a monitor-mounted ring li
### From source
```sh
git clone https://github.com/swaits/ringa.git
git clone https://git.swaits.com/swaits/ringa.git
cd ringa
cargo install --path .
```
+3 -12
View File
@@ -10,7 +10,6 @@ use lock::ToggleResult;
use render::GpuRenderer;
use wayland::{OverlayEvent, WaylandBackend};
const DISPLAY_DURATION: Duration = Duration::from_secs(10);
const FRAME_INTERVAL: Duration = Duration::from_millis(16);
fn main() -> Result<()> {
@@ -37,19 +36,16 @@ fn main() -> Result<()> {
color,
)?;
// Initial cursor offscreen — will update when pointer enters ring zone.
let mut cursor_x = -10000.0_f64;
let mut cursor_y = -10000.0_f64;
renderer.render(cursor_x, cursor_y)?;
let start = Instant::now();
let mut last_draw = Instant::now();
let mut dirty = false;
loop {
let elapsed = start.elapsed();
if elapsed >= DISPLAY_DURATION || lock::should_exit() {
if lock::should_exit() {
break;
}
@@ -59,13 +55,10 @@ fn main() -> Result<()> {
dirty = false;
}
let remaining = DISPLAY_DURATION - elapsed;
let poll_timeout = if dirty {
FRAME_INTERVAL
.saturating_sub(last_draw.elapsed())
.min(remaining)
FRAME_INTERVAL.saturating_sub(last_draw.elapsed())
} else {
remaining
Duration::from_secs(1)
};
let event = match wl.next_event(poll_timeout)? {
@@ -77,8 +70,6 @@ fn main() -> Result<()> {
OverlayEvent::CursorMoved(x, y) => {
cursor_x = x;
cursor_y = y;
// Punch a passthrough hole at the new cursor position so
// clicks go to the desktop, then re-render the shader.
wl.update_cursor_hole(cursor_x, cursor_y)?;
dirty = true;
}
+3 -3
View File
@@ -25,9 +25,9 @@ use raw_window_handle::{
RawDisplayHandle, RawWindowHandle, WaylandDisplayHandle, WaylandWindowHandle,
};
/// Size of the passthrough hole around the cursor. Should be large enough
/// that normal mouse movement stays within the hole between frames.
const CURSOR_HOLE_SIZE: i32 = 512;
/// Size of the passthrough hole around the cursor. Small = more frequent
/// pointer events = smoother tracking. Clicks land inside this hole.
const CURSOR_HOLE_SIZE: i32 = 48;
pub enum OverlayEvent {
Close,