Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hypr-annotate

A high-performance screen annotation and drawing overlay for the Hyprland Wayland compositor. Written in C++ and Qt6, it uses wlr-layer-shell to create a transparent, low-latency overlay that integrates seamlessly with your desktop.


Key Features

  • Native Wayland Integration: Utilizes the wlr-layer-shell protocol for a non-interfering, transparent overlay.
  • Versatile Drawing Tools: Geometric shapes (lines, arrows, rectangles, ellipses, rhombuses) with magnetic 1:1 aspect-ratio snapping, alongside solid, highlighter, dashed, and eraser brushes.
  • Ephemeral Ink (Neon Glow): Temporary strokes that pulse while drawing and automatically fade away after 3 seconds of inactivity.
  • High Performance: Memory-efficient region-snapshot architecture for Undo/Redo that limits RAM usage to modified pixels only.

Hyprland Integration

hypr-annotate is designed to run as a background daemon for zero-latency activation. Add the following to your ~/.config/hypr/hyprland.conf to start the daemon and configure keybinds for showing and hiding the canvas:

# Start the daemon on login
exec-once = hypr-annotate

# Show the drawing canvas (e.g., using Super + A)
bind = SUPER, A, exec, hypr-annotate --show

# Hide the drawing canvas (e.g., using Super + Shift + A)
bind = SUPER, SHIFT, A, exec, hypr-annotate --hide

# Toggle the drawing canvas (e.g., using Super + T) 
bind = SUPER, T, exec, hypr-annotate --toggle

Note: Clicking the "HIDE" button in the application's toolbox also dismisses the overlay but leaves the daemon running, preserving your canvas state in memory. You can safely hide and show the canvas without losing your work.


Build Instructions

Here is the updated section for your README.md. It highlights nix run and nix build for standard usage, while keeping nix develop available for compiling from source during development.

NixOS (Recommended)

A flake.nix is provided for a fully reproducible environment containing all required Qt6 and Wayland dependencies.

Run directly:

nix run .

Build the package:

nix build .
# The compiled binary will be symlinked to ./result/bin/hypr-annotate

For Development: If you want to modify the source code, drop into the development shell to access the toolchain:

nix develop
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/hypr-annotate

Standard Linux

Dependencies: cmake, ninja, pkg-config, gcc/clang, qt6-base, qt6-wayland, qt6-declarative, qt6-svg, and layer-shell-qt.

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/hypr-annotate

Planned Features

  • Region selection screenshot integration (grim + slurp)
  • Save canvas as PNG
  • Persistent state saving for tools and colors via QSettings

Technology Stack

  • Language: C++20
  • GUI & Engine: Qt6 (Widgets, Svg), LayerShellQt
  • Build System: CMake + Ninja

About

A high-performance screen annotation and drawing overlay for the Hyprland Wayland compositor

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages