PitchHut logo
A stylish keystroke visualizer for Wayland compositors.
Pitch

Keystroke is a modern GTK4 visualizer designed for Wayland compositors. It offers a unique aesthetic with two display modes, including a classic view and a sleek bubble style. Written in Rust, Keystroke features native audio support, customizable typography, and seamless system integration, ensuring a fast and user-friendly experience.

Description

Keystroke is a modern GTK4 Layer Shell keystroke visualizer specifically designed for Wayland compositors. Inspired by the aesthetics of KeyCastr, this visualizer is built using Rust, providing a fast and memory-safe experience.

Key Features

  • Wayland Native: Fully compatible with modern compositors, eliminating the need for X11 workarounds.
  • Two Display Modes:
    • Keystroke: The traditional view that displays the exact keys being pressed.
    • Bubble: A minimalistic, sleek style influenced by setups like devaslife's.
  • Native Audio Engine:
    • An integrated audio engine based on rodio, operating on a dedicated thread.
    • Supports Mechvibes sound packs with both single and multi-file options.
    • Features low-latency, zero-copy sample playback for enhanced performance.
  • Modern Configuration:
    • Transitioned to config.toml, with automatic migration from previous JSON settings.
    • Offers granular typography options to customize font family, weight, and size for both display modes.
    • Optimized settings interface can handle large font and sound pack lists without lag.
  • System Integration:
    • Automatically adapts to the system theme with GTK Theme Support.
    • Features a system tray for easy access to toggle modes, pause capture, or adjust settings.
    • Allows for repositioning of visualizer windows for optimal placement.

Supported Compositors

Keystroke aims to automatically detect the running compositor with varying support levels:

CompositorSupport LevelNotes
Niri🟢 Tested & WorkingFully supports layout detection and event handling.
Hyprland🟡 ExperimentalImplemented; requires community testing.
Sway🟡 ExperimentalImplemented; requires community testing.
River/DWL🔴 Basic/NoneLayout detection may be unreliable; minimal support.

Note: Given the complexities surrounding compositor support, testing is essential, especially for Hyprland and Sway.

Contribution Opportunity

The project is in its early stages and welcomes contributions from the community. Areas where help is particularly needed include:

  1. Compositor Testing: Especially for Hyprland and Sway.
  2. Packaging: Maintain packages for AUR, Debian/Ubuntu, Fedora, etc.
  3. Feedback: Users are encouraged to report bugs or suggest improvements via issues.

For developers, cloning the repository and running cargo run will initiate development mode, with further insights available in the src/compositor directory regarding Wayland protocol handling.

0 comments

No comments yet.

Sign in to be the first to comment.