Flickering in Full-Screen Apps (VS Code, Chrome, Cursor) on External Monitor

Title: Flickering in Full-Screen Apps (VS Code, Chrome, Cursor) on External Monitor

Description:
When I enable full-screen mode on my external monitor by HDMI 2.0, applications like VS Code, Chrome, and Cursor start flickering. The opacity reduces, revealing the wallpaper underneath, and the issue worsens with mouse interaction. This happens only on the external display (the laptop screen works fine).

System Details:

  • OS: Zorin OS 17.3

  • Desktop Environment: Wayland

  • GPU:
    01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA107M [GeForce RTX 3050 Mobile] [10de:25a2] (rev a1)
    06:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [1002:1638] (rev c6)

  • Driver:
    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 570.124.04 Driver Version: 570.124.04 CUDA Version: 12.8 |
    |-----------------------------------------+------------------------+----------------------+
    | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
    | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
    | | | MIG M. |
    |=========================================+========================+======================|
    | 0 NVIDIA GeForce RTX 3050 ... Off | 00000000:01:00.0 On | N/A |
    | N/A 55C P8 8W / 80W | 92MiB / 4096MiB | 0% Default |
    | | | N/A |
    +-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 1910 G /usr/bin/gnome-shell 1MiB |
+-----------------------------------------------------------------------------------------+

*-display
description: VGA compatible controller
product: GA107M [GeForce RTX 3050 Mobile]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
logical name: /dev/fb1
logical name: /dev/fb0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=nvidia latency=0 mode=1920x1080 resolution=1920,1080 visual=truecolor xres=1920 yres=1080
resources: iomemory:fb0-faf iomemory:fc0-fbf irq:129 memory:d0000000-d0ffffff memory:fb00000000-fbffffffff memory:fc00000000-fc01ffffff ioport:3000(size=128) memory:d1080000-d10fffff
*-display
description: VGA compatible controller
product: Cezanne
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0
bus info: pci@0000:06:00.0
logical name: /dev/fb0
version: c6
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi msix vga_controller bus_master cap_list fb
configuration: depth=32 driver=amdgpu latency=0 resolution=1920,1080
resources: iomemory:fc0-fbf iomemory:fc0-fbf irq:59 memory:fc10000000-fc1fffffff memory:fc20000000-fc201fffff ioport:1000(size=256) memory:d1500000-d157ffff

  • Monitor: Monitor Gamer AOC 23.8" Full HD, 100Hz, 1ms, IPS, DisplayPort e HDMI, Adaptive-Sync - 24G2E1

Troubleshooting Attempts:

  1. Tried switching between X11/Wayland (if applicable).
  2. Adjusted Fractional Scaling/Display Scaling in Settings.
  3. Enabled/disabled "Force Full Composition Pipeline" (NVIDIA users).

Question:
Is this a known issue with my GPU/driver combo? Are there workarounds (e.g., kernel parameters, driver versions)?

Welcome to the Forum!

Because You use a Nvidia Card, I would recommend to switch to Xorg. That should work better with Nvidia. You could try a different Driver Version. Maybe the 550 or 535 instead of the 570.

What does this mean? Do You have turned off Fractional Scaling? If not, try it with disabled.

Another Thing could be Your built-in AMd Graphics. Maybe the Screen Flickers come from this because it is used. You could try the Command sudo prime-select nvidia to use primary Your Nvidia Card or sudo prime-select on-demand to switch automatically between both depending on the needed Graphics Power.

1 Like

Update:
Thanks for the help. Here’s what worked for me:

  1. Disabled Fractional Scaling (already turned off in Display Settings).
  2. Tried prime-select (for NVIDIA users) but it didn’t resolve the issue.
  3. The Fix: Forced Xorg by disabling Wayland:
    • Edited /etc/gdm3/custom.conf and uncommented WaylandEnable=false.
    • After a reboot, the flickering in full-screen apps (VS Code, Chrome, etc.) stopped.
1 Like

Now have new issues.
The notebook monitor freeze and dont returning. I have to use the power button to shutdown

Please open a new thread for this new issue, making sure to provide as much information in detail as possible: when does it happen, what have you tried, etc.

The screen freezing problem has to do with the suggested solution to the topic issue.

Is Secure Boot disabled in BIOS settings?

This sounds to me like an underlying problem. Switching the display manager only switched the symptoms.
Aside from disabling secure boot - have you disabled hardware acceleration in Gnome?

Also: Since it happens on Full Screen, we should check for resolution inconsistencies (Edit: Using xrandr terminal command while you are logged in on Xorg) and upgrade your Mesa:

sudo add-apt-repository ppa:kisak/turtle

sudo apt update && sudo apt full-upgrade

1. Secure Boot Status
:white_check_mark: Is Secure Boot disabled in BIOS settings?
Yes, Secure Boot is disabled in my BIOS settings.

2. Hardware Acceleration in GNOME
:wrench: Have you disabled hardware acceleration in GNOME?
I haven’t tried this yet. Could you clarify how to disable it?

  • (For Chrome/VS Code: I know they have their own HA settings, but I’m unsure about GNOME-level disabling.)

3. Resolution Check via xrandr
:bar_chart: Resolution inconsistencies on Xorg?
Here’s the output of xrandr (logged in via Xorg):

Screen 0: minimum 16 x 16, current 3840 x 1080, maximum 32767 x 32767
XWAYLAND0 connected 1920x1080+1920+0 (normal left inverted right x axis y axis) 530mm x 300mm
   1920x1080     59.96*+
   1440x1080     59.99  
   1400x1050     59.98  
   1280x1024     59.89  
   1280x960      59.94  
   1152x864      59.96  
   1024x768      59.92  
   800x600       59.86  
   640x480       59.38  
   320x240       59.52  
   1680x1050     59.95  
   1440x900      59.89  
   1280x800      59.81  
   720x480       59.71  
   640x400       59.95  
   320x200       58.96  
   1600x900      59.95  
   1368x768      59.88  
   1280x720      59.86  
   1024x576      59.90  
   864x486       59.92  
   720x400       59.55  
   640x350       59.77  
XWAYLAND1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 340mm x 190mm
   1920x1080     59.96*+
   1440x1080     59.99  
   1400x1050     59.98  
   1280x1024     59.89  
   1280x960      59.94  
   1152x864      59.96  
   1024x768      59.92  
   800x600       59.86  
   640x480       59.38  
   320x240       59.52  
   1680x1050     59.95  
   1440x900      59.89  
   1280x800      59.81  
   720x480       59.71  
   640x400       59.95  
   320x200       58.96  
   1600x900      59.95  
   1368x768      59.88  
   1280x720      59.86  
   1024x576      59.90  
   864x486       59.92  
   720x400       59.55  
   640x350       59.77  
  • Are there any mismatches between my monitor’s native resolution and active modes?

4. Mesa Upgrade
:sauropod: Upgrade Mesa via kisak/turtle PPA:
ran:

sudo add-apt-repository ppa:kisak/turtle
sudo apt update && sudo apt full-upgrade

This was the output

> Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  lp-solve
Use 'sudo apt autoremove' to remove it.
The following packages will be upgraded:
  docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras
  docker-compose-plugin
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 89,5 MB of archives.
After this operation, 1.446 kB disk space will be freed.
Do you want to continue? [Y/n] y

Critical New Observations

:warning: Persistent Freezing Issue:
After forcing Xorg (WaylandEnable=false), both screens freeze intermittently, starting with the primary display. This happens only when I connect headphones via the P3 (3.5mm) jack.

:wrench: Recent BIOS Update:

  • Updated BIOS to the latest version, but the issue persists.
  • Trigger: The freezes only occur when using wired headphones.

Summary

  • Workaround: Xorg fixed flickering but introduced freezes (audio-related?).
  • Strange Trigger: Headphone jack connection seems to destabilize the system.
  • Hardware Context:
    • GPU: [Your GPU + driver, e.g., NVIDIA RTX 3060 w/ driver 535].
    • Audio: [Specify chipset if known, e.g., Realtek ALC256].

Question: Could this be a power management or audio driver conflict?


In pavucontrol is your audio output HDMI?

Can you upgrade to the Nvidia DKMS 570 driver and test?

sudo apt remove --purge '^nvidia-.*'

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt update && sudo apt install nvidia-driver-570 nvidia-dkms-570

pavucontrol isn't recgnize in the terminal.

I upgrade to Nvidia DKMS 570 and still flickering the apps on full screen in the second monitor on xorg

Ah, you must install it then...

sudo apt install pavucontrol

Then launch from app menu or terminal

pavucontrol

I would consider checking your cables or connections, as well. Strangely, this is often the last thing we think of, assuming those must be perfectly good.
But in reality...

Are you using HDMI? DP?
Are there any splitters? Adapters?

You outlined that flickering only happens when the Audio jack is connected - can you confirm it is only then?

The thing I find interesting, is that the issue happens when plugging wired headphones into the 3.5mm headphone jack. This possibly leads me to believe, that you might have an interference or grounding issue.

Out of curiosity, does this also happen with other headphones as well? I'm still thinking there is a ground loop fault with that 3.5mm jack port.


1 Like

As suggested, I installed pavucontrol . It shows I might be using DisplayPort1 (via NVIDIA HDMI) for audio output:

2. Connection Setup

  • Only HDMI is connected to my external monitor (no DP, splitters, or adapters).

3. Audio Jack Miscommunication – Correction

Apologies for the confusion earlier – after further testing:

  • The 3.5mm audio jack is not a trigger for flickering (false alarm).

4. Flickering Pattern Update
The issue is app-specific:

  • Flickers in: Cursor, VS Code, Chrome (Electron/Chromium-based apps?).
  • Stable in: Native apps (File Explorer, Terminal, Firefox).

Question: Could this be related to GPU acceleration or Windowing protocols (X11/Wayland) in these apps?

1 Like

Yes, that is a strong possibility.
Electron and Chromium-based applications want to make use of hardware acceleration or tax your GPU. Native GTK-based applications often use necessary rendering only.

You can test by launching Chromium based apps with the flag --disable-gpu

For VSCode, I needed to look this up...
VS Code: Add "disable-hardware-acceleration": true in argv.json

Looking that up, you can open argv.json by running Preferences: Configure Runtime Arguments in the VSCode command pallete.

Thank you for the suggestions. I tried both solutions but unfortunately neither resolved the flickering issue:

  1. For Chromium-based apps (Chrome, Cursor):
  • Launched with --disable-gpu flag
  • Flickering persisted in full-screen mode
  1. For VS Code:
  • Added "disable-hardware-acceleration": true to argv.json
  • Confirmed the setting was applied after restart
  • Still experiences the same flickering behavior

Additional observations:

  • The issue seems particularly tied to full-screen mode on the external display
  • Native GTK apps continue to work flawlessly
  • The flickering appears to be more severe with mouse movement/interaction
1 Like

This user reported (by extension) an interesting issue with the Nvidia 570 driver (You and I are both using it).

Have you tried switching to a different Nvidia driver?

Or tying the boot parameter nvidia-modeset.hdmi_deepcolor=0