Re: KDE: was tun, damit die Session bei Absturz erhalten bleibt?
Am Mittwoch, 9. Mai 2012 schrieb Michael Schuerig:
> On Wednesday 09 May 2012, Martin Steigerwald wrote:
> > Am Mittwoch, 9. Mai 2012 schrieb Michael Schuerig:
> > > Meine Frage ist daher, ob es eine Möglichkeit gibt, die Session
> > > durch regelmäßiges, automatisches Sichern gegen Verlust zu
> > > schützen.
> >
> > Vielleicht läßt sich mit
> >
> > martin@merkaba:~> qdbus org.kde.ksmserver /KSMServer | grep -i
> > savecurrent method void
> > org.kde.KSMServerInterface.saveCurrentSession()
> > method void org.kde.KSMServerInterface.saveCurrentSessionAs(QString)
> > martin@merkaba:~> qdbus org.kde.ksmserver /KSMServer
> > org.kde.KSMServerInterface.saveCurrentSession
> >
> > martin@merkaba:~>
> >
> > ein Cronjob bauen, der das tut, was Du möchtest?
>
> Etwas in der Art habe ich schon mit KDE 3 und auch mit KDE 4 probiert.
> Soweit ich mich erinnere, funktioniert das Speichern selbst korrekt,
> aber KDE versteht nicht, dass es gerade diesen gespeicherten Stand beim
> Neustart einer Session benutzen soll, statt der Session, die beim
> letzten erfolgreichen beenden gespeichert wurde.
Ich denke, des Rätsels Lösung liegt irgendwo hier:
martin@merkaba:~/.kde/share/config/session> qdbus org.kde.ksmserver
/KSMServer org.kde.KSMServerInterface.saveCurrentSession
martin@merkaba:~/.kde/share/config/session> date; qdbus org.kde.ksmserver
/KSMServer org.kde.KSMServerInterface.saveCurrentSession
Mi 9. Mai 23:19:49 CEST 2012
martin@merkaba:~/.kde/share/config/session> ls -l
insgesamt 128
-rw------- 1 martin martin 622 Mai 5 15:05
akregator_10cec7d36b000133537790600000211060152_1336223154_736187
-rw------- 1 martin martin 622 Mai 9 23:19
akregator_10cec7d36b000133537790600000211060152_1336598389_442621
-rw------- 1 martin martin 543 Okt 21 2011
amarok_10cec7d36b000131921352700000024600024_1319213691_224668
-rw------- 1 martin martin 336 Jul 7 2011
basket_10cec7d36b000130960919600000148560033_1310038030_935513
-rw------- 1 martin martin 336 Mai 5 15:05
basket_10cec7d36b000133310052700000129360028_1336223154_735813
-rw------- 1 martin martin 336 Mai 9 23:19
basket_10cec7d36b000133310052700000129360028_1336598389_442520
[…]
martin@merkaba:~/.kde/share/config/session>
Also hat ksm die Sitzung gespeichert, jedoch unter einer anderen ID.
Und irgendwo steht nun die ID der Session drin, die KDE beim Anmelden
wieder herstellt.
Das könnte die vom 5. Mai sein bei mir. Die vom 7. Juli 2011 ist wohl ein
Überbleibsel.
martin@merkaba:~/.kde/share/config#2> grep
10cec7d36b000133537790600000211060152 * 2>/dev/null
ksmserverrc:clientId9=10cec7d36b000133537790600000211060152
ksmserverrc:discardCommand9[$e]=rm,
$HOME/.kde/share/config/session/akregator_10cec7d36b000133537790600000211060152_1336223154_736187
ksmserverrc:restartCommand9=/usr/bin/akregator,-
session,10cec7d36b000133537790600000211060152_1336223154_736187
ksmserverrc:clientId9=10cec7d36b000133537790600000211060152
ksmserverrc:discardCommand9[$e]=rm,
$HOME/.kde/share/config/session/akregator_10cec7d36b000133537790600000211060152_1336598389_442621
ksmserverrc:restartCommand9=/usr/bin/akregator,-
session,10cec7d36b000133537790600000211060152_1336598389_442621
So wie das nun aussieht, müsste man in die ksmserverrc die IDs für die
Session-Dateien vom 9. Mai reinklatschen.
Wobei das hier aber grad so aussieht, als müsste es gehen:
martin@merkaba:~/.kde/share/config> qdbus org.kde.ksmserver /KSMServer
org.kde.KSMServerInterface.currentSession
saved by user
martin@merkaba:~/.kde/share/config> qdbus org.kde.ksmserver /KSMServer
org.kde.KSMServerInterface.sessionList
default
saved at previous logout
saved by user
Die aktuelle Sitzung ist demnach die von mir als Benutzer gespeicherte.
Wenn ich meine KDE-Sitzung mit killall -u -9 martin oder durchs Beenden
des X-Servers nun hart beende, könnte es also sein, dass KDE die
gespeicherte Sitzung herstellt. Ich mags grad nicht ausprobieren. Kannst
Du ja mal versuchen.
Hmmm und in der ksmserverc sind ja beide IDs schon gespeichert:
martin@merkaba:~/.kde/share/config> grep
10cec7d36b000133537790600000211060152_1336223154_736187 * 2>/dev/null
ksmserverrc:discardCommand9[$e]=rm,
$HOME/.kde/share/config/session/akregator_10cec7d36b000133537790600000211060152_1336223154_736187
ksmserverrc:restartCommand9=/usr/bin/akregator,-
session,10cec7d36b000133537790600000211060152_1336223154_736187
martin@merkaba:~/.kde/share/config#2> grep
10cec7d36b000133537790600000211060152_1336598389_442621 * 2>/dev/null
ksmserverrc:discardCommand9[$e]=rm,
$HOME/.kde/share/config/session/akregator_10cec7d36b000133537790600000211060152_1336598389_442621
ksmserverrc:restartCommand9=/usr/bin/akregator,-
session,10cec7d36b000133537790600000211060152_1336598389_442621
martin@merkaba:~/.kde/share/config#2>
Aja:
[Session: saved at previous logout]
versus
[Session: saved by user]
Nur wo steht nun eigentlich, welche ksmserver zum Restaurieren verwendet?
Hmmm, außer obigen DBUS-Call finde ich es im Moment nicht.
Ich weiß, dass es auch mal Ansätze dazu gab, so eine Funktionalität
offiziell einzubauen. Vielleicht gibts dazu unter bugs.kde.org oder KDE
Brainstorm¹ etwas.
Anyway, soweit. Wenn Du möchtest, kannst Du das ja selbst mal
weiterverfolgen. Wenn Du was rausfindest, würde mich das durchaus
interessieren.
Das ganze ist hier mit Debian Sid und KDE SC 4.7.4.
[1] http://forum.kde.org/viewforum.php?f=83
Ciao,
--
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
Reply to: