If you have a SSD you can be aggressive on the disk suspend timeout, as there's no spin up/down wear issue as with mechanical disks.
With this the battery life is good enough that I never felt the need to optimize further.
- Force deep sleep mode, as s2idle doesn't work.
- Set the ASPM policy. To anything. Basically the default doesn't work. (I went with 'powersave', obviously.)
- Run powertop --auto-tune on boot.
- Set the cool-bottom thermal profile, but that's just to make it work as a lap top.
- Run a BIOS upgrade. :V
(fwupdmgr did the whole job for me~)
Some modules also have blacklists that prevent certain power saving modes from being enabled. This is true for the snd-hda-intel module to prevent a well known popping sound. Since disabling the blacklist, I haven't encountered the issue however YMMV. Similarly to enable ASPM on the PCIE bus, I've had to force it via a kernel parameter.
With regards to the GPU, I noticed my Intel GPU can scale its frequency between 300mhz and 950mhz but the default minimum was set to 350mhz. Other such tweaks such as enabling frame buffer compression [4], can save you a few more watts.
While the Linux defaults does its best to be suitable across different hardware configurations, you'll have to meddle with many parameters to get it customised to your configuration, and that could bring some instability with it so exercise some caution.
Oh, and also be mindful of the apps you run. The Great Suspender for Chrome can save you some watts, cpu and memory by suspending tabs that are not in use. And switching to a light desktop such as Sway or i3 can also do wonders.
As I type this, my battery is reporting a draw of 3.1 watts, 30% battery remaining with 4:40 of operating time at the current workload.
[1] - https://wiki.archlinux.org/index.php/TLP
[2] - https://hansdegoede.livejournal.com/18412.html
[3] - https://wiki.archlinux.org/index.php/Power_management#SATA_A...
[4] - https://wiki.archlinux.org/index.php/Intel_graphics#Framebuf...
Using Arch often gives me advance warning that my apps will break on users machines due to changes in libraries. I see the changes first and can add compatibility for the new library version such that it's fixed before affecting my users.
I love it as a daily driver.
Totally agree that it's a great daily driver. It has EVERYTHING!