diff --git a/misc/Xsession.d/97deepin-keyring-wb b/misc/Xsession.d/97deepin-keyring-wb index 1ac4324..fbcb75c 100644 --- a/misc/Xsession.d/97deepin-keyring-wb +++ b/misc/Xsession.d/97deepin-keyring-wb @@ -1,11 +1,7 @@ #!/bin/sh -# Start deepin-keyring-whitebox and gnome-keyring-daemon for DDE session -if [ -x /usr/bin/gnome-keyring-daemon ]; then - echo "start gnome-keyring-daemon with components secrets,pkcs11,ssh" - /usr/bin/gnome-keyring-daemon --start --components=secrets,pkcs11,ssh || true -fi +# Trigger dde-keyring.service via systemd user instance. +# This service handles gnome-keyring-daemon and deepin-keyring-whitebox. -if [ -x /usr/bin/deepin-keyring-whitebox ]; then - echo "start deepin-keyring-whitebox client" - /usr/bin/deepin-keyring-whitebox --opt-client=waitfifonotify || true -fi \ No newline at end of file +if [ -f /usr/lib/systemd/user/dde-keyring.service ]; then + systemctl --user start dde-keyring.service +fi diff --git a/systemd/CMakeLists.txt b/systemd/CMakeLists.txt index b60dd91..f92e2e3 100644 --- a/systemd/CMakeLists.txt +++ b/systemd/CMakeLists.txt @@ -7,6 +7,10 @@ configure_file(dde-session-exit-task.service.in configure_file(dde-session-shutdown.service.in dde-session-shutdown.service @ONLY) +configure_file(dde-keyring.service.in + dde-keyring.service + @ONLY) + set(SERVICES dde-session-initialized.target @@ -15,6 +19,7 @@ set(SERVICES dde-session-core.target ${CMAKE_CURRENT_BINARY_DIR}/dde-session-exit-task.service ${CMAKE_CURRENT_BINARY_DIR}/dde-session-shutdown.service + ${CMAKE_CURRENT_BINARY_DIR}/dde-keyring.service dde-session-shutdown.target dde-session.target ) @@ -26,6 +31,8 @@ set(DDE_SESSION_PRE_WANTS dde-session-pre.target.wants/dde-quick-login@x11.service ) + + # dde-session-core.target.wants - core desktop components install(DIRECTORY DESTINATION lib/systemd/user/dde-session-core.target.wants/) set(DDE_SESSION_CORE_WANTS diff --git a/systemd/dde-keyring.service.in b/systemd/dde-keyring.service.in new file mode 100644 index 0000000..0ba9ce9 --- /dev/null +++ b/systemd/dde-keyring.service.in @@ -0,0 +1,21 @@ +[Unit] +Description=Deepin Keyring Service (GNOME Keyring + Whitebox Client) +Documentation=man:gnome-keyring-daemon(1) +# Start after D-Bus session socket is available (set up by pam_systemd.so) +After=dbus.socket +PartOf=graphical-session.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/bin/sh -c '\ + if [ -x /usr/bin/gnome-keyring-daemon ]; then \ + echo "start gnome-keyring-daemon with components secrets,pkcs11,ssh"; \ + /usr/bin/gnome-keyring-daemon --start --components=secrets,pkcs11,ssh; \ + fi; \ + if [ -x /usr/bin/deepin-keyring-whitebox ] && [ -z "$XRDP_SESSION" ]; then \ + echo "start deepin-keyring-whitebox client"; \ + /usr/bin/deepin-keyring-whitebox --opt-client=waitfifonotify & \ + fi' +Restart=no +TimeoutStartSec=180 \ No newline at end of file