Change:
This is a missing adoption when notebooks became floating window capable. Notice how the status bar entry appears in the main window and not the floating window: ! We have had a similar issue with the text editor status bar and solved it by instantiating it per-window: I think a similar approach would work for notebooks too. The key for this to work is that you get a scoped in the that allows you to listen only to editor change events in the respective window. Consequently, you use a main-window scoped editor service for the main-window status bar: Let me know if you have questions, but I think its easy to copy what we do for editor status here.
When I reload the window with a floating notebook, the status bar does not appear (macOS): !
This is my attempt to fix this issue The problem here is if we register the contrib , we won't get the event. The event is the only place where we get the window's unique instantiationService (which gives us the right statusbarservice). Without the right statusbarservice, we can't register notebook status bar items to the right place.
Not very happy about that, filed
<!-- UNABLETOLOCATECOMMITMESSAGE repo --Issue marked as unreleased but unable to locate closing commit in repo history. If this was closed in a separate repo you can add the label directly, or comment .
<!-- UNABLETOLOCATECOMMITMESSAGE --Issue marked as unreleased but unable to locate closing commit in issue timeline. You can manually reference a commit by commenting , or directly add the label if you know this has already been releaased

Discussion:
import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ILogService } from 'vs/platform/log/common/log'; <del> import { Registry } from 'vs/platform/registry/common/platform'; import { IWorkbenchContribution, IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions'; </del> <ins> import { IWorkbenchContribution, WorkbenchPhase, registerWorkbenchContribution2 } from 'vs/workbench/common/contributions'; </ins> import { CENTER_ACTIVE_CELL } from 'vs/workbench/contrib/notebook/browser/contrib/navigation/arrow'; import { SELECT_KERNEL_ID } from 'vs/workbench/contrib/notebook/browser/controller/coreActions'; import { SELECT_NOTEBOOK_INDENTATION_ID } from 'vs/workbench/contrib/notebook/browser/controller/editActions';

import { NotebookCellsChangeType } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookKernel, INotebookKernelService } from 'vs/workbench/contrib/notebook/common/notebookKernelService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; <del> import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle'; </del> import { IStatusbarEntry, IStatusbarEntryAccessor, IStatusbarService, StatusbarAlignment } from 'vs/workbench/services/statusbar/browser/statusbar'; <ins> import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; </ins> class ImplictKernelSelector implements IDisposable {

} } <del> Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(KernelStatus, LifecyclePhase.Restored); </del> export class ActiveCellStatus extends Disposable implements IWorkbenchContribution { private readonly _itemDisposables = this._register(new DisposableStore());

} } <del> Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(ActiveCellStatus, LifecyclePhase.Restored); export class NotebookIndentationStatus extends Disposable implements IWorkbenchContribution { </del> <ins> export class NotebookIndentationStatus extends Disposable { </ins> private readonly _itemDisposables = this._register(new DisposableStore()); private readonly _accessor = this._register(new MutableDisposable<IStatusbarEntryAccessor>());

} } <del> registerWorkbenchContribution2(NotebookIndentationStatus.ID, NotebookIndentationStatus, WorkbenchPhase.AfterRestored); // TODO@Yoyokrazy -- unsure on the phase </del> <ins> export class NotebookEditorStatusContribution extends Disposable implements IWorkbenchContribution { static readonly ID = 'notebook.contrib.editorStatus'; constructor( @IInstantiationService instantiationService: IInstantiationService, @IEditorGroupsService editorGroupService: IEditorGroupsService, @IEditorService editorService: IEditorService ) { super(); // Main Editor Status const mainInstantiationService = instantiationService.createChild(new ServiceCollection( [IEditorService, editorService.createScoped('main', this._store)] )); this._register(mainInstantiationService.createInstance(KernelStatus)); this._register(mainInstantiationService.createInstance(ActiveCellStatus)); this._register(mainInstantiationService.createInstance(NotebookIndentationStatus)); // Auxiliary Editor Status this._register(editorGroupService.onDidCreateAuxiliaryEditorPart(({ part, instantiationService, disposables }) => { disposables.add(instantiationService.createInstance(KernelStatus)); disposables.add(instantiationService.createInstance(ActiveCellStatus)); disposables.add(instantiationService.createInstance(NotebookIndentationStatus)); })); } } registerWorkbenchContribution2(NotebookEditorStatusContribution.ID, NotebookEditorStatusContribution, WorkbenchPhase.AfterRestored); </ins>