Initial Commit

This commit is contained in:
2026-01-07 14:37:17 +02:00
commit 57dc14dff7
6 changed files with 154 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
# Exclude bpm archives
*.bpm
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# Github repository
REPO="ilya-zlobintsev/LACT"
# Get tag name using Github Rest API
TAG_NAME=$(curl -s -L -H "X-GitHub-Api-Version: 2022-11-28" -H "Authorization: token ${GITHUB_API_TOKEN}" https://api.github.com/repos/"$REPO"/releases/latest | jq -r '.tag_name')
# Trim 'v' character in TAG_NAME variable
VERSION=$(echo "$TAG_NAME" | tr -d 'v')
echo "$VERSION"
+39
View File
@@ -0,0 +1,39 @@
name: lact
description: Linux GPU configuration and monitoring tool
version: 0.8.3
revision: 1
url: https://github.com/ilya-zlobintsev/LACT
license: MIT
architecture: any
type: source
depends:
- gcc-libs
- glibc
- gtk4
- hwdata
- ocl-icd
make_depends:
- rustc
- clang
- libadwaita
- fuse3
downloads:
- url: https://github.com/ilya-zlobintsev/LACT/archive/refs/tags/v${BPM_PKG_VERSION}.tar.gz
extract_to: ${BPM_SOURCE}
extract_strip_components: 1
checksum: f604b26fadfa4a53d5aaa7c8d8953dc8989710a8d68b3778efbde29ad7889bb0
split_packages:
- name: lact
conflicts:
- lact-libadwaita
- name: lact-libadwaita
description: Linux GPU configuration and monitoring tool (Libadwaita)
depends:
- gcc-libs
- glibc
- gtk4
- hwdata
- ocl-icd
- libadwaita
conflicts:
- lact
+35
View File
@@ -0,0 +1,35 @@
diff --git a/docs/CONFIG.md b/docs/CONFIG.md
index 2b1a803..29a86fd 100644
--- a/docs/CONFIG.md
+++ b/docs/CONFIG.md
@@ -1,7 +1,7 @@
# Configuration
The LACT config file is located in `/etc/lact/config.yaml`, and contains all of the GPU settings that are typically edited in the GUI, as well as a few settings specifying the behaviour of the daemon.
-LACT listens for config file changes and reloads all GPU settings automatically, but daemon-related settings such as the logging level or permissions require a service restart (`systemctl restart lactd`).
+LACT listens for config file changes and reloads all GPU settings automatically, but daemon-related settings such as the logging level or permissions require a service restart (` ectl sv restart lactd`).
Full config file with all possible options:
```yaml
diff --git a/lact-gui/src/app.rs b/lact-gui/src/app.rs
index 82b26ec..6294978 100644
--- a/lact-gui/src/app.rs
+++ b/lact-gui/src/app.rs
@@ -212,7 +212,7 @@ impl AsyncComponent for AppModel {
.expect("Could not list devices");
if system_info.version != GUI_VERSION || system_info.commit.as_deref() != Some(GIT_COMMIT) {
- let err = anyhow!("Version mismatch between GUI and daemon ({GUI_VERSION}-{GIT_COMMIT} vs {}-{})! If you have updated LACT, you need to restart the service with `sudo systemctl restart lactd`.", system_info.version, system_info.commit.as_deref().unwrap_or_default());
+ let err = anyhow!("Version mismatch between GUI and daemon ({GUI_VERSION}-{GIT_COMMIT} vs {}-{})! If you have updated LACT, you need to restart the service with `sudo ectl sv reload && sudo ectl sv restart lactd`.", system_info.version, system_info.commit.as_deref().unwrap_or_default());
sender.input(AppMsg::Error(err.into()));
}
@@ -1045,7 +1045,7 @@ fn show_embedded_info(parent: &ApplicationWindow, err: anyhow::Error) {
let text_label = gtk::Label::new(Some(&text));
let enable_label = gtk::Entry::builder()
- .text("sudo systemctl enable --now lactd")
+ .text("sudo ectl sv reload && sudo ectl sv enable lactd && sudo ectl sv start lactd")
.editable(false)
.build();
+6
View File
@@ -0,0 +1,6 @@
name: lactd
description: LACT GPU control daemon
type: background
start_cmd: /usr/bin/lact daemon
exit_method: kill
restart: true
+60
View File
@@ -0,0 +1,60 @@
# This is the source.sh script. It is executed by BPM in a temporary directory when compiling a source package
# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE
# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT
# The prepare function is executed in the root of the temp directory
# This function is used for putting downloaded files to the correct location or applying patches
prepare() {
cd "$BPM_SOURCE"
# Add enit support
patch -Np1 -i "$BPM_WORKDIR"/enit-support.patch
cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}
# The build function is executed in the source directory
# This function is used to compile the source code
build() {
# Libadwaita
cargo build --release --locked --frozen --features=adw
mv target/release/lact target/release/lact-libadwaita
# GTK4
cargo build --release --locked --frozen
}
# The check function is executed in the source directory
# This function is used to run tests to verify the package has been compiled correctly
check() {
cargo test --release --frozen --all --all-features --verbose
}
# The package function is executed in the source directory
# This function is used to move the compiled files into the output directory
package_lact() {
make PREFIX=/usr DESTDIR="$BPM_OUTPUT" install
install -Dm755 target/release/lact "$BPM_OUTPUT"/usr/bin/lact
# Remove systemd service
rm -r "$BPM_OUTPUT"/usr/lib
# Install esvm service
install -Dm644 "$BPM_WORKDIR"/lactd.esv "$BPM_OUTPUT"/etc/esvm/services/lactd.esv
# Install package license
install -Dm644 "$BPM_SOURCE"/LICENSE "$BPM_OUTPUT"/usr/share/licenses/lact/LICENSE
}
package_lact-libadwaita() {
make PREFIX=/usr DESTDIR="$BPM_OUTPUT" install
install -Dm755 target/release/lact-libadwaita "$BPM_OUTPUT"/usr/bin/lact
# Remove systemd service
rm -r "$BPM_OUTPUT"/usr/lib
# Install esvm service
install -Dm644 "$BPM_WORKDIR"/lactd.esv "$BPM_OUTPUT"/etc/esvm/services/lactd.esv
# Install package license
install -Dm644 "$BPM_SOURCE"/LICENSE "$BPM_OUTPUT"/usr/share/licenses/lact/LICENSE
}