Feat/battery threshold (#7)

* feat(battery-threshold): add translations and rule file

* feat(battery-threshold): add setup script

* feat(battery-threshold): add plugin manifest

* feat(battery-threshold): implement battery-threshold service

* feat(battery-threshold): implement battery-threshold widget

* feat(battery-threshold): implement battery-threshold panel

* feat(battery-threshold): add readme

* chore(battery-threshold): add dependencies field

* chore(battery-threshold): add thumbnail

* docs(battery-threshold): add thumbnail to readme

* fix(battery-threshold): add thumbnail from generator

* chore(battery-threshold): add license and icon fields to plugin.toml

* style(battery-threshold): replace tabs with spaces

* style(battery-threshold): unflatten translation files

* refactor(battery-threshold): use translations for widget tooltip

* chore(battery-threshold): replace raw strings with translations

* chore(battery-threshold): remove panel ipc event

* chore(battery-threshold): check error on file read

* chore(battery-threshold): remove `setUpdateInterval` calls

* style(battery-threshold): fix formatting

* chore(battery-threshold): remove tags capital letters

* Update plugin.toml

* chore(battery-threshold): remove de fr and tr translations

* chore(battery-threshold): update thumbnail

* fix(battery-threshold): add shell quoting for runAsync

* chore(battery-threshold): embed rule file content in setup script

* chore(battery-threshold): update manifest

* refactor(battery-threshold): use noctalia.pluginDataDir, log read/write errors

* docs(battery-threshold): update README to match template

* chore(battery-threshold): add missing dependencies to manifest

---------

Co-authored-by: Lemmy <studio@quadbyte.net>
This commit is contained in:
Damian D'Souza
2026-07-28 09:30:26 -04:00
committed by GitHub
co-authored by Lemmy
parent aace2dafe2
commit 4b1714d2c5
8 changed files with 621 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
# ------------------------------
# Battery Threshold Udev Setup
# ------------------------------
# This script sets up udev rules to allow a non-root user to write to
# /sys/class/power_supply/BAT0/charge_control_end_threshold.
# It creates a group 'battery_ctl' and adds the target user to this group.
#
# Usage:
# $ sudo ./setup_rules.sh # uses SUDO_USER (with sudo)
# $ ./setup_rules.sh username # use provided username (if ran as root)
# ------------------------------
set -e
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo "Error: This script must be run as root (use sudo)"
exit 1
fi
# Determine target user
TARGET_USER=${SUDO_USER:-$1}
if [ -z "$TARGET_USER" ]; then
echo "Error: No target user specified." >&2
exit 1
fi
if ! getent group battery_ctl >/dev/null; then
echo "Creating battery_ctl group..."
groupadd battery_ctl
fi
echo "Adding $TARGET_USER to battery_ctl group..."
usermod -aG battery_ctl "$TARGET_USER"
echo "Writing udev rule to /etc/udev/rules.d/99-battery-threshold.rules..."
cat <<'EOF' >/etc/udev/rules.d/99-battery-threshold.rules
# Battery Threshold Control - udev rule
# Grants write access to charge_control_end_threshold for users in the
# 'battery_ctl' group.
SUBSYSTEM=="power_supply", KERNEL=="BAT*", \
RUN+="/bin/chgrp battery_ctl /sys$devpath/charge_control_end_threshold", \
RUN+="/bin/chmod g+w /sys$devpath/charge_control_end_threshold"
EOF
echo "Reloading rules..."
udevadm control --reload-rules && udevadm trigger
echo "You may need a reboot for the plugin's write access to take effect"
echo "Done!"