32
$\begingroup$

When I have entered some bad code and hit shift+enter before thinking about the perils of finite RAM my computer obviously starts suffering. I have found two options that usually lets me recover without rebooting or in other ways lose the entire notebook.

The first is to switch to a shell and kill -9 the PID of MathKernel process.
The other is to go to the menu Evaluation->Quit Kernel->Local (note that Alt+. and Alt+, are completely ignored by now), by the time I have reached that menu my computer is on its last breath and seconds are of utmost importance. It usually takes seconds just to render the "Do you really want to quit the kernel?" dialog box. I think I would have better success rate if it just quit the kernel as fast as possible. Can I disable this dialog box?

$\endgroup$
1

2 Answers 2

28
$\begingroup$

You can add this to your init file, (or just try it out for the current session). It will add a Quit to your key events. This Quit doesn't open a confirm dialog.

FrontEndExecute[
 FrontEnd`AddMenuCommands["MenuListQuitEvaluators",
  {MenuItem["AddMenu &Quit",
    FrontEnd`KernelExecute[ToExpression["Quit[]"]],
    MenuKey["q", Modifiers -> {"Control"}],
    System`MenuEvaluator -> Automatic]}]]

ref. https://mathematica.stackexchange.com/a/6227/363

Alternatively, it can be added to MenuSetup.tr like so:

Menu["Quit Local",
{
  MenuItem["Quit Kernel",
    FrontEnd`KernelExecute[ToExpression["Quit[]"]],
    MenuKey["q", Modifiers -> {"Control"}],
    MenuEvaluator -> Automatic]
}]
$\endgroup$
10
  • $\begingroup$ Dengen: interesting, does this interrupt a running calculation? It looks to me as if the Quit is queued and won't do what the OP desires... $\endgroup$ Commented Jan 6, 2013 at 20:58
  • 1
    $\begingroup$ @ssch - Probably simpler to put it in your MenuSetup file then. I have just added this to my answer. $\endgroup$ Commented Jan 6, 2013 at 21:16
  • 1
    $\begingroup$ Yea that's better $\endgroup$
    – ssch
    Commented Jan 6, 2013 at 21:29
  • 1
    $\begingroup$ @Dengen: sorry, seems to work as desired. When I tried it yesterday it didn't, but I can't remember what exactly I tried on which version. Today with Version 9 (64bit) on Windows 7 it seems to interrupt a running calculation... $\endgroup$ Commented Jan 7, 2013 at 16:10
  • 1
    $\begingroup$ This fixes it. $\endgroup$ Commented Dec 11, 2014 at 21:10
3
$\begingroup$

My approach is to use a macro I created in a 3rd-party task automation program (Keyboard Maestro for MacOS; I believe alternatives exist for Windows and Linux). Thus, rather than modifying MMA, I assigned a shortcut to a macro that executes MMA's normal sequence for quitting the kernel.

Specifically, when I press Cmd+Shift+Q, the macro does: Evaluation->Quit Kernel->Local->Quit.

One advantage of this approach is that, so long as Wolfram does not change the menu steps for quitting the kernel, it should work reliably in all versions of MMA.

I'm not familiar with other programs, but creating the macro in Keyboard Maestro is fairly easy; I just had to select three panels from its library of "Actions", add them to the macro, and fill them in appropriately. Here's a screenshot of it:

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.