Skip to content

Conversation

@msuchane
Copy link
Collaborator

@msuchane msuchane commented Oct 22, 2025

The Set up a graphical interface guide no longer works with Ubuntu 25.10 instances because Ubuntu 25.10 removes X11 support from the GNOME desktop.

This alternative procedure still uses RDP to connect but the server setup ensures that it's compatible with Wayland. As a result, you can establish a graphical connection to Ubuntu 25.10 and later, presumably.

@msuchane msuchane self-assigned this Oct 22, 2025

1. Create the following `cloud-init.yaml` configuration file:

```{code-block} yaml
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be, if it's fine that the RDP configuration contains a replaceable password string.

@msuchane
Copy link
Collaborator Author

There's a couple of things to figure out:

  • @sergio-costas, this procedure uses cloud-init.yaml while the XRDP procedure uses plain shell commands. Are those interchangeable or does the new procedure require cloud-init.yaml?

  • @sergio-costas, most of the commands run with sudo except for this one:

    echo /usr/sbin/nologin >> /etc/shells
    

    Is this missing a sudo tee?

  • @geoffreynyaga, how do you feel about the placement and organization? I haven't explained yet that on Ubuntu 25.10, you have to use the second procedure because X11 has been removed in Ubuntu 25.10. Any preferences how it should be framed?

Live preview: https://canonical-ubuntu-documentation-library--4469.com.readthedocs.build/multipass/4469/how-to-guides/customise-multipass/set-up-a-graphical-interface/

@sergio-costas
Copy link

sergio-costas commented Oct 22, 2025

* @sergio-costas, this procedure uses `cloud-init.yaml` while the XRDP procedure uses plain shell commands. Are those interchangeable or does the new procedure require `cloud-init.yaml`?

It can be done manually too, but using a cloud-init.yaml file simplifies the job. A file like that can be done for XRDP too. It's just a way of automatize the process.

* @sergio-costas, most of the commands run with sudo except for this one:
  ```
  echo /usr/sbin/nologin >> /etc/shells
  ```
  Is this missing a `sudo tee`?

No. These commands are run as root by default, but the sudos in the other lines have -u gnome-remote-desktop as the first parameters, to run the commands as the gnome-remote-desktop user. That command, instead, is to ensure that the nologin program is in the list of valid shells and, thus, ensure that the grdctl --headless rdp enable command doesn't fail (the gnome-remote-desktop user has that shell), so it has to be run as root

@msuchane
Copy link
Collaborator Author

Ah, thanks @sergio-costas, that makes absolute sense. Didn't notice the -u gnome-remote-desktop.

If shell commands and cloud-init.yaml are interchangeable, I'll leave it up to @geoffreynyaga whether to keep the procedures the way they are or whether to standardize on one of the formats. I'm okay with either.

@sergio-costas
Copy link

If shell commands and cloud-init.yaml are interchangeable, I'll leave it up to @geoffreynyaga whether to keep the procedures the way they are or whether to standardize on one of the formats. I'm okay with either.

The big advantage of the cloud-init.yaml file is that it greatly reduces the risk of typos or errors while doing the process, and also simplifies the process itself, since you don't have to keep a list of commands to do manually.

@geoffreynyaga
Copy link
Contributor

There's a couple of things to figure out:

  • @sergio-costas, this procedure uses cloud-init.yaml while the XRDP procedure uses plain shell commands. Are those interchangeable or does the new procedure require cloud-init.yaml?

  • @sergio-costas, most of the commands run with sudo except for this one:

    echo /usr/sbin/nologin >> /etc/shells
    

    Is this missing a sudo tee?

  • @geoffreynyaga, how do you feel about the placement and organization? I haven't explained yet that on Ubuntu 25.10, you have to use the second procedure because X11 has been removed in Ubuntu 25.10. Any preferences how it should be framed?

Live preview: https://canonical-ubuntu-documentation-library--4469.com.readthedocs.build/multipass/4469/how-to-guides/customise-multipass/set-up-a-graphical-interface/

@msuchane I am super happy with the additions. Yes, at the moment we may need to have a disclaimer for people using 25.10 and above to follow the new cloud-init guide. I also support @xmkg idea of placing the yaml file in this location https://github.com/canonical/multipass/tree/main/data/cloud-init-yaml since we reference the custom setups a lot in this guide

@sergio-costas
Copy link

@msuchane I am super happy with the additions. Yes, at the moment we may need to have a disclaimer for people using 25.10 and above to follow the new cloud-init guide. I also support @xmkg idea of placing the yaml file in this location https://github.com/canonical/multipass/tree/main/data/cloud-init-yaml since we reference the custom setups a lot in this guide

Important detail: this is only for Gnome Shell and Ubuntu Desktop, because Gnome Shell removed X11 session support in version 49. Other desktops with support for X11 should continue using the XRDP method (thus, it is still valid for other Ubuntu flavors). Also, this method can be used in older versions of Gnome Shell, although in old ones can result in some characteristics still not implemented.

@sergio-costas
Copy link

Also, I can prepare a cloud-init.yaml version for XRDP if you want...

@sergio-costas
Copy link

@msuchane Also, in the preview, the text seems to indicate that you have to do both procedures, instead of explaining that the XRDP one is for desktops with support for X11 sessions, and the other one is for Gnome Shell sessions from version 49 onward...

@sergio-costas
Copy link

Maybe the best course of action is to have both the cloud-init.yaml files for both, for the case where a new VM is being created, and the list of commands, to add desktop support to already created VMs. What do you say?

@msuchane
Copy link
Collaborator Author

After some experimentation, I think that the RDP server choice is best conveyed in a table:

https://canonical-ubuntu-documentation-library--4469.com.readthedocs.build/multipass/4469/how-to-guides/customise-multipass/set-up-a-graphical-interface/

Regarding the shell commands vs. cloud-init.yaml, I'll just leave it up to the Multipass maintainers :-)

@msuchane msuchane changed the title Alternative RDP procedure working with Wayland [docs] Alternative RDP procedure working with Wayland Nov 7, 2025
Copy link

@sergio-costas sergio-costas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks perfect.

@msuchane
Copy link
Collaborator Author

msuchane commented Nov 7, 2025

Hi @geoffreynyaga, I think you can merge this documentation now.

The GNOME+Wayland configuration has its cloud init file, and as for the XRDP configuration, you can either extend it later or leave it as a legacy reference.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants