Add Alvin library: input, capture, windows and vision

A cross-platform C++23 library with a platform-neutral public API and
runtime-selected backends:

- Input: Wayland virtual pointer/keyboard (Hyprland, wlroots), libei via
  the RemoteDesktop portal (GNOME, KDE), uinput, and Win32 SendInput
- Capture: ScreenCast portal + PipeWire, and Win32 GDI
- Windows: Hyprland IPC and Win32 enumeration
- Monitors via wl_output/xdg-output and EnumDisplayMonitors
- Optional OpenCV template matching (alvin::vision)

Also adds the `alvin` CLI, Catch2 unit tests, install rules with
find_package(Alvin) support, API docs (docs/API.md and the Obsidian
vault), and README instructions for both ways of consuming the library.

Windows backends are written but not yet compiled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aeth3randClaude Opus 5.5 committed 2026-09-27 13:58:20 -04:00
1 parent 76ff506fd0
commit ca7e62ac8d
59 files changed
+6515 -1

No files matched your search

+8
View File
@@ -0,0 +1,8 @@
add_executable(alvin_cli alvin_cli.cpp)
set_target_properties(alvin_cli PROPERTIES OUTPUT_NAME alvin)
target_link_libraries(alvin_cli PRIVATE alvin::alvin)
if(TARGET alvin::vision)
target_link_libraries(alvin_cli PRIVATE alvin::vision)
target_compile_definitions(alvin_cli PRIVATE ALVIN_CLI_VISION)
endif()
install(TARGETS alvin_cli)