Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

samw-26
Copy link

@samw-26 samw-26 commented Aug 10, 2025

Shared panel feature

Depends on #13055, #13057

Implementation for feature request Mirror Panels for Multiple Displays.

The purpose of this feature is to provide an option to create shared panels which shares panel settings, applets, and applet configurations.

Adding a shared panel

  1. Right click on an existing panel and click "Add a shared panel".
  2. Click on an area to add the shared panel.

You can add as many shared panels as you like by right clicking on existing shared panels and clicking "Add a shared panel" again. The option is disabled on regular panels if there are already existing shared panels.

After adding a shared panel, panel settings, applets, and applet settings will be duplicated onto the new panel.

Adding/Removing/Moving applets

Shared panels will respond to adding, removing and moving applets. Adding/removing an applet from a shared panel will add/remove the corresponding applets on all other shared panels. Moving an applet on a shared panel will move the corresponding applets on the other shared panels as well. Moving an applet off of a shared panel is akin to removing it.

The cinnamon-settings applet menu has been changed to reflect this behavior. All shared panels will be highlighted at once and they will behave as one panel when clicking the next and previous panel buttons. This also means that the next and previous panel buttons will be hidden if you only have shared panels.

Changing Settings

The panel settings and applet configurations on all shared panels will be kept in sync.

Panel settings

In the panel settings menu, selecting a shared panel will highlight all shared panels. The next and previous panel buttons will treat all shared panels as one panel. The next and previous panel buttons will be disabled if only shared panels exist.

Applet configuration

Opening the configuration menu for an applet on a shared panel will highlight all corresponding applets on all shared panels, and they will behave as one applet when going to the next and previous instances. The next and previous instance arrows will be hidden if there is only one applet of that uuid on a shared panel.

Any settings changes in the applet configuration menu of a shared panel will update the corresponding applets on all the other shared panels. If an applet setting that is not listed in the configuration menu of an applet changes (Such as the pinned favorites setting of the grouped window list applet), the corresponding applets on the shared panels will be re-instantiated to show the updated setting.

@fredcw
Copy link
Contributor

fredcw commented Aug 11, 2025

This requires all applets to be multi-instance compatible right? The following default applets are single instance:

[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

I'm not sure of the reasons each of these are single instance or how much work would be needed to make them them multi-instance. For instance, with [email protected], the notifications will only show in one of the instances. I've fixed this in PR #13025 but I don't know what issues there are with the others.

My idea was to make each of these applets multi-instance first (if possible) and then implement a panel copy feature. This of course wouldn't be the same as mirroring the panels as making changes to either panel would not affect the other but it would be a lot simpler and, perhaps to some degree, it would scratch the same itch. While this is very impressive, it's also pretty complex from a maintainability perspective.

@samw-26
Copy link
Author

samw-26 commented Aug 11, 2025

@fredcw Thanks for the feedback. I didn't know about the issue with notifications. I haven't had any other issues with the rest of the single instance applets so far. I agree that this feature is pretty complex, but for me at least, just a copying panel feature would still be burdensome when changing something on a panel because I would either have to manually do the change on the other panels or remove those panels and copy and paste the panels again.

@samw-26 samw-26 force-pushed the shared-panel branch 2 times, most recently from 247706d to 93b2814 Compare September 3, 2025 23:23
Added logic to handle adding and removing xlet while xlet-settings is open.
- Arrows will be hidden if number of instances is less than 2
- Arrows will be shown if number of instances is greater than 1
-  Next instance will be selected if currently selected xlet is removed
- xlet-settings will exit if last instance of xlet is removed.
-  Corresponding setting pages are created/removed when xlets are created/removed
@samw-26 samw-26 marked this pull request as ready for review September 4, 2025 22:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants