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:
5 files changed
+127
-38
No files matched your search
@@ -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
@@ -345,12 +345,6 @@ dependencies = [
|
|||||||
"hashbrown 0.16.1",
|
"hashbrown 0.16.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "itoa"
|
|
||||||
version = "1.0.18"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jni-sys"
|
name = "jni-sys"
|
||||||
version = "0.3.1"
|
version = "0.3.1"
|
||||||
@@ -498,16 +492,6 @@ dependencies = [
|
|||||||
"jni-sys 0.3.1",
|
"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]]
|
[[package]]
|
||||||
name = "nix"
|
name = "nix"
|
||||||
version = "0.29.0"
|
version = "0.29.0"
|
||||||
@@ -747,7 +731,6 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"bytemuck",
|
"bytemuck",
|
||||||
"niri-ipc",
|
|
||||||
"nix",
|
"nix",
|
||||||
"pollster",
|
"pollster",
|
||||||
"raw-window-handle",
|
"raw-window-handle",
|
||||||
@@ -824,19 +807,6 @@ dependencies = [
|
|||||||
"syn",
|
"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]]
|
[[package]]
|
||||||
name = "shlex"
|
name = "shlex"
|
||||||
version = "1.3.0"
|
version = "1.3.0"
|
||||||
@@ -1396,9 +1366,3 @@ dependencies = [
|
|||||||
"quote",
|
"quote",
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zmij"
|
|
||||||
version = "1.0.21"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|
|
||||||
+7
-2
@@ -2,14 +2,19 @@
|
|||||||
name = "ringa"
|
name = "ringa"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
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>"]
|
authors = ["Stephen Waits <steve@waits.net>"]
|
||||||
rust-version = "1.85"
|
rust-version = "1.85"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = "1.0"
|
anyhow = "1.0"
|
||||||
bytemuck = { version = "1", features = ["derive"] }
|
bytemuck = { version = "1", features = ["derive"] }
|
||||||
niri-ipc = "25.11.0"
|
|
||||||
nix = { version = "0.29", features = ["signal", "process", "poll"] }
|
nix = { version = "0.29", features = ["signal", "process", "poll"] }
|
||||||
pollster = "0.4"
|
pollster = "0.4"
|
||||||
raw-window-handle = "0.6"
|
raw-window-handle = "0.6"
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -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)
|
||||||
Reference in new issue
Block a user