Chapter 5. Selecting a workspace IDE
The default in-browser IDE in a new workspace is Che Theia.
You can select another supported in-browser IDE by either method:
-
When you start a new workspace by visiting a URL, you can choose an IDE for that workspace by adding the
che-editor
parameter to the URL. See Section 5.1, “Selecting an in-browser IDE for a new workspace by using a URL parameter”. -
You can specify an IDE in the
.che/che-editor.yaml
file of the Git repository for all new workspaces that will feature a clone of that repository. See Section 5.2, “Specifying an in-browser IDE for a Git repository by usingche-editor.yaml
”.
IDE | id | Note |
---|---|---|
|
Default editor when the URL parameter or | |
| ||
|
5.1. Selecting an in-browser IDE for a new workspace by using a URL parameter
You can select your preferred in-browser IDE when starting a new workspace. This is the easiest way and it doesn’t affect your other workspaces or other users.
Procedure
- Include the URL parameter for the workspace IDE in the URL for starting a new workspace. See Section 2.2.2, “URL parameter for the workspace IDE”.
- Visit the URL in the browser. See Section 2.1, “Starting a new workspace with a clone of a Git repository”.
5.2. Specifying an in-browser IDE for a Git repository by using che-editor.yaml
5.2.1. Using the OpenShift Dev Spaces editor file to select an IDE
Use the che-editor.yaml
file to define a default IDE for the project users. For a list of supported IDs, see Optional parameters for the URLs for starting a new workspace.
Procedure
-
Place the
che-editor.yaml
file in the.che
folder in the root directory of your project. In the
che-editor.yaml
file, specify the ID of the IDE you are selecting. For example:id: che-incubator/che-idea/latest
Additional resources
- Check the sample file sample here.
- Load experimental new IDEs from the default plug-in registry by using the IDs shown in che-editors.yaml.
5.2.2. Customizing IDE selection with the che-editor.yaml
file
You can further customize your IDE selection to suit the specific needs of the project by adding various directives to the che-editor.yaml
file. These customization options include following directives:
- Custom plug-in registry
- Web reference
- Embedded editor definition
5.2.3. Using a custom plug-in registry for your IDE
To include different IDEs than the default list in the OpenShift Dev Spaces plug-in registry, use an optional registryUrl
directive.
Procedure
Set an optional
registryUrl
directive in yourche-editor.yaml
file. For example:id: eclipse/che-theia/next # mandatory registryUrl: https://my-registry.com # optional override: # optional containers: - name: theia-ide memoryLimit: 1280Mi
5.2.4. Using a web reference for your IDE
Use a web reference for your IDE by pointing at a YAML file with the reference
directive.
Procedure
Set a
reference
directive in yourche-editor.yaml
file. For example:reference: https://gist.github.com/.../che-editor.yaml # mandatory override: # optional containers: - name: theia-ide memoryLimit: 1280Mi
5.2.5. Using an embedded editor definition for your IDE
If you have specific requirements for your project that aren’t addressed by standard IDE behaviour, you can customize the project IDE by using the inline
directive to put a complete IDE definition in the che-editor.yaml
file.
Procedure
Set an
inline
directive in yourche-editor.yaml
file. For example:inline: endpoints: - name: "theia" public: true targetPort: 3100 attributes: protocol: http type: ide secure: true cookiesAuthEnabled: true discoverable: false (...) containers: - name: theia-ide image: "quay.io/eclipse/che-theia:next" env: - name: THEIA_PLUGINS value: local-dir:///plugins volumeMounts: - name: plugins path: "/plugins" - name: theia-local path: "/home/theia/.theia" mountSources: true ports: - exposedPort: 3100 memoryLimit: "512M" cpuLimit: 1000m cpuRequest: 100m initContainers: - name: remote-runtime-injector image: "quay.io/eclipse/che-theia-endpoint-runtime-binary:next" volumeMounts: - name: remote-endpoint path: "/remote-endpoint" ephemeral: true env: - name: PLUGIN_REMOTE_ENDPOINT_EXECUTABLE value: /remote-endpoint/plugin-remote-endpoint - name: REMOTE_ENDPOINT_VOLUME_NAME value: remote-endpoint