Hyprland on asus rog g15 g513qr with external monitor

Hi everyone, new here!

I’ve been using Hyprland successfully on my other machines, but I’m having trouble getting it to work properly on this laptop:

:backhand_index_pointing_right: ROG Strix G15 (2021) with RTX 3070 and 1080p 300Hz display

Right now I’m using it with an external ASUS 2K 144Hz monitor, connected via DisplayPort through the USB-C Thunderbolt port.

This laptop has a quirk: even though it uses NVIDIA Optimus for GPU switching, when an external display is connected via USB-C, it bypasses Optimus and uses the NVIDIA GPU directly for that display.

I’m on EndeavourOS, running the custom linux-g14 kernel.
With KDE and proprietary NVIDIA drivers, everything works great — I can launch apps on the NVIDIA GPU using switcherooctl, no issues at all.

But with Hyprland, I just can’t get it working properly.

  • It won’t render on the external monitor.
  • On the internal screen, Hyprland does use the NVIDIA GPU, but everything is super laggy.

Anyone here running a similar setup or have any tips to fix this?

Thanks in advance!

I know this is old but may help others. For my G16 2024 the following helped (taken from the asus-linux.org project’s FAQ )

If your model supports video via USB-C and one of the USB-C ports takes the signal from iGPU, then buy a USB-C to HDMI/DP cable or dongle. this way, you can avoid rendering two screens on separate GPUs

This along with setting up the asus-armoury dkms driver.

Hi, so i ran for the best part of a year on my old G15 before it cooked itself with pretty much the same arrangement with an external display connected to the discrete GPU.

So there are a couple of ‘management apps’ you need to control the GPU switching, firstly in the 3070 G15 I had to use the proprietary NVIDIA driver. I was never able at the time to get the Open to work with the machine at the time.

You need to run the nvidia persistenced service running, but do not install the nvidia-prime related stuff or anything else that claims to manage optimus because I suspect Asus did something funky with their management plumbing at a hardware level which stopped most generic stuff from working such as envycontrol and gwe. Plus they will render an install so messed up you need to be hitting it with a wipe. Or worse as some stuff cannot control the cooling fans properly and you will cook the laptop.

Which is why you need to get and I mean need supergfxctl and asusctl which you can find asus-linux / supergfxctl · GitLab and asus-linux / asusctl · GitLab and they are both on the AUR but chaotic-aur has then built if you don’t want the hassle as they do get regular updates from Asus.

Both these are able to control the GPU switching and fan control and all the other messed up plumbing Asus did… Basically asusctl handles the asus_wmi interfaces for cooling, battery, etc. Then supergfxctl is the management stick for switching the GPU to allow:

  • Hybrid - enables dGPU-offload mode
  • Integrated - uses the iGPU only and force-disables the dGPU
  • Vfio - binds the dGPU to vfio for VM pass-through

As long as you use the USB-C ports on the left hand side that has the ‘Displayport’ logo next to usb logo you’re going basically be using the dGPU exclusively and what I did was have a startup check that disabled the amdgpu and selected the correct DP port for Hyprland to use in my config depending on which isb-c port I was plugged into..