Chapter 4. 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:

Table 4.1. Supported in-browser IDEs

IDEidNote

Che-Theia

eclipse/che-theia/latest

This is the default IDE that loads in a new workspace without the URL parameter.

IntelliJ IDEA

che-incubator/che-idea/latest

Community Edition - stable version

4.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

  1. 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”.
  2. Visit the URL in the browser. See Section 2.1, “Starting a new workspace with a clone of a Git repository”.

4.2. Specifying an in-browser IDE for a Git repository by using che-editor.yaml

4.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

  1. Place the che-editor.yaml file in the .che folder in the root directory of your project.
  2. 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.

4.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

4.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 your che-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

4.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 your che-editor.yaml file. For example:

    reference: https://gist.github.com/.../che-editor.yaml # mandatory
    override:                                              # optional
      containers:
          - name: theia-ide
            memoryLimit: 1280Mi

4.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 your che-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