# sddm The Simple Desktop Display Manager Pour amorcer le fichier `default.conf` utiliser **sddm**:\\ `/usr/bin/sddm --example-config > /usr/lib/sddm/sddm.conf.d/default.conf`\\ `sed -r 's|DefaultPath=.*|DefaultPath=/usr/local/sbin:/usr/local/bin:/usr/bin|g' -i "/usr/lib/sddm/sddm.conf.d/default.conf`\\ `sed -e "/^InputMethod/s/qtvirtualkeyboard//" -i /usr/lib/sddm/sddm.conf.d/default.conf` ## Pré requis ^ runtime dependencies | xapp_xauth (Graphic libraries/X11R7 Applications) | ^ ::: | linux-pam (Libraries/Other) | ^ ::: | qt5-declarative (Graphic libraries and applications/Other GUIs) | ^ make dependencies | extra-cmake-modules | ^ ::: | python-docutils | ^ ::: | qt5tools | ## Recette ``` mkdir /data/buildroot/package/sddm cat > /data/buildroot/package/sddm/pam-faillock.patch<< 'EOF' diff --git a/services/sddm-autologin.pam b/services/sddm-autologin.pam index 4c82048..b42991e 100755 --- a/services/sddm-autologin.pam +++ b/services/sddm-autologin.pam @@ -1,6 +1,6 @@ #%PAM-1.0 auth required pam_env.so -auth required pam_tally2.so file=/var/log/tallylog onerr=succeed +auth required pam_faillock.so preauth auth required pam_shells.so auth required pam_nologin.so auth required pam_permit.so EOF cat > /data/buildroot/package/sddm/sddm-fix-build.patch<< 'EOF' diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp index 5f93a1b..d5f29a9 100644 --- a/src/daemon/XorgDisplayServer.cpp +++ b/src/daemon/XorgDisplayServer.cpp @@ -65,7 +65,7 @@ namespace SDDM { // create a random hexadecimal number const char *digits = "0123456789abcdef"; for (int i = 0; i < 32; ++i) - m_cookie[i] = digits[dis(gen)]; + m_cookie[i] = QLatin1Char(digits[dis(gen)]); } XorgDisplayServer::~XorgDisplayServer() { EOF cat > /data/buildroot/package/sddm/sddm.sysusers<< 'EOF' u sddm - "Simple Desktop Display Manager" /var/lib/sddm m sddm video EOF cat > /data/buildroot/package/sddm/sddm.tmpfiles<< 'EOF' d /var/lib/sddm 0755 sddm sddm EOF cat > /data/buildroot/package/sddm/Config.in<< 'EOF' config BR2_PACKAGE_SDDM bool "sddm" depends on BR2_PACKAGE_LINUX_PAM depends on BR2_PACKAGE_XAPP_XAUTH depends on BR2_PACKAGE_QT5DECLARATIVE depends on BR2_PACKAGE_QT5TOOLS help The Simple Desktop Display Managerl EOF cat > /data/buildroot/package/sddm/sddm.mk<< 'EOF' ############################################################# # # sddm #https://github.com/sddm/sddm/archive/refs/tags/v0.19.0.tar.gz ############################################################# SDDM_VERSION = 0.19.0 SDDM_SOURCE = v$(SDDM_VERSION).tar.gz SDDM_SITE = https://github.com/sddm/sddm/archive/refs/tags SDDM_DEPENDENCIES = xapp_xauth qt5declarative qt5tools linux-pam SDDM_INSTALL_TARGET = YES SDDM_SUPPORTS_IN_SOURCE_BUILD = NO SDDM_CONF_OPTS = -DCMAKE_TOOLCHAIN_FILE=$(HOST_DIR)/share/buildroot/toolchainfile.cmake \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib/sddm \ -DDBUS_CONFIG_DIR=/usr/share/dbus-1/system.d \ -DDBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf define SDDM_CONFIGURE_CMDS if [[ ! -L "$(HOST_DIR)/usr/lib/libpcre.so.3" ]]; then ln -s $(HOST_DIR)/usr/lib/libpcre.so $(HOST_DIR)/usr/lib/libpcre.so.3; fi if [[ ! -d $(@D)/buildroot-build ]]; then mkdir $(@D)/buildroot-build; fi cd $(@D)/buildroot-build && \ LDFLAGS="$(LDFLAGS) -pthread -Wl,--as-needed -Wl,--allow-shlib-undefined" cmake "$(@D)/" $(SDDM_CONF_OPTS) endef define SDDM_INSTALL_TARGET_CMDS cd $(@D)/buildroot-build && \ make DESTDIR="$(TARGET_DIR)" install rm -rf $(TARGET_DIR)//data/ install -Dm644 /data/buildroot/package/sddm/sddm.sysusers "${TARGET_DIR}"/usr/lib/sysusers.d/sddm.conf install -Dm644 /data/buildroot/package/sddm/sddm.tmpfiles "${TARGET_DIR}"/usr/lib/tmpfiles.d/sddm.conf install -d "${TARGET_DIR}"/usr/lib/sddm/sddm.conf.d endef $(eval $(cmake-package)) EOF sed -i '/menu "Custom packages"/a source "package/sddm/Config.in"' /data/buildroot/package/Config.in ```