Skip to content
This repository has been archived by the owner on Oct 5, 2022. It is now read-only.

theia-ide/theia-apps

Repository files navigation

Eclipse Theia Applications - Docker & Electron

Build Status PRs Welcome Questions

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

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

docker logo

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

How to use theiaide/theia image?

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.

electron logo

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.

Contributing

Contributing

License

Apache 2.0