git: 2daebd564b73 - main - x11/bosd: new port

From: Devin Teske <dteske_at_FreeBSD.org>
Date: Mon, 14 Sep 2026 18:02:20 UTC
The branch main has been updated by dteske:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2daebd564b731ecf5b81f70cc02d51a29aa40421

commit 2daebd564b731ecf5b81f70cc02d51a29aa40421
Author:     Devin Teske <dteske@FreeBSD.org>
AuthorDate: 2026-09-14 17:59:12 +0000
Commit:     Devin Teske <dteske@FreeBSD.org>
CommitDate: 2026-09-14 17:59:12 +0000

    x11/bosd: new port
    
    X11 on-screen display engine: PNG glyphs, countdown digits,
    outlined text, and a gauge bar. A warm daemon per channel
    repaints in place.
    
    Approved by:    fuz (mentor)
    Reviewed by:    fuz (mentor), jrm (co-mentor; previous revision)
    Differential Revision:  https://reviews.freebsd.org/D59517
---
 x11/Makefile       |  1 +
 x11/bosd/Makefile  | 44 ++++++++++++++++++++++++++++++++++++++
 x11/bosd/distinfo  |  3 +++
 x11/bosd/pkg-descr |  4 ++++
 x11/bosd/pkg-plist | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 115 insertions(+)

diff --git a/x11/Makefile b/x11/Makefile
index 132addfbbbc6..b0e60f42715e 100644
--- a/x11/Makefile
+++ b/x11/Makefile
@@ -31,6 +31,7 @@
     SUBDIR += bitmap
     SUBDIR += bmpanel2
     SUBDIR += boomer
+    SUBDIR += bosd
     SUBDIR += brisk-menu
     SUBDIR += budgie
     SUBDIR += budgie-desktop
diff --git a/x11/bosd/Makefile b/x11/bosd/Makefile
new file mode 100644
index 000000000000..7fec46aa4127
--- /dev/null
+++ b/x11/bosd/Makefile
@@ -0,0 +1,44 @@
+PORTNAME=	bosd
+DISTVERSION=	10.2
+CATEGORIES=	x11
+
+MAINTAINER=	dteske@FreeBSD.org
+COMMENT=	X11 on-screen display engine
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libfontconfig.so:x11-fonts/fontconfig \
+		libpng16.so:graphics/png
+
+USES=		localbase:ldflags pkgconfig python:build,run shebangfix xorg
+USE_GITHUB=	yes
+GH_ACCOUNT=	FrauBSD
+USE_LDCONFIG=	yes
+USE_XORG=	x11 xext xft xrandr xrender
+
+SHEBANG_FILES=	examples/bsd.py tools/glyph.py
+
+# FreeBSD keeps .pc files under libdata/pkgconfig.
+# PYTHON= drives the example glyph build (no bare python3 on PATH).
+MAKE_ARGS=	PKGCONFIGDIR="${PREFIX}/libdata/pkgconfig" \
+		PYTHON="${PYTHON_CMD}"
+ALL_TARGET=	all example
+
+OPTIONS_DEFINE=		TESTS
+OPTIONS_DEFAULT=	TESTS
+OPTIONS_SUB=		yes
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MTESTS}
+MAKE_ARGS+=	INSTALL_TESTS=yes
+.else
+MAKE_ARGS+=	INSTALL_TESTS=no
+.endif
+
+post-install:
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/bosd \
+		${STAGEDIR}${PREFIX}/lib/libbosd.so.4
+
+.include <bsd.port.mk>
diff --git a/x11/bosd/distinfo b/x11/bosd/distinfo
new file mode 100644
index 000000000000..bcfdf0fee366
--- /dev/null
+++ b/x11/bosd/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1789332155
+SHA256 (FrauBSD-bosd-10.2_GH0.tar.gz) = 68dca36419f353de5269cc3ed58dcf22f3a70c5e3478d6e38c7c3169f60935ff
+SIZE (FrauBSD-bosd-10.2_GH0.tar.gz) = 64919
diff --git a/x11/bosd/pkg-descr b/x11/bosd/pkg-descr
new file mode 100644
index 000000000000..abc2b3b2c581
--- /dev/null
+++ b/x11/bosd/pkg-descr
@@ -0,0 +1,4 @@
+bosd flashes transient, click-through feedback over the desktop: a
+PNG glyph, countdown digits, large or small outlined text, or a
+gauge bar. A warm daemon per channel repaints in place so rapid
+key repeats never flash.
diff --git a/x11/bosd/pkg-plist b/x11/bosd/pkg-plist
new file mode 100644
index 000000000000..08d537144af1
--- /dev/null
+++ b/x11/bosd/pkg-plist
@@ -0,0 +1,63 @@
+bin/bosd
+include/bosd.h
+lib/libbosd.so
+lib/libbosd.so.4
+libdata/pkgconfig/bosd.pc
+share/bosd/bsd.png
+share/doc/bosd/README.md
+share/examples/bosd/bsd.py
+share/examples/bosd/glyph.py
+share/man/man1/bosd.1.gz
+share/man/man3/bosd.3.gz
+%%TESTS%%share/bosd/tests/run
+%%TESTS%%share/bosd/tests/bar_01.sh
+%%TESTS%%share/bosd/tests/bar_02_alpha.sh
+%%TESTS%%share/bosd/tests/bar_03_no_outline.sh
+%%TESTS%%share/bosd/tests/bar_04_overage.sh
+%%TESTS%%share/bosd/tests/bar_05_offsets.sh
+%%TESTS%%share/bosd/tests/bar_06_color.sh
+%%TESTS%%share/bosd/tests/bar_07_prev.sh
+%%TESTS%%share/bosd/tests/bar_08_captions.sh
+%%TESTS%%share/bosd/tests/bar_09_face.sh
+%%TESTS%%share/bosd/tests/bar_10_caption_alpha.sh
+%%TESTS%%share/bosd/tests/bar_11_scale.sh
+%%TESTS%%share/bosd/tests/coexist_01.sh
+%%TESTS%%share/bosd/tests/coexist_02_icon_bar.sh
+%%TESTS%%share/bosd/tests/coexist_03_countdown_bar.sh
+%%TESTS%%share/bosd/tests/coexist_04_htext_bar.sh
+%%TESTS%%share/bosd/tests/coexist_05_icon_captions_bar.sh
+%%TESTS%%share/bosd/tests/coexist_06_countdown_captions_bar.sh
+%%TESTS%%share/bosd/tests/coexist_07_htext_captions_bar.sh
+%%TESTS%%share/bosd/tests/countdown_01.sh
+%%TESTS%%share/bosd/tests/countdown_02.sh
+%%TESTS%%share/bosd/tests/countdown_03_scale_adorn.sh
+%%TESTS%%share/bosd/tests/htext_01.sh
+%%TESTS%%share/bosd/tests/htext_02_alpha.sh
+%%TESTS%%share/bosd/tests/htext_03_offsets.sh
+%%TESTS%%share/bosd/tests/htext_04_checkmark.sh
+%%TESTS%%share/bosd/tests/htext_05_badge.sh
+%%TESTS%%share/bosd/tests/htext_06_color_badge.sh
+%%TESTS%%share/bosd/tests/htext_07_face_badge.sh
+%%TESTS%%share/bosd/tests/htext_08_scale.sh
+%%TESTS%%share/bosd/tests/htext_09_scale_badge.sh
+%%TESTS%%share/bosd/tests/icon_01.sh
+%%TESTS%%share/bosd/tests/icon_02_badge.sh
+%%TESTS%%share/bosd/tests/icon_03_scale.sh
+%%TESTS%%share/bosd/tests/icon_04_scale_badge.sh
+%%TESTS%%share/bosd/tests/icon_05_alpha.sh
+%%TESTS%%share/bosd/tests/icon_06_outline_alpha.sh
+%%TESTS%%share/bosd/tests/icon_07_below.sh
+%%TESTS%%share/bosd/tests/icon_08_above.sh
+%%TESTS%%share/bosd/tests/icon_09_offsets.sh
+%%TESTS%%share/bosd/tests/icon_10_color.sh
+%%TESTS%%share/bosd/tests/icon_11_face.sh
+%%TESTS%%share/bosd/tests/lib.sh
+%%TESTS%%share/bosd/tests/stext_01.sh
+%%TESTS%%share/bosd/tests/stext_02_alpha.sh
+%%TESTS%%share/bosd/tests/stext_03_no_outline.sh
+%%TESTS%%share/bosd/tests/stext_04_color.sh
+%%TESTS%%share/bosd/tests/stext_05_face.sh
+%%TESTS%%share/bosd/tests/stext_06_scale.sh
+%%TESTS%%share/bosd/tests/stext_07_offsets.sh
+%%TESTS%%share/bosd/tests/stext_08_newline.sh
+%%TESTS%%share/bosd/tests/stext_09_space.sh