diff --git a/plugins/platforms/fbdev/fb_backend.cpp b/plugins/platforms/fbdev/fb_backend.cpp --- a/plugins/platforms/fbdev/fb_backend.cpp +++ b/plugins/platforms/fbdev/fb_backend.cpp @@ -24,6 +24,7 @@ #include "scene_qpainter_fb_backend.h" #include "screens.h" #include "virtual_terminal.h" +#include "udev.h" // system #include #include @@ -81,13 +82,18 @@ void FramebufferBackend::openFrameBuffer() { VirtualTerminal::self()->init(); - int fd = LogindIntegration::self()->takeDevice(deviceIdentifier().constData()); + QString framebufferDevice = deviceIdentifier().constData(); + if (framebufferDevice.isEmpty()) { + framebufferDevice = QString(Udev().primaryFramebuffer()->devNode()); + } + int fd = LogindIntegration::self()->takeDevice(framebufferDevice.toUtf8().constData()); + qCDebug(KWIN_FB) << "Using frame buffer device:" << framebufferDevice; if (fd < 0) { - qCWarning(KWIN_FB) << "Failed to open frame buffer device through logind, trying without"; + qCWarning(KWIN_FB) << "Failed to open frame buffer device:" << framebufferDevice << "through logind, trying without"; } - fd = open(deviceIdentifier().constData(), O_RDWR | O_CLOEXEC); + fd = open(framebufferDevice.toUtf8().constData(), O_RDWR | O_CLOEXEC); if (fd < 0) { - qCWarning(KWIN_FB) << "failed to open frame buffer device"; + qCWarning(KWIN_FB) << "failed to open frame buffer device:" << framebufferDevice; emit initFailed(); return; }