Skip to content

[BUG] Fastfetch doesn't show two monitors #2074

@ABoldOne

Description

@ABoldOne

Read the FAQ first

  • I have checked the FAQ but the issue is not covered

Description

Bug Description

After swapping display ports on my GPU (changing which monitor is connected to which port), fastfetch shows incorrect display information. It only displays one monitor with properties from the other monitor.

System Information

  • OS: CachyOS (Arch-based)
  • Desktop Environment: KDE Plasma (Wayland)
  • fastfetch version: 2.55.1 (x86_64)
  • Display session type: Wayland ($XDG_SESSION_TYPE = wayland)

Hardware Setup

  • Monitor 1 (DP-1): 2560x1440 @ 180Hz (AOC Q27G3XMN)
  • Monitor 2 (DP-2): 1920x1080 @ 144Hz (ACR064D - Acer)

Expected Behavior

Fastfetch should display both monitors with their correct specifications.

Actual Behavior

Fastfetch shows only one monitor:

Display (ACR064D): 1920x1080 in 27", 144 Hz [External]

However, I have two monitors connected:

  • ACR064D (Acer): 1920x1080@144Hz on DP-2 - correctly displayed
  • AOC Q27G3XMN: 2560x1440@180Hz on DP-1 - completely missing from output

Root Cause Found

Running fastfetch -c all.jsonc --stat --format json reveals that fastfetch does detect both monitors, but only displays one:

Display module output (only shows Acer):

{
  "type": "Display",
  "result": [
    {
      "id": 841830468,
      "name": "ACR064D",
      "primary": false,
      "output": {
        "width": 1920,
        "height": 1080,
        "refreshRate": 143.992
      },
      "type": "External",
      "platformApi": "wayland-kde"
    }
  ]
}

Brightness module output (shows both monitors):

{
  "type": "Brightness",
  "result": [
    {
      "name": "Q27G3XMN",
      "max": 100.0,
      "current": 15.0,
      "builtin": false
    },
    {
      "name": "Acer XF270H B",
      "max": 100.0,
      "current": 29.0,
      "builtin": true
    }
  ]
}

The issue: The AOC monitor (Q27G3XMN) is marked as "builtin": false in the Brightness module but doesn't appear in the Display module output at all. It seems fastfetch is incorrectly filtering out or failing to detect the AOC monitor in the Display module, even though it successfully detects it for brightness control.

Both monitors are external desktop displays - neither is actually a built-in laptop screen.

What Triggered the Issue

  1. I physically swapped the DisplayPort cables between monitors (changed which port each monitor uses on the GPU)
  2. The issue persisted after this swap

System Correctly Detects Both Monitors

KDE Plasma's kscreen-doctor -o correctly shows both displays with accurate information:

  • DP-1: 2560x1440@180Hz (enabled, priority 1)
  • DP-2: 1920x1080@144Hz (enabled, priority 2)

Wayland itself has no issues - only fastfetch displays incorrect information.

Troubleshooting Steps Attempted

  • ✗ Deleted fastfetch cache: rm -rf ~/.cache/fastfetch
  • ✗ Deleted KDE display cache: rm -rf ~/.local/share/kscreen/ ~/.cache/kscreen/
  • ✗ Full system reboot
  • ✗ Hot-unplugged and replugged both monitors during operation
  • ✗ Tried config with "compactType": "none"
  • ✗ All attempts to configure display detection via config file

Configuration Attempted

Tried creating ~/.config/fastfetch/config.jsonc with:

{
    "modules": [
        {
            "type": "display",
            "key": "Display",
            "compactType": "none"
        }
    ]
}

No effect on the issue.

Additional Notes

  • This appears to be a Wayland multi-monitor detection bug
  • The issue specifically occurs after physically swapping display ports
  • KDE Plasma and the system itself correctly detect both monitors
  • Only fastfetch shows incorrect/mixed information

Request

Could you please investigate the display detection logic for Wayland multi-monitor setups, particularly how fastfetch handles monitor identification after port changes?

Version used

2.55.1 (x86_64)

Bug prevalence

Always

Regression

Yes

Installation

Package manager

Package manager

pacman

Screenshots

No response

Configuration

{
  "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/master/doc/json_schema.json",
  "modules": [
    "title",
    "separator",
    "os",
    "host",
    "kernel",
    "uptime",
    "packages",
    "shell",
    "display",
    "de",
    "wm",
    "wmtheme",
    "theme",
    "icons",
    "font",
    "cursor",
    "terminal",
    "terminalfont",
    "cpu",
    "gpu",
    "memory",
    "swap",
    "disk",
    "localip",
    "battery",
    "poweradapter",
    "locale",
    "break",
    "colors"
  ]
}

System information

"date": "01/13/2025",
      "release": "5.17",
      "vendor": "American Megatrends Inc.",
      "version": "3621",
      "type": "UEFI"
    },
    "stat": 0.0384510001167655
  },
  {
    "type": "Bootmgr",
    "result": {
      "name": "Linux Boot Manager",
      "firmware": "\\EFI\\SYSTEMD\\SYSTEMD-BOOTX64.EFI",
      "order": 1,
      "secureBoot": true
    },
    "stat": 0.14681199984624982
  },
  {
    "type": "Board",
    "result": {
      "name": "ROG STRIX B550-F GAMING",
      "vendor": "ASUSTeK COMPUTER INC.",
      "version": "Rev X.0x",
      "serial": ""
    },
    "stat": 0.03407000005245209
  },
  {
    "type": "Chassis",
    "result": {
      "type": "Desktop",
      "vendor": "",
      "version": "",
      "serial": ""
    },
    "stat": 0.049500999972224236
  },
  {
    "type": "Kernel",
    "result": {
      "architecture": "x86_64",
      "name": "Linux",
      "release": "6.17.9-2-cachyos",
      "version": "#1 SMP PREEMPT_DYNAMIC Tue, 25 Nov 2025 01:13:51 +0000",
      "pageSize": 4096
    },
    "stat": 0.0006800000555813313
  },
  {
    "type": "InitSystem",
    "result": {
      "name": "systemd",
      "exe": "/usr/lib/systemd/systemd",
      "version": "258.2-2-arch",
      "pid": 1
    },
    "stat": 0.2542730001732707
  },
  {
    "type": "Uptime",
    "result": {
      "uptime": 1328300,
      "bootTime": "2025-11-30T12:13:09.480+0100"
    },
    "stat": 0.026749999960884452
  },
  {
    "type": "Loadavg",
    "result": [
      0.27,
      0.41,
      0.34
    ],
    "stat": 0.009390000021085143
  },
  {
    "type": "Processes",
    "result": 388,
    "stat": 0.3733450002036989
  },
  {
    "type": "Packages",
    "result": {
      "all": 1572,
      "amSystem": 0,
      "amUser": 0,
      "apk": 0,
      "brew": 0,
      "brewCask": 0,
      "choco": 0,
      "dpkg": 0,
      "emerge": 0,
      "eopkg": 0,
      "flatpakSystem": 0,
      "flatpakUser": 0,
      "guixSystem": 0,
      "guixUser": 0,
      "guixHome": 0,
      "hpkgSystem": 0,
      "hpkgUser": 0,
      "linglong": 0,
      "mport": 0,
      "nixDefault": 0,
      "nixSystem": 0,
      "nixUser": 0,
      "opkg": 0,
      "pacman": 1572,
      "pacstall": 0,
      "paludis": 0,
      "pisi": 0,
      "pkg": 0,
      "pkgtool": 0,
      "pkgsrc": 0,
      "macports": 0,
      "rpm": 0,
      "scoopUser": 0,
      "scoopGlobal": 0,
      "snap": 0,
      "soar": 0,
      "sorcery": 0,
      "winget": 0,
      "xbps": 0,
      "pacmanBranch": ""
    },
    "stat": 0.38284499989822507
  },
  {
    "type": "Shell",
    "result": {
      "exe": "/bin/fish",
      "exeName": "fish",
      "exePath": "/usr/bin/fish",
      "pid": 2631,
      "ppid": 2583,
      "processName": "fish",
      "prettyName": "fish",
      "version": "4.2.1",
      "tty": 1
    },
    "stat": 1.7809529998339713
  },
  {
    "type": "Editor",
    "error": "$VISUAL or $EDITOR not set",
    "stat": 0.0013099999632686377
  },
  {
    "type": "Display",
    "result": [
      {
        "id": 841830468,
        "name": "ACR064D",
        "primary": false,
        "output": {
          "width": 1920,
          "height": 1080,
          "refreshRate": 143.992,
          "drrStatus": null
        },
        "scaled": {
          "width": 1920,
          "height": 1080
        },
        "preferred": {
          "width": 1920,
          "height": 1080,
          "refreshRate": 143.992
        },
        "physical": {
          "width": 598,
          "height": 336
        },
        "rotation": 0,
        "bitDepth": 0,
        "hdrStatus": "Unsupported",
        "type": "External",
        "manufactureDate": {
          "year": 2019,
          "week": 34
        },
        "serial": 2470546299,
        "platformApi": "wayland-kde"
      }
    ],
    "stat": 2.9766969999764115
  },
  {
    "type": "Brightness",
    "result": [
      {
        "name": "Q27G3XMN",
        "max": 100.0,
        "min": 0.0,
        "current": 15.0,
        "builtin": false
      },
      {
        "name": "Acer XF270H B",
        "max": 100.0,
        "min": 0.0,
        "current": 29.0,
        "builtin": true
      }
    ],
    "stat": 1427.902713000076
  },
  {
    "type": "Monitor",
    "error": "Monitor module is an alias of Display module",
    "stat": 0.0007199998944997787
  },
  {
    "type": "LM",
    "result": {
      "service": "sddm",
      "type": "Wayland",
      "version": "0.21.0"
    },
    "stat": 0.07023100019432604
  },
  {
    "type": "DE",
    "result": {
      "processName": "plasmashell",
      "prettyName": "KDE Plasma",
      "version": "6.5.3"
    },
    "stat": 0.011840000050142407
  },
  {

Features built-in

threads
vulkan
wayland
xcb-randr
xrandr
drm
drm_amdgpu
gio
dconf
dbus
imagemagick7
chafa
zlib
sqlite3
opencl
libpulse
libddcutil
libelf
libzfs
Directx Headers
System yyjson
linux/videodev2
linux/wireless

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions