I haven't gotten into battery optimization yet but I will say, I picked up a laptop not too long ago and put Arch Linux on it with Niri (window manager).
I am getting about ~4 hours of active usage where the display is on full time and I'm doing things (code editing web apps and scripts, running Docker containers, browsing, listening to music, etc.). I wouldn't mind more battery life out of it if possible, but it's not the end of the world.
What I'm really happy about is the price / performance ratio of Nimo's laptops.
It was $575 on Amazon a few months ago. It's a 15" 1080p IPS display, Ryzen 7 6800H (8 core / 16 threads), 32 GB of memory, 1TB SSD with an integrated AMD 680M GPU. That GPU can use up to 8 GB of system memory as its VRAM (you can configure the amount in the BIOS). It also has a 2 year warranty.
I initially got it as a travel laptop since I mainly use desktop machines. The keyboard is good and has a backlight, the trackpad is good to the point where I don't use trackpads much at all and I don't feel like it's in the way or a problem. Niri is super trackpad optimized too, I'm using 3-4 finger gestures a lot.
It's quite fast for what I'm doing with it and like it a lot. Once I'm back from traveling, I'll write an extensive blog post on my experience with it.
I don't work for the company or have any affiliation with them, I bought it with my own money. The only interaction I had with them was calling their support before I bought it to see if it was still returnable if I formatted the drive and put Linux on it. They said absolutely, it's no problem. I had no intent on returning it unless the hardware died early. For reference when I called I got a human very quickly and they were friendly.
Grab something that ships with Linux and has Linux support from the vendor you buy it from. Also, get somewhat recent AMD hardware without a dGPU.
If you spend some time tweaking some settings and tuning drivers, I've been able to squeeze 10-12hrs out of an 16t Zen 3 laptop on 7nm node, and 8-12hrs out of a 16t Zen 4 refresh laptop on a 4nm node. You should be able to squeeze more out of a Zen 5 refresh with efficiency cores on a smaller node.
Out of the box, Linux is configured for the widest compatibility, and that means not enabling or tuning all settings for optimal battery life. Getting good battery life is achievable, just expect to do some tweaking.
For example:
- Using the amd_pstate in active mode
- TuneD (or power-profiles-daemon, but it's less comprehensive)
- powertop --auto-tune
- ASPM in powersave mode
- WiFi/BT driver power management
- Tweaking amdgpu power management settings
- Adjusting brightness/backlight timeout
- Downclocking & undervolting CPU/APU
- Also look into the kernel's thermal governors
TuneD + powertop will take care of most of that for you automatically, modern Linux distros enable amd_pstate in active mode by default, there are tools for automating GPU powersaving, and backlight behavior has a GUI in DEs.
With the dozen or so laptops I've switched over Linux, battery life is usually either much better or much worse. In the later case, some tinkering fixes it.
The more reasonable alternative is to have a souped up linux desktop at home and access it remotely with a low latency "game" streaming protocol such as sunshine+moonlight. It's a bit involved to set up and make work properly trough a low quality internet link but the final result affords the choice of virtually any laptop, freeing you from worrying about performance and battery life when running things that saps energy. You can even buy a common pc laptop, install linux and as long as you can get it to use less than 5W of energy when doing the remote streaming (which is pretty easy with most laptops from the last 10 years), you will get between (assuming decent, non degraded battery) 6 and 11 hours of battery life and potentially way more if it has one of those giant 90Wh batteries in it.
In my case I went with an old thinkpad X220, the battery is heavily degraded and It can't do less than 13W while streaming even with hardware video decoding due to the old inefficient chips in it, but even then I get between 3 to 4 hours of remote usage out of it. I can connect it to my computer using whatever available wi-fi or 4g/5g tethering, tailscale takes care of encryption and making a direct connection (no hops, thats important for latency). I've swapped the wlan card (multiple generations behind) with a modern intel wlan with wi-fi 6 which helps getting good network performance.
Sunshine can achieve a fluid performance (60fps, low latency, low res) as long as it can get between 200KiB/s (idling) and 300KiB/s of bandwidth. Tuning sunshine was a bit of a pain since it was really made for local ethernet streaming at 10MiB/s+. The first thing is to sacrifice encoding latency by swapping the "inefficient" hardware encoder with a software encoder set to one of the "slow" presets. This will lower your bandwidth req. right away and the latency increase is negligible when taking into account typical wan network latency. Host CPU load is minor at low resolutions and 60fps. H264 is all that X220 can decode, so H264 it is, but newer machines should afford you fancier video encoders. For some reason you can't control the Opus encoder bitrate and in my tests it was encoding at 64KiB/s (512kbps !), so usually I disable sound. There seems to be a 128kbps mode in the code but it might be busted for now. Disabling FEC also helps. Just remember that sticking to low resolutions makes everything quadratically more efficient :). Chroma subsampling is the enemy of colorful text, so you will want to enable 4:4:4 mode in moonlight if your hardware decoder supports it! (and of course the X220 hardware dec. can't do that, so no sharp syntax highlight for me when on battery!, though because of my astigmatism I like using bold text which is less susceptible to that....)
Anyway, sorry for my info dump, just wanted to share.
Pretty cool and thanks for sharing. I went down a similar path at some point to try to be a "road warrior", but in the end I bit the bullet, learned nvim and went the tmux + nvim + ... route.
I am getting about ~4 hours of active usage where the display is on full time and I'm doing things (code editing web apps and scripts, running Docker containers, browsing, listening to music, etc.). I wouldn't mind more battery life out of it if possible, but it's not the end of the world.
What I'm really happy about is the price / performance ratio of Nimo's laptops.
I picked this one up: https://www.nimopc.com/products/nimo-15-6-n155-r7-6800h-fhd-...
It was $575 on Amazon a few months ago. It's a 15" 1080p IPS display, Ryzen 7 6800H (8 core / 16 threads), 32 GB of memory, 1TB SSD with an integrated AMD 680M GPU. That GPU can use up to 8 GB of system memory as its VRAM (you can configure the amount in the BIOS). It also has a 2 year warranty.
I initially got it as a travel laptop since I mainly use desktop machines. The keyboard is good and has a backlight, the trackpad is good to the point where I don't use trackpads much at all and I don't feel like it's in the way or a problem. Niri is super trackpad optimized too, I'm using 3-4 finger gestures a lot.
It's quite fast for what I'm doing with it and like it a lot. Once I'm back from traveling, I'll write an extensive blog post on my experience with it.
I don't work for the company or have any affiliation with them, I bought it with my own money. The only interaction I had with them was calling their support before I bought it to see if it was still returnable if I formatted the drive and put Linux on it. They said absolutely, it's no problem. I had no intent on returning it unless the hardware died early. For reference when I called I got a human very quickly and they were friendly.