EAPI=8

inherit meson systemd

DESCRIPTION="Modular status panel for X11 and Wayland"
HOMEPAGE="https://codeberg.org/dnkl/yambar"

SRC_URI="https://codeberg.org/dnkl/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"

KEYWORDS="~amd64"

LICENSE="MIT"
SLOT=0

IUSE="alsa +json mpd +pipewire pulseaudio static-libs +wayland X"

S="${WORKDIR}/${PN}"

RDEPEND="app-alternatives/sh
	json? ( dev-libs/json-c )
	dev-libs/libyaml
	dev-libs/tllist
	alsa? ( media-libs/alsa-lib )
	media-libs/fcft
	pulseaudio? ( media-libs/libpulse )
	pipewire? ( media-video/pipewire )
	mpd? ( media-libs/libmpdclient )
	sys-apps/coreutils
	virtual/udev
	wayland? (
		dev-libs/wayland
	)
	x11-libs/pixman
	x11-libs/libxcb[xkb]
	X? (
		x11-libs/xcb-util
		x11-libs/xcb-util-cursor
		x11-libs/xcb-util-errors
		x11-libs/xcb-util-renderutil
		x11-libs/xcb-util-wm
	)"

BDEPEND="${RDEPEND}
	sys-devel/bison
	app-text/scdoc
	sys-devel/flex
	virtual/pkgconfig
	wayland? (
		dev-libs/wayland-protocols
		dev-util/wayland-scanner
	)"

src_prepare() {
	if use pipewire && ! use json; then
		eerror "'pipewire' module requires USE flag 'json' to be enabled."
		return 1
	fi

	default
}

src_configure() {
	local emesonargs=(
		$(meson_feature wayland backend-wayland)
		$(meson_feature X backend-x11)
		$(meson_use !static-libs core-plugins-as-shared-libraries)
		$(meson_feature alsa plugin-alsa)
		$(meson_feature mpd plugin-mpd)
		$(meson_feature json plugin-i3)
		$(meson_feature pipewire plugin-pipewire)
		$(meson_feature pulseaudio plugin-pulse)
		$(meson_feature wayland plugin-river)
		$(meson_feaature json plugin-sway-xkb)
		$(meson_feature X plugin-xkb)
		$(meson_feature X plugin-xwindow)
	)

	for plugin in {backlight,battery,clock,cpu,disk-io,dwl,foreign-toplevel,mem,label,network,removables,script}; do
		emesonargs+=( -Dplugin-${plugin}=enabled )
	done

	meson_src_configure
}

src_install() {
	meson_src_install

	if use !static-libs; then
		mv "${D}"/usr/lib64/yambar/libdynlist.so "${D}"/usr/lib64/libdynlist.so || die
	fi

	rm -r "${ED}/usr/share/doc/${PN}" || die
	local -x DOCS=( LICENSE README.md CHANGELOG.md )
	einstalldocs

	systemd_douserunit "${FILESDIR}/${PN}.service"
}