Package: wdm
Version: 1.28-2.2
Severity: wishlist
hi,
the attached patch against 1.28-2.2 adds 2 options/actions, so that user
can suspend to RAM/disk from wdm's panel - a long standing TODO in my
personal list.
wdm-config defaults are for commands from hibernate pkg.
thanx
--
paolo
--
paolo
GPG/PGP id:0x3A47DE45 - B5F9 AAA0 44BD 2B63 81E0 971F C6C0 0B87 3A47 DE45
- 9/11: the outrageous deception & coverup: http://journalof911studies.com -
diff -urN wdm-1.28/debian/changelog wdm-1.28-2.3/debian/changelog
--- wdm-1.28/debian/changelog 2008-12-12 10:27:25.000000000 +0100
+++ wdm-1.28-2.3/debian/changelog 2008-12-11 21:30:39.000000000 +0100
@@ -1,3 +1,9 @@
+wdm (1.28-2.3) unstable; urgency=low
+
+ * add suspend2{Ram,Disk}
+
+ -- amsis <am...@localhosy> Thu, 11 Dec 2008 21:30:31 +0100
+
wdm (1.28-2.2) unstable; urgency=medium
* Non-maintainer upload.
diff -urN wdm-1.28/debian/config/wdm-config
wdm-1.28-2.3/debian/config/wdm-config
--- wdm-1.28/debian/config/wdm-config 2008-12-12 10:27:25.000000000 +0100
+++ wdm-1.28-2.3/debian/config/wdm-config 2008-12-12 00:52:35.000000000
+0100
@@ -39,6 +39,8 @@
! DisplayManager*wdmWm: twm:wmaker:afterstep
DisplayManager*wdmReboot: /sbin/reboot
DisplayManager*wdmHalt: /sbin/halt
+DisplayManager*suspend2Ram: /usr/sbin/hibernate-ram
+DisplayManager*suspend2Disk: /usr/sbin/hibernate-disk
DisplayManager*wdmVerify: true
DisplayManager*wdmRoot: true
DisplayManager*wdmAnimations: true
diff -urN wdm-1.28/src/wdm/Greet.c wdm-1.28-2.3/src/wdm/Greet.c
--- wdm-1.28/src/wdm/Greet.c 2005-03-26 14:57:04.000000000 +0100
+++ wdm-1.28-2.3/src/wdm/Greet.c 2008-12-11 23:24:44.000000000 +0100
@@ -125,6 +125,8 @@
extern char *wdmBg;
extern char *wdmReboot;
extern char *wdmHalt;
+extern char *wdmSuspend2Disk;
+extern char *wdmSuspend2Ram;
extern int wdmRoot;
extern int wdmVerify;
extern int wdmAnimations;
@@ -305,6 +307,14 @@
readstring(pipe_filedes[0], exitArg);
code = 4;
break;
+ case 5: /*suspend2ram*/
+ readstring(pipe_filedes[0], exitArg);
+ code = 5;
+ break;
+ case 6: /*suspend2disk*/
+ readstring(pipe_filedes[0], exitArg);
+ code = 6;
+ break;
default: /*????*/
WDMError("Bad extension code from external program: %i\n",
code);
@@ -382,6 +392,7 @@
SessionExit (d, UNMANAGE_DISPLAY, FALSE);
break;
case 4: /* exit */
+#ifdef WITH_EXITLOGIN
CloseGreet (pid);
WDMDebug("UNMANAGE_DISPLAY\n");
WDMInfo("%s exit(%s) by %s\n",
@@ -392,6 +403,15 @@
WDMDebug ("Killing parent process %d\n", getppid());
kill (getppid(), SIGINT);
#endif
+#endif
+ break;
+ case 5: /* s2r */
+ WDMInfo("suspend2ram(%s) by %s\n", exitArg, name);
+ system(wdmSuspend2Ram);
+ break;
+ case 6: /* s2d */
+ WDMInfo("suspend2disk(%s) by %s\n", exitArg, name);
+ system(wdmSuspend2Disk);
break;
}
}
diff -urN wdm-1.28/src/wdm/resource.c wdm-1.28-2.3/src/wdm/resource.c
--- wdm-1.28/src/wdm/resource.c 2005-03-26 14:57:04.000000000 +0100
+++ wdm-1.28-2.3/src/wdm/resource.c 2008-12-11 20:36:20.000000000 +0100
@@ -77,6 +77,8 @@
char *wdmDefaultPasswd; /* points to optional default passwd */
char *wdmBg; /* pixmap or color(s) for background */
char *wdmReboot; /* command for Reboot */
+char *wdmSuspend2Disk; /* command to hibernate on disk */
+char *wdmSuspend2Ram; /* command to hibernate in RAM aka standby */
char *wdmHalt; /* command to Halt */
int_resource wdmVerify; /* if true, require name & password for Exit */
/* reboot or halt */
@@ -274,6 +276,10 @@
""} ,
{ "wdmLogin", "WdmLogin", DM_STRING, &wdmLogin,
DEF_WDMLOGIN} ,
+{ "wdmSuspend2Disk", "WdmSuspend2Disk", DM_STRING,
+ &wdmSuspend2Disk, "s2disk"} ,
+{ "wdmSuspend2Ram", "WdmSuspend2Ram", DM_STRING,
+ &wdmSuspend2Ram, "s2ram"} ,
{ "wdmReboot", "WdmReboot", DM_STRING, &wdmReboot,
"reboot"} ,
{ "wdmHalt", "WdmHalt", DM_STRING, &wdmHalt,
diff -urN wdm-1.28/src/wdmLogin/config.c wdm-1.28-2.3/src/wdmLogin/config.c
--- wdm-1.28/src/wdmLogin/config.c 2005-03-26 14:57:04.000000000 +0100
+++ wdm-1.28-2.3/src/wdmLogin/config.c 2008-12-12 01:04:35.000000000 +0100
@@ -27,7 +27,7 @@
static Bool WDMCheckPLGeometry(WMPropList *pl, void *def, void *target);
-static WMRect default_geometry = {{INT_MIN, INT_MIN}, {530, 240}};
+static WMRect default_geometry = {{INT_MIN, INT_MIN}, {554, 240}};
static WDMDictionaryStruct wdmLogin_config_struct[] =
{
diff -urN wdm-1.28/src/wdmLogin/Login.c wdm-1.28-2.3/src/wdmLogin/Login.c
--- wdm-1.28/src/wdmLogin/Login.c 2005-03-26 14:57:04.000000000 +0100
+++ wdm-1.28-2.3/src/wdmLogin/Login.c 2008-12-12 02:25:49.000000000 +0100
@@ -114,14 +114,20 @@
static char *ExitStr[] = { N_("Login"), N_("Reboot"), N_("Halt"),
#ifdef WITH_EXITLOGIN
N_("ExitLogin"),
+#else
+ N_("---------"),
#endif
+ N_("Suspend to RAM"), N_("Suspend to disk"),
NULL };
static char *ExitFailStr[] = { N_("Login failed"), N_("Reboot failed"),
N_("Halt failed"),
#ifdef WITH_EXITLOGIN
N_("ExitLogin failed"),
+#else
+ N_("--------- failed"),
#endif
+ N_("Suspend to RAM failed"), N_("Suspend to disk failed"),
NULL };
static int WmOptionCode = 0;
@@ -502,10 +508,16 @@
}
init_namefield("");
- if(OptionCode == 0)
- PrintInfoMsg(panel, _("validating"));
- else
- PrintInfoMsg(panel, _("exiting"));
+ WDMDebug("%s: OptionCode=%c\n", __FUNCTION__, OptionCode);
+ switch (OptionCode) {
+ case 0: PrintInfoMsg(panel, _("validating"));
+ break;
+ case 4:
+ case 5: PrintInfoMsg(panel, _("suspending ..."));
+ break;
+ default: PrintInfoMsg(panel, _("exiting"));
+ break;
+ }
OutputAuth(LoginName, LoginPswd);
}
@@ -536,7 +548,16 @@
LoginPswd = WMGetTextFieldText(panel->entryText);
WMSetTextFieldText(panel->entryText, "");
}
- PrintInfoMsg(panel, _("exiting"));
+ WDMDebug("%s: OptionCode=%c\n", __FUNCTION__, OptionCode);
+ switch (OptionCode) {
+ case 0: PrintInfoMsg(panel, _("validating"));
+ break;
+ case 4:
+ case 5: PrintInfoMsg(panel, _("suspending ..."));
+ break;
+ default: PrintInfoMsg(panel, _("exiting"));
+ break;
+ }
OutputAuth(LoginName, LoginPswd);
}
@@ -843,11 +864,11 @@
WMSetFrameTitlePosition(panel->exitF, WTPAtTop);
WMSetFrameTitle(panel->exitF, _("Options"));
WMMoveWidget(panel->exitF, 134, 178);
- WMResizeWidget(panel->exitF, 98, 45);
+ WMResizeWidget(panel->exitF, 122, 45);
panel->exitBtn = WMCreatePopUpButton(panel->exitF);
WMMoveWidget(panel->exitBtn, 4, 15);
- WMResizeWidget(panel->exitBtn, 90, 25);
+ WMResizeWidget(panel->exitBtn, 114, 25);
WMSetPopUpButtonAction(panel->exitBtn, (WMAction *) changeOption,
panel);
i = 0;