Omahub
← All plugins
M

ASUS

by moneytosms

G-Helper-style ASUS laptop control — live temps and fan speeds, performance and GPU modes, screen refresh, keyboard RGB, editable fan curves, and firmware power limits — from the Omarchy bar

Security review

Review recommended · 3 findings

Deterministic scan — not a security guarantee

Low
Risk level
Low
Analyzed commit
fe35c24
Scanned
5 days ago

Flagged patterns appear only in documentation files (README / docs) — descriptive examples, not executable code.

  • Docs persistence README.md:104

    Registers scheduled or boot-time system tasks.

    systemctl enable --now asusd.service
  • Docs sudo README.md:102

    Command runs with sudo, elevating the process beyond the plugin environment.

    sudo pacman -S asusctl
  • Docs sudo README.md:104

    Command runs with sudo, elevating the process beyond the plugin environment.

    sudo systemctl enable --now asusd.service

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
fe35c24
Reviewed
5 days ago

The sampled code is a straightforward QML/JS control panel wrapping asusctl, hyprctl, and hyprmoncfg, with no obfuscation, credential access, hidden persistence, or destructive commands. The deterministic findings are all in the README's manual prerequisite steps (sudo pacman, systemctl enable), which are documentation only and not executed by the plugin. The remaining risk is the intended system-control nature of the plugin, not malicious behavior.

  • README documents installing/enabling the asusd system service with sudo/systemctl; these are manual prerequisites for asusctl and are not run by the plugin.
  • The plugin can change power limits, fan curves, GPU modes, battery limits, RGB, and monitor refresh rates by design; these are user-initiated controls matching the advertised functionality.
  • Only a sample of repository files was reviewed; the full Panel.qml and Model.js should still pass Omarchy's normal validation before publishing.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/moneytosms/omarchy-asus --enable
Hardware #bar #power-management #system

omarchy-asus

A tabbed ASUS laptop control panel for the Omarchy bar, built on asusctl. Power profiles, keyboard RGB, editable fan curves, and firmware limits — organized like G-Helper, scoped to what your specific model actually supports.

Main RGB
Main tab RGB tab
Fan Advanced
Fan tab Advanced tab

Why

The stock single-scroll ASUS panel dumps every asusctl feature into one column regardless of whether your laptop supports it — wattage sliders with no context, keyboard RGB effects that silently no-op on unsupported hardware, a fan curve toggle for the master enable that never appears in the UI. This plugin detects what your specific model reports supporting and only shows that.

Features

  • Live sensors — CPU and GPU temperature, both fan speeds, GPU draw and utilisation, battery charge and charge rate, refreshed every 2 seconds while the panel is open. The same readings appear in the bar icon's tooltip, so "how hot is it right now" needs no click.
  • Main — performance mode (Quiet/Balanced/Performance, tinted by mode), GPU mode (Eco/Standard/Ultimate), screen refresh rate and panel overdrive, battery charge limit.
  • RGB — keyboard lighting, filtered to the aura effects your laptop actually reports (asusctl info --show-supported), not a fixed list of twelve, plus brightness and the awake/boot/sleep power states.
  • Fan — a master "Custom Fan Curves" switch, a per-profile curve editor (curves are stored per power profile, so you pick which profile you are tuning), draggable curves per fan (CPU/GPU, plus Mid on laptops with a third fan) with the live RPM and temperature for that fan alongside, and a one-click reset.
  • Advanced — firmware power limits (PL1/PL2, GPU dynamic boost, GPU temp target) with ranges read from the firmware and a "Defaults" button that replays the values asusctl reports as default. Each control appears only if asusctl armoury list says your laptop exposes it.
  • Bar icon — scroll over it to cycle performance modes without opening the panel.

G-Helper parity

This mirrors G-Helper's layout and feature set where Linux tooling allows it. What is deliberately absent:

G-Helper feature Status here
Anime Matrix / Slash display Not implemented (no such hardware to test against)
CPU boost toggle Needs root writes to intel_pstate/cpufreq; asusctl exposes no equivalent
AutoTDP, FPS limiter, overlay Windows-only mechanisms
Per-key / per-zone RGB asusctl exposes zones only on some models; single-colour effects only for now
Automatic AC/battery profile switching asusctl applies its own AC/battery profiles; not duplicated here

Screen refresh rate

asusctl has no display controls, so the refresh buttons drive Hyprland directly. The built-in eDP-* panel is preferred over external monitors, since this is a laptop-screen feature.

Two details worth knowing:

  • Hyprland 0.56 parses its config as Lua, and hyprctl keyword monitor is rejected against a non-legacy parser. The mode change goes through hyprctl eval "hl.monitor({ ... })" instead — the same call omarchy-hyprland-monitor-scaling uses. Position and scale are always repeated, because hl.monitor replaces the whole rule.

  • If hyprmoncfg is installed and its daemon is running, it owns monitor configuration and re-applies its active saved profile a few seconds after any runtime change — a plain hl.monitor call silently reverts. The plugin detects this (hyprmoncfg status --json) and follows the mode change with hyprmoncfg save <active profile> so it sticks and survives a reboot. The Screen header shows the profile name when this is in effect.

    Note that hyprmoncfg save snapshots the whole current monitor state, not just the refresh rate, so it also refreshes that profile's workspace-to-output assignments. Without the daemon, the runtime change stands on its own and lasts until the Hyprland config is reloaded.

Development

node test-model.js   # parser regression checks against real asusctl output

Prerequisites

# From AUR
yay -S asusctl

# Or from the OGC Arch repo — see https://asus-linux.org for setup
sudo pacman -S asusctl

sudo systemctl enable --now asusd.service

Install

omarchy plugin add https://github.com/moneytosms/omarchy-asus.git --enable

Or clone manually into ~/.config/omarchy/plugins/io.github.moneytosms.asus and enable it via the Omarchy plugin menu.

Remove

omarchy plugin remove io.github.moneytosms.asus

Nothing is written outside the plugin folder and the plugin's own settings block in ~/.config/omarchy/shell.json, which Omarchy drops with the plugin.

Configuration

~/.config/omarchy/shell.json, under the plugin's settings:

Key Type Default Description
showBatteryLimit boolean true Show the battery charge limit section on Main
refreshIntervalSec integer 10 Poll interval while the panel is open (5–60s)

Compatibility

Works with any laptop asusctl supports (ROG, TUF, ProArt, Zenbook). Every section — RGB effects, fan curves, individual firmware attributes — is gated on what asusctl reports for your specific model; unsupported controls don't appear rather than sitting there doing nothing.

Troubleshooting

# Verify the plugin is detected
omarchy plugin validate ~/.config/omarchy/plugins/io.github.moneytosms.asus

# Check asusd is running
systemctl status asusd

# Check what your model supports
asusctl info --show-supported
asusctl armoury list

License

MIT