"login" and "su" have "auth sufficient pam_self.so" but a screen locker is supposed to ask for password regardless. pam_unix(8) requires root priveleges to access master.passwd(5), so try authenticating via setuid helper first. --- pam/hyprlock.orig 2026-04-18 09:44:05 UTC +++ pam/hyprlock @@ -1,5 +1,4 @@ -# PAM configuration file for hyprlock -# the 'login' configuration file (see /etc/pam.d/login) +# PAM configuration for hyprlock. Only uses auth facilities. -auth include login +auth include unix-selfauth --- src/auth/Pam.cpp.orig 2026-04-21 11:41:16 UTC +++ src/auth/Pam.cpp @@ -64,11 +64,6 @@ CPam::CPam() { static const auto PAMMODULE = g_pConfigManager->getValue("auth:pam:module"); m_sPamModule = *PAMMODULE; - if (!std::filesystem::exists(std::filesystem::path("/etc/pam.d/") / m_sPamModule)) { - Log::logger->log(Log::ERR, R"(Pam module "/etc/pam.d/{}" does not exist! Falling back to "/etc/pam.d/su")", m_sPamModule); - m_sPamModule = "su"; - } - m_username = getUsernameForCurrentUid(); m_sConversationState.waitForInput = [this]() { this->waitForInput(); };