https://bugs.kde.org/show_bug.cgi?id=525600
Bug ID: 525600
Summary: Kate fails to restore an XSMP session
Classification: Applications
Product: kate
Version First 26.04.3
Reported In:
Platform: Gentoo Packages
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: sessions
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
I run an X11 XFCE desktop and whenever xfce4-session tries to restore a
previous XSMP session Kate opens an empty session instead of the one that was
saved previously.
Here are the events that result in this behavior:
* On shutdown, xfce4-session tells all open programs to save their state.
* Kate saves its state to a file in ~/.config/session.
* On the next login xfce4-session relaunches each program with an argument like
"kate -session 200db0653-536d-4fb4-9756-5c59eff20416_1789070401_763692".
* Kate launches and immediately runs daemon() to fork into the background and
the process launched by xfce4-session exits before registering with the session
manager.
* xfce4-session treats this as "died while starting up"
(xfce4-session/xfsm-startup.c:xfsm_startup_child_watch()) and performs cleanup
by executing the "DiscardCommand" which removes the saved session file in
~/.config/session.
* KateApp::restoreKate() is now unable to restore and
KMainWindow::canBeRestored will be false, resulting in "oh, no mainwindow,
create one, should not happen, but make sure ;)"
I'm not sure who is at fault here, Kate or xfce4-session? Even if this is
caused by xfce4 I would prefer if KateApp::restoreKate() fell back to the
normal Kate session (what a plain kate start restores) instead of showing an
empty window.
This functionality has been broken for many years but I've never bothered to
debug it until now. It probably broke back in 2023 when the detach
functionality was added in b4b31d27d6.
If I apply the following patch to Kate to prevent detach the session restore
works again:
diff --git a/apps/kate/main.cpp b/apps/kate/main.cpp
index 1413b545ab..792fee2da0 100644
--- a/apps/kate/main.cpp
+++ b/apps/kate/main.cpp
@@ -90,6 +90,24 @@ int main(int argc, char **argv)
detach = false;
break;
}
+
+ if (!strcmp(argv[i], "-session") || !strcmp(argv[i], "--session") ||
!strcmp(argv[i], "--sm-client-id")) {
+ detach = false;
+ break;
+ }
}
/**
--
You are receiving this mail because:
You are watching all bug changes.