waycast

LOW
maintainer alchemy 0 votes scanned 2026-09-22 09:37:47.929419
View on AUR
Why flagged

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

PKGBUILD

1# Maintainer: Filippo Veneri <filippo.veneri@gmail.com>
2
3# Waycast began as a fork of swaybeam (https://github.com/forkline/swaybeam)
4# and has since been renamed. Upstream publishes `swaybeam` and `swaybeam-bin`
5# to the AUR, and an earlier iteration of this package was called
6# `swaybeam-hyprland-bin`; all are listed as conflicts because they install
7# the same binary path, as does waycast-bin.
8#
9# This is the source package: it compiles the tagged release. `waycast-bin`
10# installs the archives the Release workflow builds instead, and is the
11# quicker choice for anyone without a reason to build. Both track the same
12# releases and carry the same files.
13#
14# This is the canonical copy. .github/workflows/aur-publish.yml pushes it to
15# the AUR when a release is published, rewriting pkgver, pkgrel and the
16# checksum on the way. Edit anything else here; editing those is pointless
17# because CI overwrites them.
18#
19# To publish by hand instead: set pkgver, run `updpkgsums`, regenerate
20# .SRCINFO with `makepkg --printsrcinfo > .SRCINFO`, and push both.
21
22pkgname=waycast
23pkgver=0.6.1
24pkgrel=1
25pkgdesc="Miracast source for wlroots compositors, with Hyprland extend-desktop support"
26arch=('x86_64' 'aarch64')
27url="https://github.com/alchemy/waycast"
28license=('MIT')
29install=waycast.install
30
31# Linked at build time: confirmed with ldd against a release build, not
32# guessed. gst-plugins-base-libs also supplies videoscale.
33depends=(
34 'glib2'
35 'gstreamer'
36 'gst-plugins-base-libs'
37
38 # Loaded at runtime by the streaming pipeline. Each was resolved by asking
39 # gst-inspect which .so provides the element and pacman which package owns
40 # it, so this list matches the pipeline waycast actually builds:
41 # pipewiresrc -> gst-plugin-pipewire (screen capture)
42 # imagefreeze -> gst-plugins-good (keeps an idle output flowing)
43 # pulsesrc -> gst-plugins-good (audio)
44 # rtpmp2tpay -> gst-plugins-good (RTP payloader)
45 # mpegtsmux -> gst-plugins-bad-libs (transport stream)
46 # faac -> gst-plugins-bad (AAC audio)
47 # x264enc -> gst-plugins-ugly (software H.264)
48 'gst-plugin-pipewire'
49 'gst-plugins-good'
50 'gst-plugins-bad'
51 'gst-plugins-bad-libs'
52 'gst-plugins-ugly'
53
54 # Session and transport.
55 'pipewire'
56 'wireplumber'
57 'networkmanager'
58 'wpa_supplicant'
59 'xdg-desktop-portal'
60 'ufw'
61 'iptables'
62 'iproute2'
63 'polkit'
64 'python'
65 'systemd'
66 'dbus'
67)
68
69# Only what building adds. The headers this compiles against come from glib2,
70# gstreamer and gst-plugins-base-libs, which are runtime dependencies already
71# and so are installed for the build regardless.
72makedepends=('cargo' 'pkgconf')
73
74optdepends=(
75 'xdg-desktop-portal-hyprland: screen capture on Hyprland'
76 'xdg-desktop-portal-wlr: screen capture on Sway, River, Labwc'
77 'hyprland: extend-desktop mode via a headless output'
78 'gst-plugin-va: hardware H.264 encoding on Intel and AMD (VA-API)'
79 'intel-media-driver: VA-API driver for Intel Broadwell and newer'
80 'mesa: VA-API driver for AMD (provides libva-mesa-driver)'
81 'dnsmasq: DHCP for the sink when waycast becomes the Wi-Fi Direct group owner'
82)
83
84conflicts=('waycast-bin' 'swaybeam' 'swaybeam-bin' 'swaybeam-hyprland-bin' 'swaybeam-hyprland-git')
85
86source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
87sha256sums=('ae87216dad1a11eb0e84026751e1407d31a51d4e989e76dad8e6ffae035d10c9')
88
89prepare() {
90 cd "${pkgname}-${pkgver}"
91 export RUSTUP_TOOLCHAIN=stable
92 # --locked so the build uses the committed Cargo.lock rather than whatever
93 # resolves today, which is also what the project's own release build does.
94 cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
95}
96
97build() {
98 cd "${pkgname}-${pkgver}"
99 export RUSTUP_TOOLCHAIN=stable
100 export CARGO_TARGET_DIR=target
101 # --frozen is --locked plus --offline: prepare() already fetched everything,
102 # and a build that reaches the network is one that can differ from the one
103 # whose lockfile was checked.
104 cargo build --frozen --release --bin waycast --bin waycast-networkd
105}
106
107package() {
108 cd "${pkgname}-${pkgver}"
109
110 install -Dm0755 target/release/waycast-networkd "${pkgdir}/usr/lib/waycast/waycast-networkd"
111 install -Dm0644 contrib/networkd/waycast-networkd.service "${pkgdir}/usr/lib/systemd/system/waycast-networkd.service"
112 install -Dm0644 contrib/networkd/org.waycast.Network1.service "${pkgdir}/usr/share/dbus-1/system-services/org.waycast.Network1.service"
113 install -Dm0644 contrib/networkd/org.waycast.Network1.conf "${pkgdir}/usr/share/dbus-1/system.d/org.waycast.Network1.conf"
114 install -Dm0644 contrib/networkd/org.waycast.network.policy "${pkgdir}/usr/share/polkit-1/actions/org.waycast.network.policy"
115 install -Dm0644 contrib/networkd/60-waycast-network.rules "${pkgdir}/usr/share/polkit-1/rules.d/60-waycast-network.rules"
116 install -Dm0644 contrib/networkd/install.py "${pkgdir}/usr/share/waycast/networkd/install.py"
117 install -Dm0644 docs/network-helper.md "${pkgdir}/usr/share/doc/${pkgname}/network-helper.md"
118 install -Dm0644 docs/networking.md "${pkgdir}/usr/share/doc/${pkgname}/networking.md"
119 install -Dm0755 target/release/waycast "${pkgdir}/usr/bin/waycast"
120 install -Dm0644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
121 install -Dm0644 README.md "${pkgdir}/usr/share/doc/${pkgname}/README.md"
122}
123

Scan history

Scanned at (UTC)SeverityRules
2026-09-22 09:37:47 Low 1

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion