Support wayland session by launching kwin as wayland server.

Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
This commit is contained in:
tangjie02 2023-02-07 20:32:24 +08:00
parent 86bfddb401
commit ae5f366ecb
2 changed files with 132 additions and 1 deletions

View File

@ -0,0 +1,124 @@
From 199320d7beec9ea0b80c3e7f331f3d269d68f493 Mon Sep 17 00:00:00 2001
From: tangjie02 <tangjie02@kylinsec.com.cn>
Date: Tue, 7 Feb 2023 20:23:51 +0800
Subject: [PATCH] feature(wayland): Support wayland session by launching kwin
as wayland server.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 使用kwin来支持wayland会话
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
---
data/CMakeLists.txt | 32 +++++++++++++++--------------
data/kiran-session-kwayland.in | 9 ++++++++
data/kiran-session-wayland.in | 3 +++
data/kiran-wayland.desktop.in | 4 ++--
data/sessions/kiran-wayland.session | 2 +-
5 files changed, 32 insertions(+), 18 deletions(-)
create mode 100644 data/kiran-session-kwayland.in
create mode 100644 data/kiran-session-wayland.in
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 8df02d5..83aed59 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -1,27 +1,29 @@
cmake_minimum_required(VERSION 3.2)
-# gschema.xml
-file(GLOB SCHEMA_IN_FILES ./*.gschema.xml.in)
-
-foreach(SCHEMA_IN_FILE IN LISTS SCHEMA_IN_FILES)
- string(REGEX REPLACE ".+/(.+)\\..*" "\\1" SCHEMA_FILE ${SCHEMA_IN_FILE})
- configure_file(${SCHEMA_IN_FILE} ${PROJECT_BINARY_DIR}/data/${SCHEMA_FILE})
+# xxx.in -> xxx
+file(GLOB XXX_IN_FILES ./*.in)
- install(FILES ${PROJECT_BINARY_DIR}/data/${SCHEMA_FILE}
- DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/glib-2.0/schemas/)
+foreach(XXX_IN_FILE IN LISTS XXX_IN_FILES)
+ string(REGEX REPLACE ".+/(.+)\\..*" "\\1" XXX_FILE ${XXX_IN_FILE})
+ configure_file(${XXX_IN_FILE} ${PROJECT_BINARY_DIR}/data/${XXX_FILE} @ONLY)
endforeach()
+# wayland executable file
+install(PROGRAMS ${PROJECT_BINARY_DIR}/data/kiran-session-wayland
+ ${PROJECT_BINARY_DIR}/data/kiran-session-kwayland
+ DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}/)
+
+# gschema.xml
+install(
+ FILES
+ ${PROJECT_BINARY_DIR}/data/com.kylinsec.kiran.session-manager.gschema.xml
+ DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/glib-2.0/schemas/)
+
# conf
install(FILES ${PROJECT_SOURCE_DIR}/data/90-lightdm-kiran-greeter.conf
DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/lightdm/lightdm.conf.d)
-# desktop.in
-file(GLOB DESKTOP_IN_FILES ./*.desktop.in)
-foreach(DESKTOP_IN_FILE IN LISTS DESKTOP_IN_FILES)
- string(REGEX REPLACE ".+/(.+)\\..*" "\\1" DESKTOP_FILE ${DESKTOP_IN_FILE})
- configure_file(${DESKTOP_IN_FILE} ${PROJECT_BINARY_DIR}/data/${DESKTOP_FILE})
-endforeach()
-
+# desktop
install(FILES ${PROJECT_BINARY_DIR}/data/kiran.desktop
DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/xsessions)
install(FILES ${PROJECT_BINARY_DIR}/data/kiran-wayland.desktop
diff --git a/data/kiran-session-kwayland.in b/data/kiran-session-kwayland.in
new file mode 100644
index 0000000..91c2cf8
--- /dev/null
+++ b/data/kiran-session-kwayland.in
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+drs=
+
+if [ -z "${DBUS_SESSION_BUS_ADDRESS}" ]; then
+ drs=dbus-run-session
+fi
+
+exec ${drs} kwin_wayland --xwayland --drm --no-lockscreen --exit-with-session=@CMAKE_INSTALL_FULL_BINDIR@/kiran-session-wayland
\ No newline at end of file
diff --git a/data/kiran-session-wayland.in b/data/kiran-session-wayland.in
new file mode 100644
index 0000000..4bd1de9
--- /dev/null
+++ b/data/kiran-session-wayland.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec @CMAKE_INSTALL_FULL_BINDIR@/kiran-session-manager --session-type=kiran-wayland
\ No newline at end of file
diff --git a/data/kiran-wayland.desktop.in b/data/kiran-wayland.desktop.in
index d98cd10..34c4781 100644
--- a/data/kiran-wayland.desktop.in
+++ b/data/kiran-wayland.desktop.in
@@ -2,8 +2,8 @@
Name=KIRAN
Comment=This session logs you into KIRAN
Comment[zh_CN]=此会话将您登录到 KIRAN
-Exec=@CMAKE_INSTALL_FULL_BINDIR@/kiran-session-manager --session-type=kiran-wayland
-TryExec=@CMAKE_INSTALL_FULL_BINDIR@/kiran-session-manager
+Exec=@CMAKE_INSTALL_FULL_BINDIR@/kiran-session-kwayland
+TryExec=@CMAKE_INSTALL_FULL_BINDIR@/kiran-session-kwayland
Type=Application
DesktopNames=KIRAN
Keywords=KIRAN;session;
diff --git a/data/sessions/kiran-wayland.session b/data/sessions/kiran-wayland.session
index 5292a1f..65bc4a6 100644
--- a/data/sessions/kiran-wayland.session
+++ b/data/sessions/kiran-wayland.session
@@ -1,3 +1,3 @@
[Kiran Session]
Name=Kiran Session
-RequiredComponents=kiran-session-idlemonitor;kiran-session-daemon;mate-settings-daemon;mutter;kiran-panel;caja
+RequiredComponents=kiran-session-idlemonitor;kiran-session-daemon;mate-settings-daemon;kiran-panel;caja
--
2.36.1

View File

@ -1,11 +1,13 @@
Name: kiran-session-manager
Version: 2.4.0
Release: 1
Release: 2
Summary: Session manager for KIRAN desktop environment
License: MulanPSL-2.0
Source0: %{name}-%{version}.tar.gz
Patch1001: 0001-feature-wayland-Support-wayland-session-by-launching.patch
BuildRequires: cmake >= 3.2
BuildRequires: pkgconfig(gio-unix-2.0)
BuildRequires: gcc-c++
@ -62,10 +64,15 @@ make %{?_smp_mflags}
%{_bindir}/kiran-session-manager
%{_bindir}/kiran-session-idlemonitor
%{_bindir}/kiran-session-window
%{_bindir}/kiran-session-kwayland
%{_bindir}/kiran-session-wayland
%changelog
* Tue Feb 07 2023 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-2
- Support wayland session by launching kwin as wayland server.
* Fri Nov 04 2022 tangjie02 <tangjie02@kylinsec.com.cn> - 2.4.0-1
- KYOS-F: Init commit for v2.4