[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: