Choose TLP or power-profiles-daemon, not both
These tools solve the same problem differently, and running both means they overwrite each other’s settings. Pick one.
power-profiles-daemon ships with GNOME and KDE on most mainstream distributions. It offers Power Saver, Balanced and Performance in the system menu or under Settings > Power. Run powerprofilesctl get to see what is active and powerprofilesctl set power-saver to switch. Its limit is that it gives you little control over individual devices such as USB ports, SATA links or Wi-Fi power saving.
TLP suits you if you want that control. It reads /etc/tlp.conf (or drop-in files in /etc/tlp.d/) and applies separate settings on battery and on AC. It can also set charge thresholds on supported ThinkPads and a few other models, which slows long-term battery wear. The cost is a config file you now own, and aggressive USB autosuspend can make a mouse or dock stutter. If you choose TLP, run sudo systemctl mask power-profiles-daemon and confirm with sudo tlp-stat -s.
Understand the governor and energy preference
Check your governor with cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor. On modern Intel and AMD chips using intel_pstate or amd-pstate, you will see powersave or performance. Despite the name, powersave there is a dynamic governor, not a fixed slow speed. The real lever is energy_performance_preference in the same folder, with values from performance through balance_power to power. Both tools above set it for you, so avoid editing it by hand while either runs.
On older drivers such as acpi-cpufreq you may choose between ondemand, schedutil and conservative; the kernel project explains each in its cpufreq governor reference. Leaving performance active on battery is the one choice that reliably costs you runtime.

Audit wakeups with powertop
Install powertop and run sudo powertop while unplugged and doing normal work. Give it a couple of minutes. The Overview tab lists the processes and devices causing wakeups. Idle stats shows whether the CPU reaches deep C-states; if it stays shallow, something is keeping it busy. Tunables lists switches marked Bad, and pressing Enter on one fixes it until reboot.
Read that list before running powertop --auto-tune at every boot, because it can enable USB autosuspend on your keyboard or Bluetooth adapter and cause lag. If you use TLP, make fixes in its config instead. Radios count too. If you never use Bluetooth away from home, switch it off, and see the Bluetooth pairing problems guide if it misbehaves when you turn it back on. A weak signal also makes the Wi-Fi chip work harder, which the home Wi-Fi tips address.
Screen, hybrid graphics and browser video
The display is often the largest steady draw. Lower brightness first, then look under Settings > Displays for a lower refresh rate on battery, since 60 Hz costs less than 120 Hz or higher.
If your laptop has an integrated and a discrete GPU, make sure the discrete one sleeps. On NVIDIA Optimus systems use PRIME offload, so apps run on the integrated chip unless you ask otherwise. Tools such as supergfxctl or envycontrol can force integrated-only mode after a reboot. Verify by reading power/runtime_status inside the card’s folder under /sys/bus/pci/devices/; it should say suspended when idle.
Video is the other common culprit, because CPU decoding drains far faster than hardware decoding. In Firefox, open about:support and check the Media section. In Chromium-based browsers, open chrome://gpu and look for Video Decode: Hardware accelerated. This relies on VA-API, so install intel-media-driver or mesa-va-drivers as your hardware needs and test with vainfo. Some distributions need a browser flag to enable it. If your GPU is unsupported, a lower stream resolution is a fair workaround.
Suspend or hibernate: match it to your trip
Suspend keeps your session in RAM and resumes in seconds. Run cat /sys/power/mem_sleep; the bracketed entry is active. s2idle draws more than deep sleep, and the kernel parameter mem_sleep_default=deep switches modes on laptops whose firmware allows it. Test that the machine wakes reliably before trusting it.
Hibernate writes memory to disk and powers off completely, so it uses nothing. The trade-offs are slower resume and swap at least as large as your RAM, plus extra setup with encrypted swap or Secure Boot. Use suspend for short breaks. For overnight bags and long flights, try systemctl hibernate, or enable suspend-then-hibernate in /etc/systemd/sleep.conf, which hibernates after a delay you choose. Test it once at home first.
