diff --git a/x11-wm/hyprland/Makefile b/x11-wm/hyprland/Makefile index 9dcfaa7a15ca..6ac2a155c985 100644 --- a/x11-wm/hyprland/Makefile +++ b/x11-wm/hyprland/Makefile @@ -1,93 +1,87 @@ PORTNAME= hyprland DISTVERSIONPREFIX= v -DISTVERSION= 0.21.0beta -PORTREVISION= 5 +DISTVERSION= 0.22.0beta CATEGORIES= x11-wm wayland -PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ -PATCHFILES+= c3adc9ec5602.patch:-p1 # https://github.com/hyprwm/Hyprland/pull/1448 -PATCHFILES+= f90ff8303b4f.patch:-p1 # https://github.com/hyprwm/Hyprland/pull/1457 -PATCHFILES+= fd3a1cd086d0.patch:-p1 # https://github.com/hyprwm/Hyprland/issues/1477 - MAINTAINER= jbeich@FreeBSD.org COMMENT= Dynamic tiling Wayland compositor that doesn't sacrifice on its looks #' WWW= https://hyprland.org/ LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= evdev-proto>0:devel/evdev-proto \ wayland-protocols>=1.25:graphics/wayland-protocols \ wlroots>=0.16.0<0.17.0:x11-toolkits/wlroots LIB_DEPENDS= libwayland-server.so:graphics/wayland \ libwlroots.so:x11-toolkits/wlroots \ libinput.so:x11/libinput \ libxkbcommon.so:x11/libxkbcommon USES= compiler:c++11-lib gl gnome meson pkgconfig xorg USE_GITHUB= yes USE_GL= egl opengl USE_GNOME= cairo USE_XORG= pixman GH_ACCOUNT= hyprwm GH_PROJECT= Hyprland GH_TUPLE= hyprwm:hyprland-protocols:301733a:hyprland_protocols/subprojects/hyprland-protocols OPTIONS_DEFINE= X11 OPTIONS_DEFAULT=X11 X11_USE= XORG=xcb X11_MESON_ENABLED= xwayland post-patch: # Extract (snapshot) version from the port instead of meson.build @${REINPLACE_CMD} -i .nogit -e "/GIT_BRANCH/s/run_command.*/'main'/" \ -e "/GIT_COMMIT_HASH/s/run_command.*/'${DISTVERSIONFULL}'/" \ -e "/GIT_COMMIT_MESSAGE/s/run_command.*/''/" \ -e "/GIT_DIRTY/s/run_command.*/'portbld'/" \ -e "/version.*jq/s/run_command.*/'${DISTVERSIONFULL}',/" \ ${WRKSRC}/meson.build # Respect PREFIX for wallpapers @${REINPLACE_CMD} 's,/usr/share,${DATADIR:H},' \ ${WRKSRC}/src/render/OpenGL.cpp .ifdef GH_TUPLE post-install: # XXX USES=meson invokes ninja directly, so doesn't support --skip-subprojects @${RM} -r ${STAGEDIR}${PREFIX}/share/pkgconfig @${RM} -r ${STAGEDIR}${PREFIX}/share/protocols .endif # XXX Drop after FreeBSD 13.2 EOL around 2024-05-01 (don't forget distinfo) .if ${CXX} == c++ && exists(/usr/lib/libc++.so) .if !exists(/usr/include/c++/v1/__ranges/as_rvalue_view.h) || make(makesum) || make(fetch) . if exists(/usr/include/c++/v1/__algorithm/ranges_all_of.h) && !make(makesum) && !make(fetch) CXXFLAGS+= -fexperimental-library # std::ranges::all_of . else BUILD_DEPENDS+= ${CMAKE_BIN}:devel/cmake-core USES+= llvm:min=14,build CC= clang${LLVM_VERSION} CXX= clang++${LLVM_VERSION} CPP= clang-cpp${LLVM_VERSION} CONFIGURE_ENV+= CC="${CC}" CXX="${CXX}" CPP="${CPP}" CMAKE_BIN= ${LOCALBASE}/bin/cmake CMAKE_ARGS+= -GNinja # XXX Move into separate port and standardize via USES GH_TUPLE+= llvm:llvm-project:llvmorg-16.0.0-rc2:libcxx CXXFLAGS+= -nostdinc++ -isystem${WRKDIR}/libcxx_prefix/include/c++/v1 # Don't link against new libc++ as it's not necessary #LDFLAGS+= -nostdlib++ -L${WRKDIR}/libcxx_prefix/lib -l:libc++.a -lcxxrt pre-configure: bundled-libcxx bundled-libcxx: @${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS:M*Ninja*} \ -DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \ -DCMAKE_INSTALL_PREFIX:PATH=${WRKDIR}/libcxx_prefix \ -B ${WRKDIR}/libcxx_build -S ${WRKSRC_libcxx}/libcxx @${DO_MAKE_BUILD:NDESTDIR*} install -C ${WRKDIR}/libcxx_build . endif .endif .endif # exists(/usr/lib/libc++.so) .include diff --git a/x11-wm/hyprland/distinfo b/x11-wm/hyprland/distinfo index 7d2b9231c7c7..c31810a84e15 100644 --- a/x11-wm/hyprland/distinfo +++ b/x11-wm/hyprland/distinfo @@ -1,13 +1,7 @@ -TIMESTAMP = 1674930518 -SHA256 (hyprwm-Hyprland-v0.21.0beta_GH0.tar.gz) = 7fb3ba09011c991fcdfbba825cc69af1c9eb0568bc422f95be5cce860baaea1b -SIZE (hyprwm-Hyprland-v0.21.0beta_GH0.tar.gz) = 714570 +TIMESTAMP = 1676935051 +SHA256 (hyprwm-Hyprland-v0.22.0beta_GH0.tar.gz) = dd721975b15126a8165226d5ab2cbb88c5bd48dd768b6ee123149451af2fb0c1 +SIZE (hyprwm-Hyprland-v0.22.0beta_GH0.tar.gz) = 723020 SHA256 (hyprwm-hyprland-protocols-301733a_GH0.tar.gz) = 3b3b4e948525f1d823313390b2551ea8969d0cbf82bd72e2a4a2ce2750552330 SIZE (hyprwm-hyprland-protocols-301733a_GH0.tar.gz) = 4852 SHA256 (llvm-llvm-project-llvmorg-16.0.0-rc2_GH0.tar.gz) = f066ee0f4e48d320a327215359f212164675e75ca7644dbbd54b1828a270b2fc SIZE (llvm-llvm-project-llvmorg-16.0.0-rc2_GH0.tar.gz) = 179117059 -SHA256 (c3adc9ec5602.patch) = 71e502ca9b18a7e3b29d19ff72493dc511b2b8937ca032db085a273fdd6a8d26 -SIZE (c3adc9ec5602.patch) = 1759 -SHA256 (f90ff8303b4f.patch) = 6b0b3664b44d804bc0a4c686cb44ba0b3fb5612d3f075e3a030a1ed81e34a56a -SIZE (f90ff8303b4f.patch) = 8448 -SHA256 (fd3a1cd086d0.patch) = 2e495318e236622e371e608a5ab1ed81af9db1e885ef0c8f3183a28862d5397e -SIZE (fd3a1cd086d0.patch) = 1364 diff --git a/x11-wm/hyprland/files/patch-wlroots-0.16 b/x11-wm/hyprland/files/patch-wlroots-0.16 index 5c7f6318dc45..b82f3f578e4a 100644 --- a/x11-wm/hyprland/files/patch-wlroots-0.16 +++ b/x11-wm/hyprland/files/patch-wlroots-0.16 @@ -1,136 +1,207 @@ Revert to wlroots 0.16 API as 0.17 is a moving target, so hard to use as system package with more than one consumer. https://github.com/hyprwm/Hyprland/commit/df132e5ff339 https://github.com/hyprwm/Hyprland/commit/c012e3d66b21 https://github.com/hyprwm/Hyprland/commit/d6b3bfc48e22 +https://github.com/hyprwm/Hyprland/commit/a46abd8b1ada ---- src/Compositor.cpp.orig 2022-12-06 13:15:18 UTC +--- src/Compositor.cpp.orig 2023-02-03 14:12:28 UTC +++ src/Compositor.cpp -@@ -53,7 +53,7 @@ CCompositor::CCompositor() { +@@ -63,7 +63,7 @@ CCompositor::CCompositor() { wl_event_loop_add_signal(m_sWLEventLoop, SIGTERM, handleCritSignal, nullptr); //wl_event_loop_add_signal(m_sWLEventLoop, SIGINT, handleCritSignal, nullptr); - m_sWLRBackend = wlr_backend_autocreate(m_sWLDisplay, &m_sWLRSession); + m_sWLRBackend = wlr_backend_autocreate(m_sWLDisplay); if (!m_sWLRBackend) { Debug::log(CRIT, "m_sWLRBackend was NULL!"); -@@ -76,10 +76,11 @@ CCompositor::CCompositor() { +@@ -86,10 +86,11 @@ CCompositor::CCompositor() { wlr_renderer_init_wl_shm(m_sWLRRenderer, m_sWLDisplay); if (wlr_renderer_get_dmabuf_texture_formats(m_sWLRRenderer)) { - if (wlr_renderer_get_drm_fd(m_sWLRRenderer) >= 0) + if (wlr_renderer_get_drm_fd(m_sWLRRenderer) >= 0) { wlr_drm_create(m_sWLDisplay, m_sWLRRenderer); + } - m_sWLRLinuxDMABuf = wlr_linux_dmabuf_v1_create_with_renderer(m_sWLDisplay, 4, m_sWLRRenderer); + m_sWLRLinuxDMABuf = wlr_linux_dmabuf_v1_create(m_sWLDisplay, m_sWLRRenderer); } m_sWLRAllocator = wlr_allocator_autocreate(m_sWLRBackend, m_sWLRRenderer); -@@ -131,7 +132,7 @@ CCompositor::CCompositor() { +@@ -141,7 +142,7 @@ CCompositor::CCompositor() { m_sWLRIdle = wlr_idle_create(m_sWLDisplay); - m_sWLRLayerShell = wlr_layer_shell_v1_create(m_sWLDisplay, 4); + m_sWLRLayerShell = wlr_layer_shell_v1_create(m_sWLDisplay); m_sWLRServerDecoMgr = wlr_server_decoration_manager_create(m_sWLDisplay); - m_sWLRXDGDecoMgr = wlr_xdg_decoration_manager_v1_create(m_sWLDisplay); -@@ -171,6 +172,8 @@ CCompositor::CCompositor() { + m_sWLRXDGDecoMgr = wlr_xdg_decoration_manager_v1_create(m_sWLDisplay); +@@ -181,6 +182,8 @@ CCompositor::CCompositor() { wlr_xdg_foreign_v2_create(m_sWLDisplay, m_sWLRForeignRegistry); m_sWLRPointerGestures = wlr_pointer_gestures_v1_create(m_sWLDisplay); + + m_sWLRSession = wlr_backend_get_session(m_sWLRBackend); m_sWLRTextInputMgr = wlr_text_input_manager_v3_create(m_sWLDisplay); ---- src/events/Events.hpp.orig 2022-12-06 13:15:18 UTC +--- src/events/Events.hpp.orig 2023-02-03 14:12:28 UTC +++ src/events/Events.hpp @@ -96,7 +96,6 @@ namespace Events { // Monitor part 2 the sequel DYNLISTENFUNC(monitorFrame); DYNLISTENFUNC(monitorDestroy); - DYNLISTENFUNC(monitorStateRequest); // XWayland LISTENER(readyXWayland); ---- src/events/Monitors.cpp.orig 2023-01-05 22:30:24 UTC +--- src/events/Monitors.cpp.orig 2023-02-03 14:12:28 UTC +++ src/events/Monitors.cpp -@@ -265,10 +265,11 @@ void Events::listener_monitorFrame(void* owner, void* +@@ -277,10 +277,11 @@ void Events::listener_monitorFrame(void* owner, void* damageBlinkCleanup = 0; } - if (wlr_renderer_begin(g_pCompositor->m_sWLRRenderer, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y)) { - wlr_output_render_software_cursors(PMONITOR->output, NULL); - wlr_renderer_end(g_pCompositor->m_sWLRRenderer); - } + wlr_renderer_begin(g_pCompositor->m_sWLRRenderer, PMONITOR->vecPixelSize.x, PMONITOR->vecPixelSize.y); + + wlr_output_render_software_cursors(PMONITOR->output, NULL); + + wlr_renderer_end(g_pCompositor->m_sWLRRenderer); } g_pHyprOpenGL->end(); -@@ -339,11 +340,4 @@ void Events::listener_monitorDestroy(void* owner, void +@@ -351,11 +352,4 @@ void Events::listener_monitorDestroy(void* owner, void std::erase_if(g_pCompositor->m_vRealMonitors, [&](std::shared_ptr& el) { return el.get() == pMonitor; }); } -} - -void Events::listener_monitorStateRequest(void* owner, void* data) { - const auto PMONITOR = (CMonitor*)owner; - const auto E = (wlr_output_event_request_state*)data; - - wlr_output_commit_state(PMONITOR->output, E->state); } ---- src/helpers/Monitor.cpp.orig 2022-12-06 13:15:18 UTC +--- src/events/Windows.cpp.orig 2023-02-03 14:12:28 UTC ++++ src/events/Windows.cpp +@@ -816,7 +816,7 @@ void Events::listener_activateXDG(wl_listener* listene + + Debug::log(LOG, "Activate request for surface at %x", E->surface); + +- if (!wlr_xdg_surface_try_from_wlr_surface(E->surface)) ++ if (!wlr_surface_is_xdg_surface(E->surface)) + return; + + const auto PWINDOW = g_pCompositor->getWindowFromSurface(E->surface); +--- src/helpers/Monitor.cpp.orig 2023-02-03 14:12:28 UTC +++ src/helpers/Monitor.cpp @@ -5,10 +5,8 @@ void CMonitor::onConnect(bool noRule) { void CMonitor::onConnect(bool noRule) { hyprListener_monitorDestroy.removeCallback(); hyprListener_monitorFrame.removeCallback(); - hyprListener_monitorStateRequest.removeCallback(); hyprListener_monitorFrame.initCallback(&output->events.frame, &Events::listener_monitorFrame, this); hyprListener_monitorDestroy.initCallback(&output->events.destroy, &Events::listener_monitorDestroy, this); - hyprListener_monitorStateRequest.initCallback(&output->events.request_state, &Events::listener_monitorStateRequest, this); if (m_bEnabled) { wlr_output_enable(output, 1); -@@ -185,7 +183,7 @@ void CMonitor::onDisconnect() { +@@ -207,7 +205,7 @@ void CMonitor::onDisconnect() { if (!BACKUPMON) { Debug::log(WARN, "Unplugged last monitor, entering an unsafe state. Good luck my friend."); - hyprListener_monitorStateRequest.removeCallback(); + hyprListener_monitorMode.removeCallback(); hyprListener_monitorDestroy.removeCallback(); g_pCompositor->m_bUnsafeState = true; ---- src/helpers/Monitor.hpp.orig 2022-12-06 13:15:18 UTC +--- src/helpers/Monitor.hpp.orig 2023-02-03 14:12:28 UTC +++ src/helpers/Monitor.hpp -@@ -56,7 +56,7 @@ class CMonitor { (public) +@@ -53,7 +53,7 @@ class CMonitor { DYNLISTENER(monitorFrame); DYNLISTENER(monitorDestroy); - DYNLISTENER(monitorStateRequest); + DYNLISTENER(monitorMode); // hack: a group = workspaces on a monitor. // I don't really care lol :P ---- src/helpers/SubsurfaceTree.cpp.orig 2022-12-06 13:15:18 UTC +--- src/helpers/SubsurfaceTree.cpp.orig 2023-02-03 14:12:28 UTC +++ src/helpers/SubsurfaceTree.cpp @@ -3,8 +3,8 @@ void addSurfaceGlobalOffset(SSurfaceTreeNode* node, in #include "../Compositor.hpp" void addSurfaceGlobalOffset(SSurfaceTreeNode* node, int* lx, int* ly) { - *lx += node->pSurface->current.dx; - *ly += node->pSurface->current.dy; + *lx += node->pSurface->sx; + *ly += node->pSurface->sy; if (node->offsetfn) { // This is the root node +--- src/managers/XWaylandManager.cpp.orig 2023-02-03 14:12:28 UTC ++++ src/managers/XWaylandManager.cpp +@@ -35,16 +35,16 @@ void CHyprXWaylandManager::activateSurface(wlr_surface + if (!pSurface) + return; + +- if (wlr_xdg_surface_try_from_wlr_surface(pSurface)) { +- const auto PSURF = wlr_xdg_surface_try_from_wlr_surface(pSurface); ++ if (wlr_surface_is_xdg_surface(pSurface)) { ++ const auto PSURF = wlr_xdg_surface_from_wlr_surface(pSurface); + if (PSURF && PSURF->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL) { + wlr_xdg_toplevel_set_activated(PSURF->toplevel, activate); + } +- } else if (wlr_xwayland_surface_try_from_wlr_surface(pSurface)) { +- wlr_xwayland_surface_activate(wlr_xwayland_surface_try_from_wlr_surface(pSurface), activate); ++ } else if (wlr_surface_is_xwayland_surface(pSurface)) { ++ wlr_xwayland_surface_activate(wlr_xwayland_surface_from_wlr_surface(pSurface), activate); + + if (activate) +- wlr_xwayland_surface_restack(wlr_xwayland_surface_try_from_wlr_surface(pSurface), nullptr, XCB_STACK_MODE_ABOVE); ++ wlr_xwayland_surface_restack(wlr_xwayland_surface_from_wlr_surface(pSurface), nullptr, XCB_STACK_MODE_ABOVE); + } + } + +--- src/managers/input/InputMethodRelay.cpp.orig 2023-02-03 14:12:28 UTC ++++ src/managers/input/InputMethodRelay.cpp +@@ -144,8 +144,8 @@ void CInputMethodRelay::updateInputPopup(SIMEPopup* pP + Vector2D parentPos; + Vector2D parentSize; + +- if (wlr_layer_surface_v1_try_from_wlr_surface(PFOCUSEDSURFACE)) { +- const auto PLS = g_pCompositor->getLayerSurfaceFromWlr(wlr_layer_surface_v1_try_from_wlr_surface(PFOCUSEDSURFACE)); ++ if (wlr_surface_is_layer_surface(PFOCUSEDSURFACE)) { ++ const auto PLS = g_pCompositor->getLayerSurfaceFromWlr(wlr_layer_surface_v1_from_wlr_surface(PFOCUSEDSURFACE)); + + if (PLS) { + parentPos = Vector2D(PLS->geometry.x, PLS->geometry.y) + g_pCompositor->getMonitorFromID(PLS->monitorID)->vecPosition; +@@ -243,8 +243,8 @@ void CInputMethodRelay::damagePopup(SIMEPopup* pPopup) + + const auto PFOCUSEDSURFACE = PFOCUSEDTI->pWlrInput->focused_surface; + +- if (wlr_layer_surface_v1_try_from_wlr_surface(PFOCUSEDSURFACE)) { +- const auto PLS = g_pCompositor->getLayerSurfaceFromWlr(wlr_layer_surface_v1_try_from_wlr_surface(PFOCUSEDSURFACE)); ++ if (wlr_surface_is_layer_surface(PFOCUSEDSURFACE)) { ++ const auto PLS = g_pCompositor->getLayerSurfaceFromWlr(wlr_layer_surface_v1_from_wlr_surface(PFOCUSEDSURFACE)); + + if (PLS) { + parentPos = Vector2D(PLS->geometry.x, PLS->geometry.y) + g_pCompositor->getMonitorFromID(PLS->monitorID)->vecPosition; +--- src/render/Renderer.cpp.orig 2023-02-03 14:12:28 UTC ++++ src/render/Renderer.cpp +@@ -37,7 +37,7 @@ void renderSurface(struct wlr_surface* surface, int x, + rounding -= 1; // to fix a border issue + + if (RDATA->surface && surface == RDATA->surface) { +- if (wlr_xwayland_surface_try_from_wlr_surface(surface) && !wlr_xwayland_surface_try_from_wlr_surface(surface)->has_alpha && RDATA->fadeAlpha * RDATA->alpha == 1.f) { ++ if (wlr_surface_is_xwayland_surface(surface) && !wlr_xwayland_surface_from_wlr_surface(surface)->has_alpha && RDATA->fadeAlpha * RDATA->alpha == 1.f) { + g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, rounding, true); + } else { + if (RDATA->blur)