This feature was discussed in #6123, but it doesn't look like anything was ever incorporated into the IPython Notebook.

Here's a brief overview of the changes:

- Display of messages from other clients can be toggled on and off from within a notebook, either using the ``<M-m>e`` keyboard shortcut in the web UI, or through the option in the "Kernel" menu.
- notebook.js controls whether messages are displayed through a callback that is invoked from kernel.js when no callbacks are available for a message.
- The UI displays ``execute_input`` messages originating from an other clients in new cells at the end of the notebook. Output messages (``execute_result`` et al.) will only be displayed if a cell exists with a matching message ID.

Pending design questions:

- Should each ``execute_input`` message cause a new cell to be created?
- Should new cells be placed at the end of the notebook, or elsewhere? If the latter, what criteria should be followed?
Merge remote-tracking branch 'upstream/master'
Merge remote-tracking branch 'upstream/master'
Updated terminology to match the console/qtconsole
config settings and documentation more closely.

Unsolicited messages => output from other clients.
Increased notification message display time.
Merge remote-tracking branch 'upstream/master'
Removed keyboard shortcut.
Fixed inverted logic caused by renaming variables.
Backing out all changes to the UI and notebook.js.

Updated kernel.js to trigger the ``received_unsolicited_message.Kernel`` event instead. Notebook extensions can handle the event in whatever way they deem appropriate.

A notebook extension that takes advantage of this is available at https://github.com/nheijermans/nbexts.git.
Store kernelspecs under jupyter, not IPython
Add kernel directory relative to sys.prefix
Default to systemwide installation for kernelspecs
Update kernelspec command line interface
Update kernelspec tests
add ability to unregister a preset

fix #7218
Revert change to test skip condition

This was part of a commit cherry picked from another branch, and this
change didn't make sense on this branch.
remove kernel selector from header

- add kernel name to indicator
- float kernel logo where indicator used to be
add text placeholder for kernels with no logo

capital first initial on gray field
remove kernel logo text placeholder
transparent gif placeholder src

avoids invalid empty src