--Boundary-00=_x0QXBXybU71npea Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello list, I've created a patch, to lock the screen, if you close the lid. The screen is locked probably, but KWallet stops working, if the screen get= s=20 locked through this. I have to kill kded and everything is working again. Does anyone have an idea, how to get it fully working? TIA and HAND, Steffen =2D-=20 =46reiheit ist die Freiheit zu sagen, dass zwei und zwei gleich vier ist. Sobald das gew=E4hrleistet ist, ergibt sich alles andere von selbst. 1984 - George Orwell --Boundary-00=_x0QXBXybU71npea Content-Type: text/x-diff; charset="iso-8859-15"; name="KLaptopdaemon_lid_lock_screen.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="KLaptopdaemon_lid_lock_screen.patch" --- buttons.cpp.orig 2004-01-17 13:57:07.000000000 +0100 +++ buttons.cpp 2004-09-14 08:47:41.000000000 +0200 @@ -53,6 +53,7 @@ lidHibernate(0), lidShutdown(0), lidLogout(0), + lidLock(0), lidBrightness(0), lidValBrightness(0), lidThrottle(0), @@ -76,6 +77,7 @@ { int can_shutdown = 1; // fix me int can_logout = 1; // fix me + int can_lock = 1; KGlobal::locale()->insertCatalogue("klaptopdaemon"); // For translation of klaptopdaemon messages @@ -144,7 +146,11 @@ lidLogout = new QRadioButton(i18n("Logout"), lidBox); QToolTip::add( lidShutdown, i18n( "Causes you to be logged out" ) ); } - if (can_suspend||can_standby||can_hibernate||can_shutdown||can_logout) + if (can_lock) { + lidLock = new QRadioButton(i18n("Lock Screen"), lidBox); + QToolTip::add( lidLock, i18n( "Causes the laptop to lock the screen" ) ); + } + if (can_standby||can_suspend||can_hibernate||can_shutdown||can_logout||can_lock) lidOff = new QRadioButton(i18n("&Off"), lidBox); if (can_brightness) { lidBrightness = new QCheckBox(i18n("Brightness"), lidBox); @@ -468,16 +474,18 @@ { if (!apm) return(lid); - if (lidHibernate && lidHibernate->isChecked()) - return 3; if (lidStandby && lidStandby->isChecked()) return 1; if (lidSuspend && lidSuspend->isChecked()) return 2; - if (lidLogout && lidLogout->isChecked()) - return 4; + if (lidHibernate && lidHibernate->isChecked()) + return 3; if (lidShutdown && lidShutdown->isChecked()) return 5; + if (lidLogout && lidLogout->isChecked()) + return 4; + if (lidLock && lidLock->isChecked()) + return 6; return(0); } @@ -502,11 +510,21 @@ { if (!apm) return; + if (lidStandby) { + lidStandby->setChecked(FALSE); + } else { + if (np == 1) np = 0; + } if (lidSuspend) { lidSuspend->setChecked(FALSE); } else { if (np == 2) np = 0; } + if (lidHibernate) { + lidHibernate->setChecked(FALSE); + } else { + if (np == 3) np = 0; + } if (lidShutdown) { lidShutdown->setChecked(FALSE); } else { @@ -517,15 +535,10 @@ } else { if (np == 4) np = 0; } - if (lidStandby) { - lidStandby->setChecked(FALSE); - } else { - if (np == 1) np = 0; - } - if (lidHibernate) { - lidHibernate->setChecked(FALSE); + if (lidLock) { + lidLock->setChecked(FALSE); } else { - if (np == 3) np = 0; + if (np == 6) np = 0; } if (lidOff) lidOff->setChecked(FALSE); @@ -538,6 +551,7 @@ case 3: lidHibernate->setChecked(TRUE);break; case 4: lidLogout->setChecked(TRUE);break; case 5: lidShutdown->setChecked(TRUE);break; + case 6: lidLock->setChecked(TRUE);break; } if (powerSuspend) { powerSuspend->setChecked(FALSE); --- buttons.h.orig 2003-03-12 13:31:28.000000000 +0100 +++ buttons.h 2004-09-14 08:48:42.000000000 +0200 @@ -61,7 +61,7 @@ void setPower( int, int ); QButtonGroup *lidBox; - QRadioButton *lidStandby, *lidSuspend, *lidOff, *lidHibernate, *lidShutdown, *lidLogout; + QRadioButton *lidStandby, *lidSuspend, *lidOff, *lidHibernate, *lidShutdown, *lidLogout, *lidLock; QCheckBox *lidBrightness; QSlider *lidValBrightness; QCheckBox *lidThrottle; --- daemon_state.h.orig 2004-09-14 13:19:49.000000000 +0200 +++ daemon_state.h 2004-09-14 13:20:07.000000000 +0200 @@ -69,6 +69,7 @@ bool systemBeep[2]; bool logout[2]; + bool lock[2]; bool shutdown[2]; bool runCommand[2]; QString runCommandPath[2]; --- laptop_daemon.cpp.orig 2004-09-14 09:58:11.000000000 +0200 +++ laptop_daemon.cpp 2004-09-14 13:38:10.000000000 +0200 @@ -202,6 +202,8 @@ break; case 5: invokeShutdown(); break; + case 6: invokeLock(); + break; } } if (s.enable_power_button && (power_state = laptop_portable::get_button(laptop_portable::PowerButton))) { @@ -534,6 +536,8 @@ invokeStandby(); if (s.logout[t]) invokeLogout(); + if (s.lock[t]) + invokeLock(); if (s.shutdown[t]) invokeShutdown(); // notify if we must (must be last since it's synchronous) @@ -792,6 +796,17 @@ KMessageBox::sorry(0, i18n("Logout failed.")); } +void laptop_daemon::invokeLock() +{ + DCOPClient* client = kapp->dcopClient(); + if (client) + { + client->attach(); + client->send("kdesktop", "KScreensaverIface", "lock()", ""); + client->detach(); + } +} + void laptop_daemon::invokeShutdown() { bool rc = kapp->requestShutDown(KApplication::ShutdownConfirmNo, KApplication::ShutdownTypeHalt, KApplication::ShutdownModeForceNow); @@ -963,6 +978,8 @@ break; case 5: invokeShutdown(); break; + case 6: invokeLock(); + break; } } else { if (button_bright_saved) { --- laptop_daemon.h.orig 2004-09-14 11:00:36.000000000 +0200 +++ laptop_daemon.h 2004-09-14 11:01:02.000000000 +0200 @@ -108,6 +108,7 @@ void invokeHibernate(); void invokeShutdown(); void invokeLogout(); + void invokeLock(); void displayPixmap(); void setBlankSaver(bool); --Boundary-00=_x0QXBXybU71npea Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline >> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe << --Boundary-00=_x0QXBXybU71npea--