You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+64-28Lines changed: 64 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,45 +8,81 @@ And yes, it's written in Rust, so you already know it's blazing fast and memory-
8
8
9
9
## Key Features
10
10
11
-
-**Wayland Native**: No more X11 workarounds; built to work with Hyprland, Niri, River, Sway, etc.
11
+
-**Wayland Native**: No more X11 workarounds; built to work with modern compositors.
12
12
-**Two Display Modes**:
13
13
-**Keystroke**: The classic view for showing exactly what you're hitting.
14
14
-**Bubble**: A sleek, minimal style inspired by [devaslife's setup](https://www.youtube.com/watch?v=zu_vqAWHy_E).
15
-
-**Fully Customizable**: You can tweak the fonts, sizes, and layout to your liking.
16
-
-**GTK Theme Support**: It currently pulls from your GTK theme to keep your desktop looking consistent.
17
-
-**System Tray Integration**:
18
-
- Quick access to switch modes.
19
-
- Pause/Resume input capture.
20
-
- Access settings.
21
-
-**Draggable**: Visualizer windows can be repositioned.
15
+
-**Native Audio Engine**:
16
+
- Built-in `rodio`-based audio engine on a dedicated thread.
17
+
- Compatible with **Mechvibes** sound packs (single and multi-file support).
18
+
- Zero-copy sample playback for low latency.
19
+
-**Modern Configuration**:
20
+
- Configuration migrated to `config.toml` (auto-migrates from old JSON).
21
+
-**Granular Typography**: Customize font family, weight, and size per mode.
22
+
-**Virtualization**: Optimized Settings UI handles large lists of fonts and sound packs with zero lag.
23
+
-**System Integration**:
24
+
-**GTK Theme Support**: Automatically respects your system theme.
25
+
-**System Tray**: Quick access to toggle modes, pause capture, or open settings.
26
+
-**Draggable**: Visualizer windows can be repositioned easily.
22
27
23
28
## Supported Compositors
24
29
25
-
Keystroke automatically detects the running compositor.
30
+
Keystroke attempts to automatically detect your running compositor.
26
31
27
-
-**Full Support** (Layout detection & events):
28
-
- Hyprland
29
-
- Sway
30
-
- Niri
31
-
-**Basic Support**:
32
-
- River
33
-
- DWL
34
-
- Labwc
35
-
- Wayfire
32
+
| Compositor | Support Level | Notes |
33
+
|------------|---------------|-------|
34
+
|**Niri**| 🟢 **Tested & Working**| Fully supported layout detection and event handling. |
35
+
|**Hyprland**| 🟡 **Experimental**| Implemented but needs community testing. |
36
+
|**Sway**| 🟡 **Experimental**| Implemented but needs community testing. |
37
+
|**River/DWL**| 🔴 **Basic/None**| Layout detection may fail; "Basic support" is minimal. |
36
38
37
-
## Current State & Contributing
39
+
> **Note**: Real compositor support is complex! I can't detect layouts reliably on all compositors without specific implementations. **I need help testing Hyprland and Sway!** If you use these, please report issues.
38
40
39
-
The project is currently in **Early WIP**. It's fully functional, but since it's still in the early stages, there are no official packages (AUR, Nix, etc.) available yet. You'll need to build it from source for now.
41
+
## Installation
40
42
41
-
I'm mainly sharing this to see if there's interest from the community! If you find this useful, I'd really appreciate it if you could:
43
+
### Prerequisites
44
+
You need a Wayland compositor and the following system libraries:
45
+
-`libgtk-4-dev`
46
+
-`libgtk4-layer-shell-dev`
47
+
-`libasound2-dev` (for audio)
42
48
43
-
- ⭐ Drop a star on the repo: It helps the project get more visibility!
44
-
- 💡 Open an Issue: Have a feature idea? Let me know.
45
-
- 🛠️ Submit a PR: If you're a fellow Rustacean and want to jump in, contributions are more than welcome.
49
+
### Via Cargo
50
+
If you have Rust installed:
51
+
```bash
52
+
cargo install --path .
53
+
# or
54
+
cargo run --release
55
+
```
46
56
47
-
## Usage
57
+
### Via Nix
58
+
Flake support is included!
59
+
```bash
60
+
# Run directly
61
+
nix run github:linuxmobile/keystroke
48
62
49
-
The application launches with a system tray icon (if supported) and a launcher window.
63
+
# Build
64
+
nix build github:linuxmobile/keystroke
50
65
51
-
-**Launcher**: Select between Keystroke or Bubble mode.
52
-
-**Tray Icon**: Right-click to access the menu to switch modes, pause capture, or quit.
66
+
# Develop
67
+
nix develop
68
+
```
69
+
70
+
## Contributing & Help Needed
71
+
72
+
The project is currently in **Early WIP**.
73
+
74
+
### 🛑 We Need Your Help!
75
+
1.**Compositor Testing**: We specifically need testers for **Hyprland** and **Sway**. The code is there, but I only use Niri.
76
+
2.**Packaging**: We need maintainers for **AUR**, **Debian/Ubuntu**, **Fedora**, etc.
77
+
3.**Feedback**: Found a bug? Open an issue!
78
+
79
+
### Development
80
+
1. Clone the repo.
81
+
2. Run `cargo run` to start dev mode.
82
+
3. Check `src/compositor` to understand how we handle different Wayland protocols.
83
+
84
+
---
85
+
If you find this useful, I'd really appreciate it if you could:
0 commit comments