Clarify Shift product framing in docs

Rewrite the main project docs to present SHIFT as the product and Plasma Mobile as the upstream base. Keep compatibility-sensitive runtime identifiers such as org.kde.plasma.mobileshell and ~/.config/plasma-mobile explicit in the hacking guide instead of treating them as product identity.
This commit is contained in:
Marco Allegretti 2026-05-17 17:26:52 +02:00
parent f00a29bd21
commit af190a813e
3 changed files with 23 additions and 17 deletions

View file

@ -1,6 +1,6 @@
# Hacking on Shift # Hacking on Shift
Shift is a convergent Plasma Mobile shell. This guide covers Shift is a convergent shell built on Plasma Mobile components. This guide covers
building and testing it locally without polluting your host system. building and testing it locally without polluting your host system.
The approach: keep every build dependency inside a **distrobox** container The approach: keep every build dependency inside a **distrobox** container
@ -89,8 +89,8 @@ sudo zypper install --no-confirm \
### Runtime dependencies (needed for preview, not for compilation) ### Runtime dependencies (needed for preview, not for compilation)
The nested preview runs the system `plasmashell` binary. It needs a The nested preview runs the system `plasmashell` binary. It needs the
complete Plasma Mobile runtime so all QML imports resolve: complete runtime from the Plasma Mobile stack so all QML imports resolve:
```bash ```bash
sudo zypper install --no-confirm \ sudo zypper install --no-confirm \
@ -204,6 +204,7 @@ export EGL_PLATFORM=wayland
export QT_QUICK_CONTROLS_STYLE=org.kde.breeze export QT_QUICK_CONTROLS_STYLE=org.kde.breeze
export QT_QUICK_CONTROLS_MOBILE=true export QT_QUICK_CONTROLS_MOBILE=true
export PLASMA_PLATFORM=phone:handset export PLASMA_PLATFORM=phone:handset
# Compatibility note: the runtime shell package id intentionally remains upstream.
export PLASMA_DEFAULT_SHELL=org.kde.plasma.mobileshell export PLASMA_DEFAULT_SHELL=org.kde.plasma.mobileshell
export QT_FORCE_STDERR_LOGGING=1 export QT_FORCE_STDERR_LOGGING=1
exec plasmashell --replace -p org.kde.plasma.mobileshell exec plasmashell --replace -p org.kde.plasma.mobileshell
@ -212,7 +213,8 @@ ENDSCRIPT
# Expose the project prefix to the host kwin_wayland so it can find # Expose the project prefix to the host kwin_wayland so it can find
# KWin scripts (convergentwindows) and their QML dependencies. # KWin scripts (convergentwindows) and their QML dependencies.
# Also overlay ~/.config/plasma-mobile so KWin reads the mobile kwinrc # Also overlay ~/.config/plasma-mobile so KWin reads the mobile kwinrc.
# That path is intentionally preserved for compatibility with existing config handling.
# (envmanager writes convergentwindowsEnabled, Placement, etc. there). # (envmanager writes convergentwindowsEnabled, Placement, etc. there).
export XDG_DATA_DIRS="$PREFIX/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" export XDG_DATA_DIRS="$PREFIX/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
export XDG_CONFIG_DIRS="$HOME/.config/plasma-mobile:${XDG_CONFIG_DIRS:-/etc/xdg}" export XDG_CONFIG_DIRS="$HOME/.config/plasma-mobile:${XDG_CONFIG_DIRS:-/etc/xdg}"
@ -234,9 +236,9 @@ Make it executable: `chmod +x preview.sh`.
1. `dbus-run-session` spins up an isolated D-Bus session so the nested 1. `dbus-run-session` spins up an isolated D-Bus session so the nested
compositor doesn't clash with your running desktop. compositor doesn't clash with your running desktop.
2. Four environment exports give the **host** `kwin_wayland` access to 2. Four environment exports give the **host** `kwin_wayland` access to
the project's `.prefix` (KWin scripts, QML plugins) and to the project's `.prefix` (KWin scripts, QML plugins) and to
`~/.config/plasma-mobile` (where envmanager writes convergence `~/.config/plasma-mobile` (the preserved compatibility path where envmanager writes convergence
settings like `convergentwindowsEnabled`, `Placement`, etc.). settings like `convergentwindowsEnabled`, `Placement`, etc.).
3. `kwin_wayland` opens a window on your current desktop and creates a 3. `kwin_wayland` opens a window on your current desktop and creates a
Wayland socket named `shift-kwin`. Because of the exports it can Wayland socket named `shift-kwin`. Because of the exports it can
load the `convergentwindows` script, which handles maximising load the `convergentwindows` script, which handles maximising

View file

@ -1,11 +1,8 @@
# Shift # Shift
A fork of KDE Plasma Mobile that adds a desktop-class convergence mode. Shift is a fork of KDE Plasma Mobile focused on convergence.
When you connect a monitor, keyboard, or mouse, the same shell should still
Plasma Mobile is a phone shell. It doesn't try to be anything else. work as a desktop-style environment. No second OS, no separate session.
Shift picks up where it leaves off: when you connect a monitor, keyboard,
or mouse, the same device should feel like a desktop. No second OS, no
separate session — one shell that adapts.
## What's different from upstream ## What's different from upstream
@ -15,6 +12,10 @@ that still works. Shift adds a **convergence mode** layer on top — toggled
via `plasmamobilerc` — that swaps in desktop-oriented behaviour without via `plasmamobilerc` — that swaps in desktop-oriented behaviour without
replacing the phone UI underneath. replacing the phone UI underneath.
Compatibility-sensitive runtime identifiers such as
`org.kde.plasma.mobileshell` remain upstream-looking for now. The product is
SHIFT; the preserved identifiers are part of the current compatibility layer.
Key changes so far: Key changes so far:
- **Unified dock** replacing the navigation panel in convergence mode, - **Unified dock** replacing the navigation panel in convergence mode,

View file

@ -1,6 +1,6 @@
# Shift # Shift
SHIFT is an open source shell built on KDE Plasma Mobile, designed to adapt fluidly to your computing needs across devices SHIFT is an independent shell fork focused on convergence. It builds on KDE Plasma Mobile, keeps the upstream phone UI available, and layers desktop-oriented behaviour on top of the same session.
### Desktop demos ### Desktop demos
@ -8,8 +8,8 @@
![Docked mode](screenshots/quick_DesktopDemo_docked.webm) ![Docked mode](screenshots/quick_DesktopDemo_docked.webm)
![Tiling](screenshots/quick_DesktopDemo_tiling.webm) ![Tiling](screenshots/quick_DesktopDemo_tiling.webm)
Shift is a fork of [plasma-mobile](https://invent.kde.org/plasma/plasma-mobile). SHIFT tracks [plasma-mobile](https://invent.kde.org/plasma/plasma-mobile) as its upstream base.
The upstream phone UI is untouched; convergence adds a layer on top. The upstream phone UI remains intact; convergence-specific behaviour is added on top.
### What convergence mode changes ### What convergence mode changes
@ -43,6 +43,10 @@ cmake --build build
cmake --install build cmake --install build
``` ```
Compatibility-sensitive identifiers such as `org.kde.plasma.mobileshell`
are intentionally preserved in the runtime and build instructions. They are
part of the current compatibility boundary, not the public product name.
### Disclaimer ### Disclaimer
SHIFT is an independent project based on KDE Plasma Mobile. SHIFT is an independent project based on KDE Plasma Mobile.
@ -61,7 +65,6 @@ SHIFT is not intended as a direct contribution to KDE Plasma Mobile.
However, if parts of this project are considered useful, contributions or ideas may be proposed upstream in a collaborative manner. However, if parts of this project are considered useful, contributions or ideas may be proposed upstream in a collaborative manner.
See [pm_README.md](pm_README.md) for the original Plasma Mobile README. See [pm_README.md](pm_README.md) for the original Plasma Mobile README.
--- ---