Difference between revisions of "Plasma/shellswitching"

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.
 

Revision as of 10:42, 19 April 2013

  • Visual during switch
    • A kwin effect
    • Full screen busy -> to black -> to back in
  • Triggering
    • kded module that keeps track of form factor
      • right now is an envvar .. meh
      • runtime platform string(s): [device], [form], [input]
    • DBus signal on change
      • 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
  • On-screen keyboard
    • Don't show when hardware keyboard available

This page was last edited on 19 April 2013, at 10:42. Content is available under Creative Commons License SA 4.0 unless otherwise noted.