omarchy-asus

Sane laptop defaults for ASUS on Omarchy.

Install it and your ROG behaves like a laptop. No G‑Helper, no Armoury Crate, no flipping modes by hand.

Experimental. Built for the ROG Zephyrus G16 and G14, tested on a GA605KM. Other ASUS laptops share most of it.

14 W9.2 W

YouTube on battery, all fixes combined

100 %0 %

of 1 % battery drops that woke the RTX

3,8000 rpm

fastest fan at idle on battery

What you get

Numbers

Measured on a GA605KM (Ryzen AI 7 350, RTX 5060 Laptop), mostly on battery, with repeated A/B runs where noted. The fixes were applied locally on kernel 7.2.5 and nvidia-open 610; the packaged builds carry the same patches on newer bases and haven't been installed yet.

██ before   ██ after

RTX wake-ups per 1 % battery drop

stock 610/615  ████████████████████████████████ 13 of 13 drops woke the RTX (20–25 s each)
with #1299     ▏                                0 of 3; suspended in 179/179 samples

idle desktop on battery, 42 → 39 %. Average drain didn't move outside noise, so this is a wake-up count, not a watt claim.

Fan speed at idle on battery

fan 1  ██████████████████▌              2200 rpm
       ▏                                0 rpm

fan 2  ███████████████▏                 1800 rpm
       ▏                                0 rpm

fan 3  ████████████████████████████████ 3800 rpm
       ▏                                0 rpm  (7 in rerun)

asus-wmi quiet + amd-pmf balanced, idle at 28 °C (the balanced curve doesn't need fans below 54 °C, yet ran them anyway). Median −0.79 W over 4 cycles. Bursts unchanged: 5.04 GHz, 54 W all-core peak.

Do temps climb? No. This is the EC's quiet fan table rather than a fan stop: under load the fans start at 86 °C and hold it there.

Sustained all-core load on battery (each before = 100)

tctl, steady   ████████████████████████████████ 95.0 °C  throttling
               ████████████████████████████▉    86.0 °C  not throttled

apu power      ████████████████████████████████ 39.2 W
               ███████████████████████████▏     33.3 W

all-core clock ████████████████████████████████ 3421 MHz
               █████████████████████████████▉   3206 MHz  (−6 %)

fans, peak     ████████████████████████████████ 6800 rpm  from the first second
               ███████████████████▊             4200 rpm  from 86 °C

8 min of all-core load (16 busy loops) per fan table, back to back on battery at 67 %, kernel 7.2.8-9.3, sampled every 5 s; steady state is the median of the last 2 min. Before is the balanced table, after the quiet one, both with amd-pmf balanced. Repeated on 7.2.8-9.4 (86.0 °C at 31 W), and in 60 s loads after two hibernate resumes (86.1 °C peak at 32–33 W). #42

Background overhead (each before = 100)

power daemons, cpu ████████████████████████████████ 2.4 % of a core
                   ███▌                             0.27 %

rog-power          ████████████████████████████████ 1.6 %
                   █████                            0.25 %

idle-power         ████████████████████████████████ 0.75 %
                   ▏                                0.002 %

voxtype wakeups    ████████████████████████████████ 240/s
                   █████▏                           39/s

bar widget helper  ████████████████████████████████ 155 ms, 135 forks
                   ███▋                             18 ms, 12 forks

menu package check ████████████████████████████████ 160–165 ms
                   █                                5–6 ms

launcher gpu probe ████████████████████████████████ woke the RTX ~17 s
                   ▏                                3 ms, no wake

daemon CPU: 120 s samples. wakeups and helpers: single samples or 3 warm runs.

AV1 1080p60 decode, 300 frames, CPU time

software   ████████████████████████████████ 1.24 s  (1.18–1.30 user)
radeon vcn ███████████████▍                 0.60 s  (0.35–0.43 user + 0.21 sys)

mean of 3 runs. mpv playback: 4–9× less CPU across H.264, HEVC, VP9 and AV1.

Package power under a 16-thread load, 25 W limit set

stock        ████████████████████████████████ 48.5 W  limit ignored
fan curve on ████████████████▍                25.0 W  held flat (24.997–25.009)

barrel charger, performance profile. Firmware ignores PPT unless the custom fan curve is enabled.

Battery draw change per tweak, tried one at a time

██ shipped   ██ too small   ██ rejected

epp power vs balance_power   ██████████████│                  −0.86  shipped, 4/4 rounds
quiet fans on battery         █████████████│                  −0.79  shipped, median of 4
wi-fi power_save                      █████│                  −0.30  too small
core parking                             ██│                  −0.15  too small
irq steering                             ██│                  −0.13  too small
windows-style freq caps                   █│                  −0.05  too small
pci runtime pm / aspm                      │                     ~0  noise
teo idle governor                          │██████            +0.35  worse, rejected
                           −1 W            0            +1 W

We keep the ones that pay. YouTube on battery went from 14 W to ~9.2 W with several fixes combined; we don't credit that to any one of them.

Packages

Served from the x86_64 release. Versions are upstream's plus .1, so they install over stock and step aside when upstream catches up.

packageversionfixesupstream
linux-omarchy7.2.8-9.4Win-lock pass-through in hid-asus; touchpad interrupts per batch, not per byte; GA605KM power-limit ranges; amdgpu display backports; sleep with an HDMI monitor attached (GPIO 16 wake quirk)Win-lock sent to linux-input; the rest backports or not submitted yet
nvidia-open-dkms615.78.08-1.3RTX no longer woken by battery ticks; hibernate powers off; nvkms semaphore leak#1299, #1412, #1368 open
hyprland0.56.2-4.2render offset after HDMI replug#16140 merged, unreleased
omarchy, omarchy-settings4.0.6-1.2asusd hand-off, USB-C/barrel power policy, external power-manager owner, quiet fans on battery, iGPU video decode, full-scale speakers, rtkit#15667, #15668, #15669 open; the rest in the delta index
omarchy-asus-g161.0.0-1touchpad wake, hibernate mode, nvidia-powerd start limitG16-specific
asus-rog-nkey-winlock0.1.0-9Win-lock toast or auto-unlockG16-specific
omarchy-asus-keyring20261018-1the repo's signing keyn/a
Experimental, tested on the GA605 only. These replace linux-omarchy and the NVIDIA driver, so keep a second kernel (e.g. Arch linux) as a boot fallback. Key fingerprint 0B44FF7CCDD929F61BE4A2E436FE6B28AB24EC88.

The panel: omarchy-asus plugin

One panel in the Omarchy bar for the laptop's hardware: keyboard and lid Slash LEDs; per-charger keyboard, refresh rate, screen backlight and CPU power limits; battery charge limit; Fn+Super. Each section hides when your laptop doesn't have it. It's an Omarchy plugin, so it installs and updates the Omarchy way:

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

Source and docs: omarchy-asus/omarchy-asus-plugin. Written on the ROG Zephyrus G16; needs asusd for the LEDs, charge limit and power limits.

How it works

  1. Write the fix the way upstream would, gated on the hardware it's for.
  2. Measure it on the laptop. If it doesn't measure up, it doesn't ship.
  3. Ship a signed build, and send the patch upstream with a link back.
  4. When upstream releases it, delete ours. If a rebuild fails, withdraw it and stock flows through.

In progress

See the open pull requests.

Docs

Contributing

Got a G16, a G14, or another ASUS laptop? A lot is shared between models, so your fix may already be here, or yours may help ours. Open an issue with the output of cat /sys/class/dmi/id/product_name, uname -r and omarchy version, and what's broken. Small PRs tested on real hardware are welcome.

Paste what cat /sys/class/dmi/id/product_name prints.