The native Hyprland plugin behind Omarchy's floating workspaces: themed titlebars and edge snapping, built from a hyprbars fork. It is rebuilt with every Hyprland change, since a plugin only loads into the exact build it was compiled against. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
35 lines
1.1 KiB
CMake
35 lines
1.1 KiB
CMake
cmake_minimum_required(VERSION 3.27)
|
|
|
|
project(omarchy-hyprland-titlebars
|
|
DESCRIPTION "Titlebars and edge snapping for Omarchy's floating workspace mode"
|
|
VERSION 0.1.0
|
|
LANGUAGES CXX
|
|
)
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
|
|
set(SRC main.cpp barDeco.cpp BarPassElement.cpp edgeSnap.cpp)
|
|
|
|
# Built as titlebars.so (no lib prefix). Omarchy loads it from the fixed path
|
|
# /usr/lib/omarchy-hyprland-titlebars/titlebars.so. The Hyprland-facing plugin
|
|
# name stays "hyprbars" so the hl.plugin.hyprbars Lua namespace is unchanged.
|
|
add_library(titlebars SHARED ${SRC})
|
|
set_target_properties(titlebars PROPERTIES PREFIX "")
|
|
# Hyprland exposes inline globals through its headers, so whole-library hidden
|
|
# visibility breaks the host API. Our own types/globals have unique OmarchyFloating names.
|
|
target_compile_options(titlebars PRIVATE -fno-gnu-unique)
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(deps REQUIRED IMPORTED_TARGET
|
|
hyprland
|
|
libdrm
|
|
libinput
|
|
libudev
|
|
pixman-1
|
|
wayland-server
|
|
xkbcommon
|
|
)
|
|
target_link_libraries(titlebars PRIVATE rt PkgConfig::deps)
|
|
|
|
install(TARGETS titlebars LIBRARY DESTINATION lib/omarchy-hyprland-titlebars)
|