Add ThinkPad Fan & Thermal Control plugin - #175
Conversation
The installed udev rule runs The plugin's own documentation states the risk at thinkpad-fan/README.md:53 ("Forcing the fans off Two existing plugins in this repository solve the identical problem with a dedicated group instead The mode is also not disclosed to the user in the README. thinkpad-fan/README.md:42 says only
"No external commands, no network access." is inaccurate for the first half. Both Nothing here is unsafe: the only interpolated command value is whitelist-checked at
The script truncates /etc/modprobe.d/thinkpad_acpi.conf with
The
The setup and install instructions hardcode the author's personal checkout path |
Plugin
piero-93/thinkpad-fanplugin.toml)What it does
A fan monitor and manual speed control for ThinkPads using the
thinkpad_acpikernel module. The bar widget shows the current fan RPM and turns a warning color when the fans are forced off or set to a manual level; clicking it opens a panel to pick a fan level (Auto, Full, 0–7). No root at runtime.Runs entirely locally: reads
/proc/acpi/ibm/fanand/sys/class/thermal/<zone>/temp, and writeslevel <value>to/proc/acpi/ibm/fanonly when a level is picked in the panel. No external commands, no network access.Port of my Noctalia v4 plugin of the same name (noctalia-dev/legacy-v4-plugins#870).
External dependencies
None — self-contained (reads/writes sysfs and procfs directly, using only coreutils).
Requires the
thinkpad_acpikernel module loaded withfan_control=1and write access to/proc/acpi/ibm/fan;scripts/setup-fan-permissions.shsets up both (module option + udev rule) without giving the plugin root.Testing
Added the bar widget and opened the panel; picked several fan levels (Auto, Full/disengaged, and fixed 0–7) and confirmed the writes take effect and the RPM/level/temperature update; verified the status coloring (red when fans are forced off) and the multi-row tooltip (speed / level / temperature).
Screenshots / Videos
Checklist
idafter the/inplugin.tomlexactly.plugin.toml,README.md,thumbnail.webp, andtranslations/en.json.README.mdfollows the README template, documents every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.thumbnail.webpwith the thumbnail generator.versionfollows semver and is bumped in this PR;plugin_apiis the oldest API level this plugin requires.catalog.toml; CI generates it.Code review attestation
Plugins run as trusted, unsandboxed Luau in the user's session. Confirm:
licensedeclared inplugin.toml.