Eclipse Theia Applications - Docker & Electron
Collection of example cloud & desktop applications built using the Theia platform.
Note: This repository is considered deprecated. Theia Blueprint and CDT.cloud Blueprint are more polished example applications based on the Eclipse Theia framework, that might be of interest. For more details, see issue #496.
Outline
- Overview
- Docker Image Variants
- Additional Docker Examples
- Electron Applications
- Running & Debugging
- Tips & Tricks
- Contributing
- License
Overview
This repository contains a collection of Theia-based IDE applications (both electron desktop apps and docker images) as examples, for demo and continuous-integration purposes.
Docker Image Variants
Image Name | Description | Documentation |
---|---|---|
theiaide/theia | Theia-based JavaScript/TypeScript (Web Technologies) example application |
Other Variants:
Image Name | Description | Documentation |
---|---|---|
theiaide/theia-cpp | Theia-based C/C++ example application | docs |
theiaide/theia-dart | Theia-based Dart example application | |
theiaide/theia-full | Theia-based example application with support for multiple languages | |
theiaide/theia-go | Theia-based Go example application | docs |
theiaide/theia-python | Theia-based Python example application | docs |
theiaide/theia-php | Theia-based PHP example application | docs |
theiaide/theia-rust | Theia-based Rust example application | docs |
theiaide/theia-swift | Theia-based Swift example application |
Additional Docker Examples
Image Name | Description | Documentation |
---|---|---|
theia-deb-build-docker |
Example on how to package the IDE into a Debian package | docs |
theia-https-docker |
Example on how to add security layer over existing images | docs |
theia-openshift-docker |
Example image for OpenShift | |
theia-rpm-build-docker |
Example on how to package the IDE into an RPM (for RHEL/CentOS) | docs |
theiaide/theia
image?
How to use Theia is actively being developed. It is recommended to use theiaide/theia:latest
if you want the latest stable release of Theia or theiaide/theia:next
if you want the most recent version of Theia at the time the image was built (bleeding edge).
The following pulls the image and runs Theia IDE on http://localhost:3000 with the current directory as a workspace. The option of --init
is added to fix the defunct process problem.
# Linux, macOS, or PowerShell
docker run -it --init -p 3000:3000 -v "$(pwd):/home/project:cached" theiaide/theia:next
# Windows (cmd.exe)
docker run -it --init -p 3000:3000 -v "%cd%:/home/project:cached" theiaide/theia:next
You can pass additional arguments to Theia after the image name, for example to enable debugging:
# Linux, macOS, or PowerShell
docker run -it --init -p 3000:3000 --expose 9229 -p 9229:9229 -v "$(pwd):/home/project:cached" theiaide/theia:next --inspect=0.0.0.0:9229
# Windows (cmd.exe)
docker run -it --init -p 3000:3000 --expose 9229 -p 9229:9229 -v "%cd%:/home/project:cached" theiaide/theia:next --inspect=0.0.0.0:9229
Electron Apps
The repository contains example Electron applications which are packaged using electron-builder
. Following the steps provided in their respective README, it is possible to build and package the applications for Desktop use.
Application Name | Description | Documentation |
---|---|---|
theia-cpp-electron |
Theia-based C/C++ desktop IDE | docs |
theia-electron |
Theia-based JavaScript/TypeScript (Web Technologies) desktop IDE | docs |
VS Code Extensions
Many applications in the repository now include support for running VS Code extensions, and an integration to the public instance of open-vsx registry, an open alternative to the Visual Studio Marketplace. The Extensions
view can be opened through the Views
top-level menu when starting the application.
Tips & Tricks
-
Build Options:
--init
injects an instance of tini in the container, that will wait-for and reap terminated processes, to avoid leaking PIDs.--security-opt seccomp=unconfined
enables running without the default seccomp profile for debugging. This option is also required if the swift REPL is needed.