chore: add LICENSE, README, CHANGELOG, and publish metadata

Add MIT license, README with usage/install instructions and hotkey
binding examples, CHANGELOG for v0.1.0, and complete Cargo.toml
metadata (repository, homepage, keywords, categories). Remove unused
niri-ipc dependency.
This commit is contained in:
swaits committed 2026-04-07 12:30:37 -06:00
1 parent 421bd04339
commit 3ae2f9fd49
5 files changed
+127 -38

No files matched your search

+16
View File
@@ -0,0 +1,16 @@
# Changelog
## 0.1.0 (2026-04-07)
Initial release.
### Features
- GPU-rendered ring light overlay using wgpu/WGSL fragment shader
- Rounded rectangle SDF with gaussian glow falloff
- Full desktop input passthrough via dynamic `wl_region` cursor hole
- Cursor avoidance with rounded-square soft fade
- Color temperature support: presets (warm, cool, studio, daylight, golden) and custom Kelvin
- Toggle on/off via PID lock file and SIGUSR1 signaling
- Works on any wlroots-based Wayland compositor (Sway, Hyprland, niri, river, etc.)
- MangoHUD suppression for clean Vulkan overlay
Generated
-36
View File
@@ -345,12 +345,6 @@ dependencies = [
"hashbrown 0.16.1",
]
[[package]]
name = "itoa"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
[[package]]
name = "jni-sys"
version = "0.3.1"
@@ -498,16 +492,6 @@ dependencies = [
"jni-sys 0.3.1",
]
[[package]]
name = "niri-ipc"
version = "25.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12bd9eb4e437f5282ce853cf66837658379cb537b4b6bae687da59246005329a"
dependencies = [
"serde",
"serde_json",
]
[[package]]
name = "nix"
version = "0.29.0"
@@ -747,7 +731,6 @@ version = "0.1.0"
dependencies = [
"anyhow",
"bytemuck",
"niri-ipc",
"nix",
"pollster",
"raw-window-handle",
@@ -824,19 +807,6 @@ dependencies = [
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
dependencies = [
"itoa",
"memchr",
"serde",
"serde_core",
"zmij",
]
[[package]]
name = "shlex"
version = "1.3.0"
@@ -1396,9 +1366,3 @@ dependencies = [
"quote",
"syn",
]
[[package]]
name = "zmij"
version = "1.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+7 -2
View File
@@ -2,14 +2,19 @@
name = "ringa"
version = "0.1.0"
edition = "2021"
description = "Wayland ring light overlay"
license = "MIT"
description = "GPU-rendered ring light overlay for Wayland"
repository = "https://github.com/swaits/ringa"
homepage = "https://github.com/swaits/ringa"
readme = "README.md"
keywords = ["wayland", "ring-light", "overlay", "wgpu", "camera"]
categories = ["command-line-utilities", "multimedia"]
authors = ["Stephen Waits <steve@waits.net>"]
rust-version = "1.85"
[dependencies]
anyhow = "1.0"
bytemuck = { version = "1", features = ["derive"] }
niri-ipc = "25.11.0"
nix = { version = "0.29", features = ["signal", "process", "poll"] }
pollster = "0.4"
raw-window-handle = "0.6"
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Stephen Waits
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+83
View File
@@ -0,0 +1,83 @@
# ringa
GPU-rendered ring light overlay for Wayland. Simulates a monitor-mounted ring light by drawing a bright glowing border around your screen during video calls.
## Features
- **GPU-rendered** via wgpu/WGSL fragment shader -- smooth gaussian glow, no banding
- **Full desktop passthrough** -- clicks, scrolls, and keyboard input pass through to your desktop
- **Cursor avoidance** -- the ring fades near your mouse so you can see and interact with UI elements
- **Color temperature** -- pure white default, or warm/cool/custom Kelvin presets
- **Toggle on/off** -- bind to a hotkey; running it again kills the existing instance
- **Works on any wlroots-based Wayland compositor** (Sway, Hyprland, niri, river, etc.)
## Install
### From source
```sh
git clone https://github.com/swaits/ringa.git
cd ringa
cargo install --path .
```
### From crates.io
```sh
cargo install ringa
```
### With mise
```sh
mise use cargo:ringa
```
## Usage
```sh
# Pure white (default)
ringa
# Color temperature presets
ringa warm # 3200K tungsten
ringa golden # 2700K golden hour
ringa studio # 5000K neutral studio
ringa daylight # 5600K daylight balanced
ringa cool # 6500K cool daylight
# Custom Kelvin (1000-40000)
ringa 4200
```
Run it again to toggle off.
### Hotkey binding
Bind `ringa` to a key in your compositor config. Examples:
**Sway / i3**
```
bindsym $mod+F12 exec ringa
```
**Hyprland**
```
bind = $mainMod, F12, exec, ringa
```
**niri**
```kdl
binds {
Mod+F12 { spawn "ringa"; }
}
```
## Requirements
- Wayland compositor with `wlr-layer-shell-unstable-v1` support
- Vulkan-capable GPU
## License
[MIT](LICENSE)