From nobody Mon Aug 3 16:44:01 2026 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hDMvW3CVwz6mWCb for ; Mon, 03 Aug 2026 16:44:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hDMvW1mRLz3cC7 for ; Mon, 03 Aug 2026 16:44:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785775447; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1WQdNGG/KtH4RQts+Lz5v0weh9kp4iqC6UEeML2F3qg=; b=h9tsm1MqDfL+J18gmdICXc53LcTpWy6P+Lb+Wpuh8Bqdg2F/O1eZhs1j26OLTjcwdU/LdM 7LMeDxB0ux9/HlmhaKBjxg6K3BgUBavb5JnuoAq9ypVXnU4lDN3v5XtdVZ/BFcKO1DE58L EC+ZsCqvrd1fFibXcc6vYnoLfkCLFYRlZndy3nrD3W9bDSiVbFZlD3NZlN7EnMqgDd9BCL HLpGVB8FVghzeopP3w1/iLLCwJ+XzvVkmjlvaN4PLAaFVG5Y6UxxY6VH9j2QARPs7NOVXK 0Se5DihiIS1RI59NHMpduaGuvxO5PCw6IzaVXQcIdExlQzbO0WRE4R/qRzcPtw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1785775447; a=rsa-sha256; cv=none; b=I0xqo1TthwECj6RcuXk/9o1+/pL8a4FKfic0rrd/Qyr8Nog9/TWVAKUYeheSuLL0UGkODG Wf8ayKtLybMq5JCznCjpOH07uvtEHgRZvyShAa5NPu24xnCtJ0CId2W6wxVwcmHY9wUPot Fi9h6+ZrboMGOr4EqmK8Pp0LwAg9UXex/qAkYA2jyhknYouWGCpMf0l7yDFvO+1mix+5v6 7ggbk0jS3xtpw7zsWUUXHAwpoBc65zrwYXFmLUeyX+dxWJ3gSGZrcerpSYed0hrsmcBCKh 6KtkvpqW6mxFU0U5iHu4t30Tmob7DPPImOkcFDng62ohXmGNw+vaHo9PQuH4hw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1785775447; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=1WQdNGG/KtH4RQts+Lz5v0weh9kp4iqC6UEeML2F3qg=; b=cteesXSAgyc6gif1O3rAlJZKNtMWikE3u5It4270Yp3kMTq+Dpyaf7KDZeU7yhU6YbhH5J jTAyR6rDMV/AiAqAzv+Naa3GjK3yksTneVt+2ed6Q/bMIRgHQ2HRI59WkArXCMvE4iplE+ 1Fx0UXAch8SyJaUfY815d7vT6C5sPvD753rgD+cRxRgR1r0AwGN66p5daVgN3NaWXrmv/9 GrK8bqblj7ReY9+9iqWpqk1gqFktUxZRkcL70so0VWkxIvdgfJ3c8cAOywx4iwoS/7Bh3q au4E0pAFhIQLv88O+aPHs+i9UAuHRqfEGQBOpD38IPLLFNxqW5pLqskUSnClkw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hDMvV6BfMz1846 for ; Mon, 03 Aug 2026 16:44:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 43fa4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 03 Aug 2026 16:44:01 +0000 To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Gleb Popov Subject: git: c8a6d8ae8a39 - main - x11/sddm: Wayland session fixes List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-all@freebsd.org Sender: owner-dev-commits-ports-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: arrowd X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c8a6d8ae8a39e609c4a919a6fff36da660b6a66b Auto-Submitted: auto-generated Date: Mon, 03 Aug 2026 16:44:01 +0000 Message-Id: <6a70c551.43fa4.b2e5d61@gitrepo.freebsd.org> The branch main has been updated by arrowd: URL: https://cgit.FreeBSD.org/ports/commit/?id=c8a6d8ae8a39e609c4a919a6fff36da660b6a66b commit c8a6d8ae8a39e609c4a919a6fff36da660b6a66b Author: Gleb Popov AuthorDate: 2026-08-03 16:41:25 +0000 Commit: Gleb Popov CommitDate: 2026-08-03 16:43:26 +0000 x11/sddm: Wayland session fixes PR: 286592, 296052 --- x11/sddm/Makefile | 2 +- .../files/patch-src_common_VirtualTerminal.cpp | 20 ------ x11/sddm/files/patch-src_helper_UserSession.cpp | 84 ++++++++++++++++++++++ 3 files changed, 85 insertions(+), 21 deletions(-) diff --git a/x11/sddm/Makefile b/x11/sddm/Makefile index 5d6f5defaba5..0cfae784a40f 100644 --- a/x11/sddm/Makefile +++ b/x11/sddm/Makefile @@ -2,7 +2,7 @@ PORTNAME= sddm DISTVERSIONPREFIX= v DISTVERSION= 0.21.0-36 DISTVERSIONSUFFIX= -gc2b97dd -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= x11 MAINTAINER= kde@FreeBSD.org diff --git a/x11/sddm/files/patch-src_common_VirtualTerminal.cpp b/x11/sddm/files/patch-src_common_VirtualTerminal.cpp index 89717f5bd0b9..cc4c6e961794 100644 --- a/x11/sddm/files/patch-src_common_VirtualTerminal.cpp +++ b/x11/sddm/files/patch-src_common_VirtualTerminal.cpp @@ -8,23 +8,3 @@ #else #include #include -@@ -217,6 +218,19 @@ out: - // set graphics mode to prevent flickering - if (ioctl(fd, KDSETMODE, KD_GRAPHICS) < 0) - qWarning("Failed to set graphics mode for VT %d: %s", vt, strerror(errno)); -+ -+#ifdef __FreeBSD__ -+ struct termios tios; -+ -+ if (tcgetattr(fd, &tios) != 0) { -+ qFatal("Failed to get term attrs for VT %d: %s", vt, strerror(errno)); -+ } else { -+ cfmakeraw(&tios); -+ if (tcsetattr(fd, TCSAFLUSH, &tios) != 0) { -+ qWarning("Failed to set term attrs for VT %d: %s", vt, strerror(errno)); -+ } -+ } -+#endif - - // it's possible that the current VT was left in a broken - // combination of states (KD_GRAPHICS with VT_AUTO) that we diff --git a/x11/sddm/files/patch-src_helper_UserSession.cpp b/x11/sddm/files/patch-src_helper_UserSession.cpp new file mode 100644 index 000000000000..c9b9ba0ad5da --- /dev/null +++ b/x11/sddm/files/patch-src_helper_UserSession.cpp @@ -0,0 +1,84 @@ +This patch is twofold. First, it contains + +https://github.com/sddm/sddm/pull/2210 + +then it prevents key combinations like Ctrl+C, Alt+F4, Ctrl+Alt+Del to go +directly into the VT causing unwanted effects. This part was copied from +bsd_init.c of xorg-server. + +It does not restore the VT after messing it, but in practice the VT being used +for Wayland session starts from 10 and it isnt possible to switch into it via +normal ways. + +--- src/helper/UserSession.cpp.orig 2025-01-31 09:57:01 UTC ++++ src/helper/UserSession.cpp +@@ -40,6 +40,9 @@ + #include + #include + #ifdef Q_OS_FREEBSD ++#include ++#include ++#include + #include + #endif + +@@ -191,6 +194,9 @@ namespace SDDM { + const bool x11UserSession = sessionType == QLatin1String("x11") && sessionClass == QLatin1String("user"); + const bool waylandUserSession = sessionType == QLatin1String("wayland") && sessionClass == QLatin1String("user"); + ++ // when this is true we'll take control of the tty ++ bool takeControl = false; ++ + // When the display server is part of the session, we leak the VT into + // the session as stdin so that it stays open without races + if (hasDisplayServer || waylandUserSession) { +@@ -199,9 +205,6 @@ namespace SDDM { + QString ttyString = VirtualTerminal::path(vtNumber); + int vtFd = ::open(qPrintable(ttyString), O_RDWR | O_NOCTTY); + +- // when this is true we'll take control of the tty +- bool takeControl = false; +- + if (vtNumber > 0 && vtFd > 0) { + dup2(vtFd, STDIN_FILENO); + ::close(vtFd); +@@ -229,8 +232,38 @@ namespace SDDM { + } + + if (vtNumber > 0) +- VirtualTerminal::jumpToVt(vtNumber, x11UserSession); ++ VirtualTerminal::jumpToVt(vtNumber, true); + } ++ ++#ifdef __FreeBSD__ ++ if (waylandUserSession) { ++ Q_ASSERT(takeControl); ++ ++ struct termios tios; ++ int vtFd = STDIN_FILENO; ++ ++ if (tcgetattr(vtFd, &tios) != 0) { ++ qWarning("Failed to get term attrs for VT 1: %s", strerror(errno)); ++ } ++ ++ /* disable special keys */ ++ if (ioctl(vtFd, KDSKBMODE, K_RAW) < 0) { ++ qWarning("KDSKBMODE K_RAW failed (%s)", strerror(errno)); ++ } ++ ++ tios.c_iflag = IGNPAR | IGNBRK; ++ tios.c_oflag = 0; ++ tios.c_cflag = CREAD | CS8; ++ tios.c_lflag = 0; ++ tios.c_cc[VTIME] = 0; ++ tios.c_cc[VMIN] = 1; ++ cfsetispeed(&tios, 9600); ++ cfsetospeed(&tios, 9600); ++ if (tcsetattr(vtFd, TCSANOW, &tios) != 0) { ++ qWarning("tcsetattr TCSANOW failed (%s)", strerror(errno)); ++ } ++ } ++#endif + + #ifdef Q_OS_LINUX + // enter Linux namespaces