eclipse-theia/theia

Add abstraction layer to support different types of container (Electron, Tauri, ..)

nimo23 opened this issue · 1 comments

Feature Description:

Currently, Theia can run in the browser and in the electron container. To meet the need for other platforms (web, desktop, iOS app, Android app (see #14040)) it would be great to have an abstraction layer to add more container environments easily. In this case: Tauri (see https://v2.tauri.app/). With Tauri it is possible to create native apps for desktop and mobile devices using only HTML, CSS and JS. It would be nice to add Tauri support for Thea. This can be achieved, for example, by providing a (container packaging) interface layer with two implementations (or two package.json tasks), one for Electron and one for Tauri.

At the end it can be something like:

"scripts": {
    "build:browser": "yarn --cwd browser-app bundle",
    "build:electron": "yarn --cwd electron-app bundle",
    "build:tauri": "...",
    "prepare": "lerna run prepare",
    "postinstall": "theia check:theia-version",
    "start:browser": "yarn --cwd browser-app start",
    "start:electron": "yarn --cwd electron-app start",
    "start:tauri": "...",
    "watch:browser": "lerna run --parallel watch --ignore electron-app",
    "watch:electron": "lerna run --parallel watch --ignore browser-app",
    "watch:tauri": "..."
  },

Hey @nimo23,

we already have a discussion for that, see #9888. Note that Theia, in it's core, is a mixed JavaScript server/frontend application. You have very little to gain from wrapping it in Tauri, since the server requires running on node.js anyway.