blob: 44ebf2016c3f724f08808b9c58e98b796936a711 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# Maintainer: Kemal Ozturk <97kemalozturk at gmail dot com>
pkgname=framework-control
pkgver=0.5.4
pkgrel=2
pkgdesc="Lightweight control surface for Framework laptops (Fan, Battery, Power, LEDs)"
arch=('x86_64')
url="https://github.com/ozturkkl/framework-control"
license=('MIT')
depends=('xdg-utils' 'hicolor-icon-theme')
optdepends=('framework-system: Framework CLI on PATH; otherwise auto-downloaded on first run')
makedepends=('rust' 'nodejs' 'npm')
install=framework-control.install
source=("$pkgname-$pkgver.tar.gz::https://github.com/ozturkkl/framework-control/archive/refs/tags/$pkgver.tar.gz")
sha256sums=('dccddf1a3c487424c90b4fb4290158915c51e86b29599223a4c4ff18efd3947d')
_port=30912
prepare() {
cd "$srcdir/$pkgname-$pkgver"
cd web
npm ci
cd ../service
cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}
build() {
cd "$srcdir/$pkgname-$pkgver"
# Build web UI (prebuild hook generates icons and OpenAPI TS client)
cd web
GITHUB_PAGES=false \
VITE_BASE="/" \
npm run build
# Build service binary with embedded UI
cd ../service
FRAMEWORK_CONTROL_PORT=$_port \
FRAMEWORK_CONTROL_ALLOWED_ORIGINS="http://127.0.0.1:$_port" \
cargo build --release --locked --features embed-ui
}
package() {
cd "$srcdir/$pkgname-$pkgver"
install -Dm755 service/target/release/framework-control-service "$pkgdir/usr/bin/framework-control"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
# Icon generated during web build (guaranteed 512x512)
install -Dm644 web/public/assets/generated/icon-512.png \
"$pkgdir/usr/share/icons/hicolor/512x512/apps/framework-control.png"
install -Dm644 /dev/stdin "$pkgdir/usr/lib/systemd/system/framework-control.service" <<EOF
[Unit]
Description=Framework Control Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/framework-control
Restart=on-failure
RestartSec=5
PrivateTmp=yes
[Install]
WantedBy=multi-user.target
EOF
install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/framework-control.desktop" <<EOF
[Desktop Entry]
Name=Framework Control
Comment=Configure Framework Laptop battery, fans, and LEDs
Exec=xdg-open http://127.0.0.1:$_port
Icon=framework-control
Terminal=false
Type=Application
Categories=Settings;System;
EOF
}
|