Sprints/Plasma/2025/Topics/Activities
Appearance
Problems with the status quo
- Unclear scope
- Difficult to explain
- Doesn't actually affect that many things; not as useful as it could be
Idea!
Elevator pitch: "You can configure and use your apps and virtual desktops differently in each Activity"
- Make each Activity a thing that can open a different instance of each containerized app, with its own config data, state, etc
- Would only work for containerized apps; traditional distro-packaged apps would be limited to running in all Activities
- Users would choose which apps do this, essentially saying "I want this app to be different on this Activity"
- Apps that don't or can't opt into being Activity-specific appear in all Activities when launched
- Needs to be as transparent to apps as possible so 3rd-party apps work automatically
- Each Activity gets bound to one or more Virtual Desktops, which are then visible in the virtual desktops KCM. You could choose which desktops are a part of which Activity.
- Plasma would be mostly the same across Activities, but the following things would be activity-specific:
- Pinned Task Manager apps and Kickoff Favorites (since these are about apps and the point is that Activities are about separating app usage patterns)
- Per-activity wallpapers since we already have it
- Per-activity virtual desktops since we already have it
- Move switching into Overview, and delete the Activity Switcher and maybe the Activity Pager too
Implementation details
- Do an independent project to allow containerized apps to be launched multiple times with different "profiles" (creates by this system), and then apply it to some existing apps, like Discord. If this works, it a can be the basis of the future Activities revamp
- Remove features from existing Activities implementation:
- "move apps between Activities"
- "allow apps to run in arbitrary Activities" (limit to one Activity or all Activities)
- "link files to Activities"
- "stop Activities"
- Later look into extending the per-Activity app feature to non-containerized apps using Firejail or something
- Could write a small library for our apps that eases the implementation of multiple sessions, and then this automatically improves Activities integration too if you happen to use it
Challenges
- Need to figure out how to give each activity's instance of the app a separate DBus address
- Need to figure out how to handle single-instance apps that don't expect to end up with multiple instances of them unexpectedly started anyway
Next steps
- Implement the "app profiles" feature for a start to evaluate feasibility of the core idea
- If this works, move onto the plan to allow Activities to host different app profiles. If not, just keep the part about making Activities be basically groups of virtual desktops