Display / Screen Issues
Screen looks wrong, stuck at low resolution, tearing, or black screen after login? This guide covers the most common display problems on Linux and how to fix them.
Screen Resolution Wrong or Stuck at Low Res
If your screen is stuck at something like 1024x768 or 800x600 when it should be much higher, it's almost always a graphics driver issue. Your system is using a generic fallback driver instead of the proper one for your GPU.
Check what driver you're using
# See what GPU you have
lspci | grep -i vga
# Check which driver is loaded
lsmod | grep -E 'nvidia|amdgpu|i915|nouveau'
# See available resolutions
xrandr # On X11
# On Wayland, check your desktop's display settings instead
Fix it based on your GPU
- NVIDIA: You probably need the proprietary NVIDIA driver. The open-source
nouveaudriver often doesn't support higher resolutions properly. See our NVIDIA driver guide for step-by-step instructions. - AMD: The open-source
amdgpudriver works great and is usually loaded automatically. If it's not, make sure you havexf86-video-amdgpu(Arch) orxserver-xorg-video-amdgpu(Ubuntu/Debian) installed. - Intel: Intel integrated graphics use the
i915driver, which is built into the kernel. If it's not working, try updating your kernel.
xrandr shows your desired resolution but it's not being used, you can force it with: xrandr --output <display-name> --mode 1920x1080. Replace the display name and resolution with your own (run xrandr without arguments to see what's available).
Screen Tearing
Screen tearing looks like a horizontal line cutting across your screen where the top and bottom halves are slightly out of sync. It's especially noticeable when scrolling or watching video. It happens when your display is updating in the middle of a frame being drawn.
The fix depends on your desktop environment:
GNOME
GNOME on Wayland handles this automatically -- you shouldn't see tearing. If you're on X11 with GNOME, it uses Mutter as its compositor, which should also prevent tearing by default.
If you still see tearing on GNOME with NVIDIA:
# Force full composition pipeline (NVIDIA on X11)
sudo nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 { ForceFullCompositionPipeline = On }"
# To make it permanent, add it to your xorg config:
# See our NVIDIA guide for details
KDE Plasma
KDE gives you explicit control over compositing:
- Open System Settings → Display and Monitor → Compositor
- Set Rendering backend to OpenGL 3.1 (or OpenGL 2.0 if that doesn't work)
- Enable VSync -- try "Full Screen Repaints" first
- Set Tearing Prevention to "Full Screen Repaints" or "Re-use screen content"
On Wayland with KDE Plasma 6, tearing is handled automatically, though you can enable "Allow tearing" in display settings if you prefer lower input latency in games.
XFCE
XFCE's compositor is lightweight but can cause tearing if not configured right:
- Open Settings → Window Manager Tweaks → Compositor tab
- Make sure Enable display compositing is checked
- Check Synchronize drawing to the vertical blank
If tearing persists, XFCE's compositor is fairly basic. You can disable it and use picom instead for better results:
# Install picom
# Ubuntu/Debian: sudo apt install picom
# Fedora: sudo dnf install picom
# Arch: sudo pacman -S picom
# Disable XFCE compositor, then start picom
picom --vsync &
Multi-Monitor Setup
Linux handles multiple monitors well these days, but getting everything arranged correctly takes a little setup.
Arranging displays
- GNOME: Open Settings → Displays. Drag the monitor rectangles to match your physical layout. Click Apply.
- KDE: Open System Settings → Display and Monitor → Display Configuration. Drag monitors into position and click Apply.
Different refresh rates
If you have a 144Hz gaming monitor and a 60Hz secondary display, you might notice the 144Hz monitor stuttering when both are active. This used to be a big problem, but the situation has improved:
- Wayland: Handles mixed refresh rates natively. Each monitor runs at its own refresh rate independently. This is one of the big advantages of Wayland over X11.
- X11: All monitors are synced to the same VSync, which can cause stuttering. If your desktop supports it, switch to Wayland for a better experience.
Per-monitor scaling
If one monitor is 4K and the other is 1080p, you'll want different scaling on each:
- GNOME on Wayland: Supports per-monitor scaling natively. Open Settings → Displays, select each monitor, and set its scale independently.
- KDE on Wayland: Also supports per-monitor scaling. Open System Settings → Display and Monitor, click each monitor, and adjust the scale.
- X11: Per-monitor scaling is not well supported. You'll usually need to set one global scale and then use
xrandr --output <name> --scaleto adjust individual monitors, which can cause blurriness.
HiDPI / 4K Scaling
If you have a high-resolution display (4K, 5K, or a high-DPI laptop screen), everything might look tiny by default. You need to enable scaling so text, icons, and windows are a usable size.
GNOME
GNOME supports integer scaling (100%, 200%) out of the box. For fractional scaling (125%, 150%, 175%):
# Enable fractional scaling on Wayland
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"
# Then go to Settings → Displays and you'll see more scale options
KDE Plasma
KDE has built-in fractional scaling support:
- Open System Settings → Display and Monitor
- Select your display and adjust the Scale slider (you can set any value like 125%, 150%, etc.)
- Click Apply and log out/in for the best results
Per-app issues
Even with system-wide scaling set correctly, some apps might look blurry or the wrong size:
- Electron apps (VS Code, Discord, Slack): Add
--force-device-scale-factor=1.5to the launch command (replace 1.5 with your scale). You can also set theELECTRON_SCALE_FACTORenvironment variable. - Older GTK2 apps: These don't understand scaling. Not much you can do besides using the app's built-in zoom if it has one.
- Java apps: Set
GDK_SCALE=2or use-Dsun.java2d.uiScale=2as a JVM argument. - Firefox: Go to
about:configand setlayout.css.devPixelsPerPxto your desired scale (e.g., 1.5). - XWayland apps: Apps running through XWayland on a Wayland session may look blurry at fractional scales. GNOME renders them at a higher resolution and scales down, which helps. KDE is improving this as well.
Black Screen After Login
You type your password, the screen goes black, and nothing happens. You might see a cursor, or the screen might be completely dark. This is one of the scariest issues, but it's usually fixable.
Common causes
- Wrong GPU driver: Especially common with NVIDIA. If you installed (or uninstalled) the NVIDIA driver and something went wrong, you can end up with a black screen. See our NVIDIA guide.
- Display manager crashed: The login screen program (GDM, SDDM, LightDM) itself might have crashed.
- Desktop environment crashed: You logged in fine, but GNOME/KDE/etc. failed to start.
How to recover
# 1. Switch to a text console (this works even with a black screen)
# Press Ctrl + Alt + F2 (or F3, F4, F5, F6)
# Log in with your username and password
# 2. Check the display manager status
sudo systemctl status gdm # GNOME
sudo systemctl status sddm # KDE
sudo systemctl status lightdm # XFCE / others
# 3. Check for GPU driver issues
lsmod | grep -E 'nvidia|nouveau|amdgpu'
dmesg | grep -i -E 'gpu|drm|nvidia|error'
# 4. Try restarting the display manager
sudo systemctl restart gdm # Or sddm / lightdm
# 5. If it's an NVIDIA issue, you can try switching to the open-source driver
sudo apt remove nvidia-driver-* # Ubuntu/Debian
sudo reboot
# Then reinstall the correct driver after rebooting
nomodeset to the kernel parameters. This disables GPU driver loading and boots with basic graphics, letting you fix things.
Flickering Screen
A flickering display can range from a subtle flicker to the whole screen rapidly turning on and off. Here's what to check:
Wayland vs X11 differences
- On Wayland: Flickering is less common but can happen with NVIDIA GPUs (especially with older driver versions). Make sure you're running NVIDIA driver 545 or newer for the best Wayland experience.
- On X11: Flickering is often caused by compositor issues. Try disabling and re-enabling the compositor, or switching between compositors.
General fixes
# Check for GPU errors in the kernel log
dmesg | grep -i -E 'drm|gpu|display|flicker'
# On X11, try disabling the compositor temporarily
# KDE: Alt + Shift + F12 toggles the compositor
# XFCE: Settings → Window Manager Tweaks → Compositor → uncheck "Enable"
# If flickering happens with an NVIDIA GPU, try adding this kernel parameter:
# nvidia-drm.modeset=1
# Edit /etc/default/grub and add it to GRUB_CMDLINE_LINUX_DEFAULT
sudo update-grub # Ubuntu/Debian
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # Fedora
External Monitor Not Detected
You plug in an external monitor and nothing happens. Here's how to troubleshoot:
Check the basics first
- Try a different cable. HDMI and DisplayPort cables can be flaky. If you have another one, test with that.
- Try a different port. If your laptop has multiple video outputs, try another one.
- Check the monitor's input setting. Make sure the monitor is set to the right input (HDMI 1 vs HDMI 2, etc.).
On X11
# List all connected and disconnected outputs
xrandr
# If the monitor shows as "connected" but no image:
xrandr --output HDMI-1 --auto
# If it shows as "disconnected" even though it's plugged in:
# Force detection
xrandr --output HDMI-1 --mode 1920x1080
# If your resolution isn't listed, you can add it manually:
cvt 1920 1080 60 # Generate modeline for your resolution
# Copy the modeline output, then:
xrandr --newmode "1920x1080_60" [paste modeline values here]
xrandr --addmode HDMI-1 "1920x1080_60"
xrandr --output HDMI-1 --mode "1920x1080_60"
On Wayland
Wayland doesn't use xrandr. Instead, your desktop environment handles display detection:
- GNOME: Open Settings → Displays. If the monitor appears here, you can configure it. If not, the issue is at the hardware/driver level.
- KDE: Open System Settings → Display and Monitor. Same idea -- if it shows up, configure it here.
- You can check if the kernel sees the monitor with:
cat /sys/class/drm/*/status-- look for "connected" entries.
bolt (Thunderbolt device manager) is installed and running: sudo systemctl status bolt. You may need to authorize the device with boltctl.
Brightness Controls Not Working
This is mostly a laptop issue. You press the brightness keys and nothing happens, or the on-screen indicator moves but the actual brightness doesn't change.
Try the kernel parameter fix
The most common fix is telling the kernel which backlight interface to use:
# Edit your GRUB config
sudo nano /etc/default/grub
# Find the line that starts with GRUB_CMDLINE_LINUX_DEFAULT
# Add one of these options (try them one at a time):
# Option 1 (most common fix):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=vendor"
# Option 2:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=native"
# Option 3 (for newer kernels):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_backlight=video"
# Save the file, then update GRUB:
sudo update-grub # Ubuntu/Debian/Mint
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # Fedora
Reboot and test after each change.
Manual brightness control
# Find your backlight device
ls /sys/class/backlight/
# Check current and max brightness
cat /sys/class/backlight/*/brightness
cat /sys/class/backlight/*/max_brightness
# Set brightness manually (replace intel_backlight with your device)
# Value is between 0 and max_brightness
echo 500 | sudo tee /sys/class/backlight/intel_backlight/brightness
Install a brightness tool
# brightnessctl is a handy command-line tool
# Ubuntu/Debian: sudo apt install brightnessctl
# Fedora: sudo dnf install brightnessctl
# Arch: sudo pacman -S brightnessctl
# Set brightness to 50%
brightnessctl set 50%
# Increase by 10%
brightnessctl set +10%
# Decrease by 10%
brightnessctl set 10%-
Night Light / Blue Light Filter
Staring at a bright blue screen at night can make it harder to sleep. Both major desktops have a built-in night light feature that warms the screen color in the evening.
GNOME
- Open Settings → Displays → Night Light
- Toggle it on
- Set a schedule (Sunset to Sunrise is the easiest -- it uses your location automatically) or set manual times
- Adjust the Color Temperature slider to your preference
KDE Plasma
- Open System Settings → Display and Monitor → Night Light (called "Night Color" in older versions)
- Enable it and choose a schedule
- Adjust the color temperature
Other desktops or manual setup
If your desktop doesn't have a built-in night light, you can use redshift or gammastep (Wayland-compatible):
# Install redshift (X11) or gammastep (Wayland)
# Ubuntu/Debian:
sudo apt install redshift # X11
sudo apt install gammastep # Wayland
# Run it (adjusts automatically based on time of day)
redshift # X11
gammastep # Wayland
# Or set a specific color temperature (lower = warmer)
redshift -O 4500
gammastep -O 4500
Wayland vs X11 Explained
What are they?
X11 (also called "Xorg" or "X Window System") and Wayland are display protocols -- they're the layer between your apps and your screen. They handle things like drawing windows, tracking your mouse, and managing keyboard input.
- X11 has been around since 1987. It works, but it's old and has limitations around security, performance, and modern display features (like mixed refresh rates and fractional scaling).
- Wayland is the modern replacement. It's more secure (apps can't spy on each other's windows), handles HiDPI and multi-monitor better, and is generally smoother. Most major distros are now defaulting to Wayland.
Which one am I using?
# Check your current session type
echo $XDG_SESSION_TYPE
# Prints "wayland" or "x11"
How to switch
You can switch between Wayland and X11 at the login screen:
- GDM (GNOME): Click your username, then look for a gear icon in the bottom-right corner. Select "GNOME" for Wayland or "GNOME on Xorg" for X11.
- SDDM (KDE): Click your username, then look for a session selector (usually bottom-left). Choose "Plasma (Wayland)" or "Plasma (X11)".
When to use which
| Use Wayland if... | Use X11 if... |
|---|---|
| You want the best HiDPI / multi-monitor experience | You use apps that don't work on Wayland yet (some screen sharing, remote desktop tools) |
| You care about security (apps can't keylog each other) | You have an older NVIDIA GPU (pre-Turing / driver < 545) |
| You have mixed refresh rate monitors | You need tools like xdotool or xrandr that only work on X11 |
| Your distro defaults to it (and things work fine) | You're experiencing bugs or crashes on Wayland |