mirror of https://git.FreeBSD.org/ports.git
x11/waycheck: add port: Simple GUI that displays the protocols implemented by a Wayland compositor
Waycheck is a simple Qt6 application that displays all of the Wayland protocols that your compositor supports, and all of the protocols that it doesn't support. It can be used to compare protocol support between compositors, or if you're working on your own compositor, to keep track of which protocols you still need to implement. WWW: https://gitlab.freedesktop.org/serebit/waycheck
This commit is contained in:
parent
cd8520a8a9
commit
68a0a83b60
|
@ -460,6 +460,7 @@
|
|||
SUBDIR += watershot
|
||||
SUBDIR += way-displays
|
||||
SUBDIR += waybar
|
||||
SUBDIR += waycheck
|
||||
SUBDIR += waycorner
|
||||
SUBDIR += wayidle
|
||||
SUBDIR += wayland-logout
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
PORTNAME= waycheck
|
||||
DISTVERSIONPREFIX= v
|
||||
DISTVERSION= 1.7.0
|
||||
CATEGORIES= x11 wayland
|
||||
|
||||
MAINTAINER= tagattie@FreeBSD.org
|
||||
COMMENT= Simple GUI that displays the protocols implemented by a Wayland compositor
|
||||
WWW= https://gitlab.freedesktop.org/serebit/waycheck
|
||||
|
||||
LICENSE= APACHE20 CC0-1.0
|
||||
LICENSE_COMB= multi
|
||||
LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSES/Apache-2.0.txt
|
||||
LICENSE_FILE_CC0-1.0= ${WRKSRC}/LICENSES/CC0-1.0.txt
|
||||
|
||||
LIB_DEPENDS= libwayland-client.so:graphics/wayland
|
||||
|
||||
USES= meson pkgconfig qt:6
|
||||
|
||||
USE_GITLAB= yes
|
||||
GL_SITE= https://gitlab.freedesktop.org/
|
||||
GL_ACCOUNT= serebit
|
||||
|
||||
USE_QT= base wayland
|
||||
|
||||
PLIST_FILES= bin/${PORTNAME} \
|
||||
share/applications/dev.serebit.Waycheck.desktop \
|
||||
share/icons/hicolor/scalable/apps/dev.serebit.Waycheck.svg \
|
||||
share/metainfo/dev.serebit.Waycheck.metainfo.xml
|
||||
|
||||
.include <bsd.port.mk>
|
|
@ -0,0 +1,3 @@
|
|||
TIMESTAMP = 1756195503
|
||||
SHA256 (waycheck-v1.7.0.tar.bz2) = 658caca3d967d9b23bb1f6d42c6fd67832263bb60fd600a26e97748d0e47e105
|
||||
SIZE (waycheck-v1.7.0.tar.bz2) = 21545
|
|
@ -0,0 +1,15 @@
|
|||
--- meson.build.orig 2025-08-27 20:19:12 UTC
|
||||
+++ meson.build
|
||||
@@ -16,6 +16,12 @@ dep_wayland_client = dependency('wayland-client')
|
||||
)
|
||||
dep_wayland_client = dependency('wayland-client')
|
||||
|
||||
+cc = meson.get_compiler('cpp')
|
||||
+dep_libutil = dependency('', required : false)
|
||||
+if host_machine.system() == 'freebsd'
|
||||
+ dep_libutil = cc.find_library('util', required : true)
|
||||
+endif
|
||||
+
|
||||
datadir = get_option('datadir')
|
||||
|
||||
subdir('src')
|
|
@ -0,0 +1,10 @@
|
|||
--- src/meson.build.orig 2025-08-27 20:18:18 UTC
|
||||
+++ src/meson.build
|
||||
@@ -15,6 +15,6 @@ waycheck = executable(
|
||||
waycheck = executable(
|
||||
'waycheck',
|
||||
sources: waycheck_sources,
|
||||
- dependencies: [dep_qt6, dep_wayland_client],
|
||||
+ dependencies: [dep_qt6, dep_wayland_client, dep_libutil],
|
||||
install: true,
|
||||
)
|
|
@ -0,0 +1,56 @@
|
|||
--- src/window.cpp.orig 2025-06-27 19:43:51 UTC
|
||||
+++ src/window.cpp
|
||||
@@ -13,7 +13,24 @@
|
||||
#include <unistd.h>
|
||||
#include <wayland-client-protocol.h>
|
||||
|
||||
+#if defined(__FreeBSD__)
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/ucred.h>
|
||||
+#include <sys/un.h>
|
||||
+#include <sys/user.h>
|
||||
+#include <libutil.h>
|
||||
+#endif
|
||||
+
|
||||
static pid_t pid_from_fd(const int fd) {
|
||||
+#if defined(__FreeBSD__)
|
||||
+ xucred cred{};
|
||||
+ socklen_t len = sizeof(struct xucred);
|
||||
+ if (getsockopt(fd, SOL_LOCAL, LOCAL_PEERCRED, &cred, &len) == -1) {
|
||||
+ perror("getsockopt failed");
|
||||
+ exit(1);
|
||||
+ }
|
||||
+ return cred.cr_pid;
|
||||
+#else
|
||||
ucred cred{};
|
||||
socklen_t len = sizeof(struct ucred);
|
||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1) {
|
||||
@@ -21,9 +38,19 @@ static pid_t pid_from_fd(const int fd) {
|
||||
exit(1);
|
||||
}
|
||||
return cred.pid;
|
||||
+#endif
|
||||
}
|
||||
|
||||
static std::string process_name_from_pid(const pid_t pid) {
|
||||
+#if defined(__FreeBSD__)
|
||||
+ struct kinfo_proc *proc = kinfo_getproc(pid);
|
||||
+
|
||||
+ if (proc) {
|
||||
+ std::string out = proc->ki_comm;
|
||||
+ free(proc);
|
||||
+ return out;
|
||||
+ }
|
||||
+#else
|
||||
const std::string procpath = QString::asprintf("/proc/%d/comm", pid).toStdString();
|
||||
|
||||
std::ifstream infile(procpath);
|
||||
@@ -38,7 +65,7 @@ static std::string process_name_from_pid(const pid_t p
|
||||
// running in a flatpak or a snap, most likely
|
||||
return "Unknown (Sandboxed)";
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
return "Unknown";
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
Waycheck is a simple Qt6 application that displays all of the Wayland
|
||||
protocols that your compositor supports, and all of the protocols that
|
||||
it doesn't support. It can be used to compare protocol support between
|
||||
compositors, or if you're working on your own compositor, to keep
|
||||
track of which protocols you still need to implement.
|
Loading…
Reference in New Issue