waycast
LOW
maintainer alchemy
0 votes
scanned 2026-09-22 09:37:47.929419
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
22
pkgname=waycast
23
pkgver=0.6.1
24
pkgrel=1
25
pkgdesc="Miracast source for wlroots compositors, with Hyprland extend-desktop support"
26
arch=('x86_64' 'aarch64')
27
url="https://github.com/alchemy/waycast"
28
license=('MIT')
29
install=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.
33
depends=(
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.
72
makedepends=('cargo' 'pkgconf')
73
74
optdepends=(
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
84
conflicts=('waycast-bin' 'swaybeam' 'swaybeam-bin' 'swaybeam-hyprland-bin' 'swaybeam-hyprland-git')
85
86
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
87
sha256sums=('ae87216dad1a11eb0e84026751e1407d31a51d4e989e76dad8e6ffae035d10c9')
88
89
prepare() {
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
97
build() {
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
107
package() {
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) | Severity | Rules |
|---|---|---|
| 2026-09-22 09:37:47 | Low | 1 |