|
|
Line 1: |
Line 1: |
| ==definitions==
| | * Visual during switch |
| * ''shell'': the binary that loads full screen and displays desktop, panels, etc. currently those would be: plasma-desktop, plasma-netbook, plasma-device, etc. | | ** A kwin effect |
| * ''workspace'': a full arrangement of shell (+ default layout), window manager, GUI utilities (e.g. krunner) and infrastructure processes (kactivitymanagerd, e.g.)
| | ** Full screen busy -> to black -> to back in |
|
| |
|
| ==Workspace definitions==
| | * Triggering |
| Workspaces should be defined by self-contained Plasma Packages, one per workspace setup, containing:
| | ** kded module that keeps track of form factor |
| * processes other than the shell and window manager that are required (e.g. krunner, software keyboard) | | *** right now is an envvar .. meh |
| * QML layout to use (perhaps also included in package?) | | *** runtime platform string(s): [device], [form], [input] |
| * kwin configuration | | ** DBus signal on change |
| * other application configuration (krunner, e.g.?) | | *** read from shell definition package |
| | ** keeps track of active shell definition package |
| | *** default in the kded module's configuration |
| | *** DBus API: |
| | **** stringlist runtimePlatform |
| | **** signal runtimePlatformChanged stringlist |
| | **** string currentShellPackage |
| | **** signal currentShellPackageChanged string |
| | *** Auto-switch on hardware events |
| | **** sources: libsolid, kscreen |
| | **** Docking events |
| | ***** Screen plugging |
| | ***** Keyboard/mouse |
| | ** KCM switcher between desktop and netbook ported to this |
|
| |
|
| ==Track workspace setting in a kded module==
| | * On-screen keyboard |
| What is the current workspace will be tracked by a kded module. Features:
| | ** Don't show when hardware keyboard available |
| * auto-switching based on triggers.
| |
| ** screen change
| |
| ** docking
| |
| ** custom user signal?
| |
| * manual switching via dbus (perhaps tied to window manager; see secdtion on kwin)
| |
| * dbus signal emitted when workspace changes
| |
| ** shell may load a different QML layout
| |
| ** kwin may change settings
| |
| * start/stop processes according to workspace definition.
| |
| ** e.g. "desktop" will want to start krunner; switching to "netbook" which does not include krunner in its definition would result in krunner being stopped
| |
| ** re-use session management for this? some custom configuration system? modified startactive? systemd? or ...?
| |
| | |
| ==plasma-device becomes the only shell==
| |
| All the shells will be replaced by an upgraded plasma-device.
| |
| * control UI (add widgets, e.g.) will move into the shell QML, just as it is with plasma-device now in Plasma Active.
| |
| ** for desktop that includes: activity switcher, add widgets, panel settings
| |
| * will listen to the workspace change signal from the kded module and possibly load a different workspace QML structure
| |
| * the following features from plasma-desktop must be ported:
| |
| ** multiple panels
| |
| ** multi-screen awareness
| |
| ** integrate Desktop Scripting (perhaps even becoming the way layouts are set up)
| |
| * a single DBus API will need to be settled on (alternative is allowing each shell layout to define a custom one; technically more difficult and the benefit is undefined)
| |
| | |
| ===Package structure===
| |
| still largely TBD ...
| |
| * metadata.desktop
| |
| * contents/
| |
| | |
| will need to contain:
| |
| * which processes need to be running (e.g.: krunner)
| |
| * default plasma-device layout
| |
| * kwin configuration
| |
| * other app config?
| |
| * default lock screen + settings
| |
| * default splash screen + settings
| |
| * default logout dialog + settings
| |
| | |
| === Test shell in the plasma-frameworks repo ===
| |
| * Creates a QQuickView subclass (View, in the shell and not in libplasma anymore) for each screen (using qdesktopwidget)
| |
| * Loads a qml file coming from a package for each view (same role as contour-himescreen in plasma-device) | |
| * When a containment gains a screen, a pointer to the root object of the containment qml package needs to be accessible: it will become child of the view qml file (this will also make possible to perform transition animations)
| |
| * Same thing will be needed for panels
| |
| * Pieces of plasma-devices and plsma-desktop shell will be transplanted there (or whatever final repository will be) until the features are complete. Note: some features, such full support for activities are blocked by the full port of other components (kactivities, nepomuk-core) | |
| | |
| ==kwin==
| |
| * kwin will need to be able to source different sets of configuration files and change it's configuration in response to the signal | |
| * an elegant desktop effect to make the workspace UI reshuffle smooth
| |
| ** a simple fade to black with a busy spinner , followed by a fade back in would be enough
| |
| ** requires that kwin is the first process that starts switching
| |
| ** requires that kwin controls when the change signal is emitted to other processes
| |
| ** requires that applications provide feedback as to when they are finished transforming to trigger the fade in
| |
| ** unload/load window decoration, currently either a decoration is required (desktop) or hard disabled in code (active)
| |
| | |
| ==application integration==
| |
| would be fantastic if applications can also adjust; e.g. okular switch from desktop to touch UI on workspace change.
| |