Hi all, I'm new to desktop Linux (recently switched from Windows) and I'm trying to get hybrid graphics to behave the way it does on Windows. Looking for advice from people with similar setups.
**My setup**
- ASUS laptop \Tuf A15 Ryzen 7 7445hs, AMD Radeon 740M iGPU + NVIDIA RTX 3050 Mobile (4GB)
- Pop!_OS 24.04 with COSMIC, kernel 7.1.5
- NVIDIA driver 580.173.02
- GPU mode is handled by supergfxctl. `supergfxctl -s` only lists [Integrated, Hybrid] (no MUX or dGPU-only mode)
- `system76-power graphics` says switching isn't supported on this device
**What I already fixed**
The RTX wasn't detected at all (nvidia-smi failed, nothing in lspci). The cause was supergfxd set to Integrated and the ASUS firmware value dgpu_disable = 1. After setting dgpu_disable to 0 and running `supergfxctl -m Hybrid` plus a logout, everything works: nvidia-smi shows the card, PRIME offload with `__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia` renders on the RTX, and Vulkan lists both GPUs.
**What I want**
Ideally: the RTX is used when the charger is connected and the iGPU when on battery, with no logout or reboot.
If that isn't possible: a way to turn the dGPU fully on and off at will without logging out.
At minimum: an easy way to run apps and Steam games on the RTX without starting each one from a terminal.
**What I've learned so far**
- Changing between Integrated and Hybrid makes supergfxd restart the display manager, so it needs a logout.
- In Hybrid mode the RTX should suspend itself when idle.
**My questions**
- Is there any supported way on an ASUS laptop with COSMIC to do AC/battery GPU switching without logout? Has anyone made udev rules or scripts for this that actually work?
- Does COSMIC have a "launch with discrete GPU" option in the app launcher? If not, what's the cleanest way to set GPU offload for Steam or other apps globally?
- How can I confirm the RTX really powers down when idle (I was going to check /sys/bus/pci/devices/0000:01:00.0/power/runtime_status)?
Happy to post logs or command output if useful. Thanks!