Skip to content

feat: warn on outdated libdisplay-info and add system library checks - #28

Merged
Chintanpatel24 merged 1 commit into
mainfrom
feat/warn-outdated-libdisplay-info
Oct 1, 2026
Merged

Chintanpatel24 merged 1 commit into
mainfrom
feat/warn-outdated-libdisplay-info

Conversation

@Chintanpatel24

Copy link
Copy Markdown
Member

Summary

Addresses and resolves #27 by adding dependency inspection, compatibility verification, and clear warning diagnostics for libdisplay-info and core compositor libraries.

Context & Problem

Upstream Niri v26.04 requires libdisplay-info >= 0.3.0 (SONAME libdisplay-info.so.3) for EDID decoding and CVT video timing calculations during DRM display output enumeration.
On distributions shipping older versions of libdisplay-info (e.g. Fedora 41–43 shipping 0.2.0 / .so.2, or Debian/Ubuntu with 0.1.x), display initialization fails on startup, causing a black screen and immediate boot back into the login manager (GDM, SDDM, Ly, Greetd).

Changes

  1. Interactive & Automated libdisplay-info Detection (install.sh):
    • Detects installed version and SONAME across pkg-config, package managers (rpm, dpkg-query, pacman), and standard filesystem paths (/usr/lib*, /usr/local/lib*, ~/.local/lib).
    • Flags outdated versions (< 0.3.0 / .so.2 / .so.1) and displays a prominent warning explaining why the black-screen issue occurs.
    • Provides ./install.sh --build-libdisplay-info (and an interactive prompt) to automatically compile and install libdisplay-info 0.3.0 from upstream source into /usr/local with a single command.
  2. Diagnostic Mode (--check / --doctor):
    • Run ./install.sh --check anytime to audit graphics and compositor library dependencies (libdisplay-info, wayland-server, libinput, xkbcommon, libpipewire-0.3, libseat, pango, cairo, gbm) without needing root privileges.
  3. Session Preflight Guard (resources/lniri-session):
    • Added runtime library preflight verification in lniri-session.
    • Logs diagnostics to ~/.local/share/lniri/session.log, systemd user journal (logger), and stderr if libdisplay-info.so.3 is missing or outdated.
    • Includes /usr/local/lib64 in LD_LIBRARY_PATH for Fedora/openSUSE compatibility in lniri-session and lniri.service.
  4. CI Release Workflow (.github/workflows/release.yml):
    • Adds a build step to compile libdisplay-info 0.3.0 from source on the Ubuntu runner so precompiled release binaries natively link against libdisplay-info.so.3.
  5. Clean Uninstallation (uninstall.sh):
    • Cleans up /etc/ld.so.conf.d/lniri-local-lib.conf and local library symlinks upon uninstallation.
  6. Documentation (README.md):
    • Documents the libdisplay-info >= 0.3.0 requirement, --check diagnostic mode, and --build-libdisplay-info option.

Fixes #27

…27)

- Add comprehensive system library and dependency checks in install.sh
- Detect libdisplay-info version and SONAME (libdisplay-info.so.3) across pkg-config, package managers, and library paths
- Display prominent warning when outdated versions (< 0.3.0) are found (e.g. Fedora 41-43 with 0.2.0) explaining the black screen and login boot failure
- Add --build-libdisplay-info option to automatically compile and install libdisplay-info 0.3.0 from upstream
- Add --check / --doctor diagnostic mode to verify libraries without installing
- Add preflight library validation to lniri-session and update lniri.service LD_LIBRARY_PATH to support /usr/local/lib64
- Ensure CI release builds compile against libdisplay-info 0.3.0
- Closes #27
Copilot AI balanced review requested due to automatic review settings October 1, 2026 13:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Chintanpatel24
Chintanpatel24 merged commit 7bd46a0 into main Oct 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Warn user on outdated libdisplay-info

2 participants