Presentation Mode
Feature summary
Currently, there are 4 display options in Gnome shell: primary only, joined displays, secondary only, and mirrored. I think there could be a place for a 5th display option, namely presentation mode. I saw there was already a feature request between the issues that mentions an approach to this problem, but the solution it proposes is vague and incomplete.
The problem
When people present something, they currently use one of two options, those being joined displays, and mirrored displays. They both however have a problem. Joined displays has the drawback of not showing the content on the primary display, only on the projecting display, which is not optimal when presenting something (presentation, code...). The other approach is to use mirrored displays, which does the job, but has the drawback of also showing potentially private information on the projecting display.
Importance of the problem
Gnome is one of the main desktop environments used by Linux users in business/education. One big aspect of both of those is giving presentations about all kinds of things. The variety of things that is presented is important. Some already offer the functionality proposed in this feature request, namely presentation software which will have both a view for the primary display, and for the projecting display. This however isn't present in most software, and should therefore be offered by the desktop environment itself.
As a quick example, during one of my uni classes, a docent wanted to show his code, but also had his file browser and email client open on his primary display, so he couldn't mirror it. Therefore he had to resort to the sub-optimal solution of putting the content on the projecting screen when it needed to be shown, and on the primary one when it needed to be edited.
Wanted behavior
Joined and mirrored mode both have their advantages and disadvantages. Ideally, the new solution should aim to keep all the advantages of both, while also getting rid of the drawbacks. The solution should provide a way to show content on any projecting screen, while also mirroring that content on the primary display. It shouldn't show any unwanted information on any of the projecting displays.
The presenter should be able to choose windows to be shown on the projecting screen. No windows that haven't been chosen prior to activating presentation mode should be shown on the projecting screen. As an additional privacy measure, there should be an option to enable do not disturb when presentation mode is on.
How would you like it to work
General solution:
Without discussing the specific solution, there needs to be a way for windows to be shown on different screens at once. If I understand it correctly, that ability is already available in Xorg/Wayland by mapping the same window to several screens at the same time. On the other hand, there needs to be a way for the user to select what windows should be on the projector screen. For that, several solutions are available. Some are explained below.
Solution 1 (preferred): Presentation workspace
Gnome already has excellent workspace support. Workspaces could offer a clean solution to this problem as well. When activating presentation mode, a new workspace could be added to the overview that is marked as the projecting workspace. That workspace would be the ONLY workspace shared between the primary and projecting displays. When a window gets dragged to that separate workspace, it will be available both on the primary display for the presenter, and on the projecting display for the viewer. This would make adding windows for presentation very easy and similar to the normal way of using workspaces.
Solution 2: Show on Presentation Display
A second option could be to add a new menu item to the menu that appears when the GtkHeaderBar on a window gets clicked. That way, windows could be added and removed from being available on the presentation screen. There are several drawbacks to this method. First, the GtkHeaderBar isn't available on all applications. They wouldn't be able to be shown on the presentation display this way. Another drawback is the worse user experience of the solution. It wouldn't be immediately obvious which windows are on the presenting display, and many users wouldn't discover the feature.
Solution 3: Show Active Window on Presentation Display
The last option is to add a button to the panel that allows the user to show the currently focused window on the presentation displays. This would work for most (if not all) windows. A drawback of this method is the flexibility of this approach. The window would be the only window on the presentation display, and managing the state of the display (fullscreen, minimized...) could be awkward.
Relevant links, screenshots, screencasts etc.
Example of how it could work (as described in Solution 1)
Example of application that already support something similar