castr
LOW
maintainer mrcode
0 votes
scanned 2026-08-20 11:11:30.284264
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: Basem Aljedai <baljedai@gmail.com>
2
pkgname=castr
3
pkgver=0.1.0
4
pkgrel=1
5
pkgdesc="Cast your Hyprland screen to an AirPlay receiver: mirror or extend, from a menu or the CLI"
6
arch=('x86_64' 'aarch64')
7
url="https://github.com/mrCode/castr"
8
license=('MIT')
9
10
# avahi is the only hard runtime dependency: castr asks it what is on the
11
# network rather than running its own mDNS browser, because avahi has been warm
12
# since boot and answers instantly while a fresh browser takes seconds.
13
depends=('avahi')
14
15
# doubletake does the actual AirPlay work. It is an optdepend rather than a
16
# depend so `castr list` and the menu still work while you install it -- and
17
# because it lives in the AUR, which a depend cannot pull in for you.
18
optdepends=(
19
'doubletake-git: AirPlay streaming (REQUIRED to cast; 0.4.0 cannot capture on Hyprland)'
20
'hyprland: required in practice — castr drives its outputs and screen-share portal'
21
'libnotify: desktop notifications'
22
'quickshell: bar widget on Omarchy Quarto and later (see castr-indicator)'
23
'waybar: bar indicator on earlier setups'
24
)
25
makedepends=('go' 'git')
26
27
# The binaries are built with -s -w, so there are no debug symbols to split
28
# out. Without this makepkg still emits an empty castr-debug package and warns
29
# about it on every build.
30
options=('!debug')
31
install="${pkgname}.install"
32
33
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/refs/tags/v${pkgver}.tar.gz")
34
sha256sums=('fd99250e304dfff0e596d2fe94399061297507423cc1812d1b1f2240cabd3e51')
35
36
build() {
37
cd "${srcdir}/${pkgname}-${pkgver}"
38
export CGO_ENABLED=0 # a single static binary is the point of the rewrite
39
export GOFLAGS="-trimpath -mod=readonly -modcacherw"
40
export GOPATH="${srcdir}/gopath"
41
42
go build -ldflags "-s -w -X main.version=${pkgver}" -o build/castr ./cmd/castr
43
go build -ldflags "-s -w -X main.version=${pkgver}" -o build/castrd ./cmd/castrd
44
}
45
46
check() {
47
cd "${srcdir}/${pkgname}-${pkgver}"
48
export GOPATH="${srcdir}/gopath"
49
# The suite needs no compositor, no network, and no receiver: every external
50
# command is injected. The process-group tests do spawn real short-lived
51
# shells, which is the point of them.
52
go test ./...
53
}
54
55
package() {
56
cd "${srcdir}/${pkgname}-${pkgver}"
57
58
install -Dm755 build/castr "${pkgdir}/usr/bin/castr"
59
install -Dm755 build/castrd "${pkgdir}/usr/bin/castrd"
60
61
install -Dm644 README.md "${pkgdir}/usr/share/doc/${pkgname}/README.md"
62
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
63
64
# Bar integrations, both shipped: Omarchy Quarto replaced waybar with
65
# Quickshell, and older setups still run waybar.
66
install -Dm644 share/quickshell/castr-indicator/manifest.json \
67
"${pkgdir}/usr/share/${pkgname}/quickshell/castr-indicator/manifest.json"
68
install -Dm644 share/quickshell/castr-indicator/Widget.qml \
69
"${pkgdir}/usr/share/${pkgname}/quickshell/castr-indicator/Widget.qml"
70
install -Dm644 share/waybar/cast-indicator.jsonc \
71
"${pkgdir}/usr/share/${pkgname}/waybar/cast-indicator.jsonc"
72
install -Dm644 share/waybar/cast-indicator.css \
73
"${pkgdir}/usr/share/${pkgname}/waybar/cast-indicator.css"
74
}
75
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-20 11:11:30 | Low | 1 |