Kiosk Environment using wpe-webkit-mir-kiosk and Ovirt - MimeType .vv

I am using the snap wpe-webkit-mir-kiosk to create a web kiosk that functions as a thin client for loading virtual machines from OVirt. To open the console of a virtual machine, it is necessary for the browser to have access to the file obtained by clicking the VM button, with the .vv file being associated with the client application of the virt-viewer (spice protocol). What strategy should I use to achieve this objective?

Pinging @tobias (who maintains wpe-webkit-mir-kiosk).

Here are some other sources of information:

$ snap info wpe-webkit-mir-kiosk
name:      wpe-webkit-mir-kiosk
summary:   WPE Webkit in kiosk mode. Intended for mir-kiosk on embedded devices.
publisher: GLANCR labs (glancr)
store-url: https://snapcraft.io/wpe-webkit-mir-kiosk
contact:   kontakt@glancr.de
license:   unset
description: |
  WPE Webkit [1] is an official port of the WebKit project.
  
  This snap packages WPE, backend libraries and the cog web app container [2] in kiosk mode.
  Requires the `ubuntu-frame` snap (formerly `mir-kiosk`) on Ubuntu Core, or a compatible Wayland
  compositor on desktop systems. See the README [3] for limitations and options.
  
  On Core systems, the browser is running as a service, and will be automatically restarted after
  `ubuntu-frame` (or `mir-kiosk`) refreshes.
  On desktop systems, the application `wpe-webkit-mir-kiosk.cog` starts the launcher in windowed
  mode, suitable for testing.
  
  From the WPE website: “WPE WebKit allows embedders to create simple and performant
  systems based on Web platform technologies. It is designed with hardware
  acceleration in mind, leveraging common 3D graphics APIs for best
  performance.”
  1. https://wpewebkit.org
  2. https://github.com/Igalia/cog
  3. https://gitlab.com/glancr/wpe-webkit-snap/-/blob/main/README.md

Thanks, Alan!

@tobias Can you help me?

I’m experienced with Linux, but beginner to using snaps.

I have some doubts:

  • Can a snap package call another package without necessarily being converted to snap?

  • If this is true, I believe I need to create a snap package from the .deb, am I right?

  • Another item I would like to know is whether it supports pkcs11 drive interaction for loading certificates into USB tokens.

I need the wpe-webkit-mir-kiosk to be able to associate with using the “MimeTypes” property to extension .vv files downloaded from a VDI portal (ovirt) to the remote-viewer application (spice client) The remote-viewer is the virt-viewer application binary.

apt info virt-viewer Package: virt-viewer Version: 7.0-2build2 Priority: optional Section: admin Maintainer: Ubuntu Developers ubuntu-devel-discuss@lists.ubuntu.com Original-Maintainer: Debian Libvirt Maintainers pkg-libvirt-maintainers@lists.alioth.debian.org Installed-Size: 1.506 kB Depends: libc6 (>= 2.34), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.43.2), libgovirt2 (>= 0.3.6), libgtk-3-0 (>= 3.11.5), libgtk-vnc-2.0-0 (>= 0.4.1), libpango-1.0-0 (>= 1.14.0), librest-0.7-0 (>= 0.8.0), libspice-client-glib-2.0-8 (>= 0.35), libspice-client-gtk-3.0-5 (>= 0.35), libvirt-glib-1.0-0 (>= 0.1.8), libvirt0 (>= 1.2.8~rc2), libxml2 (>= 2.7.4) Suggests: netcat Homepage: http://virt-manager.org Download-Size: 291 kB APT-Manual-Installed: yes APT-Sources: http://repositorio.infra.serpro.gov.br/ubuntu-22.04 jammy/universe amd64 Packages Description: Displaying the graphical console of a virtual machine The console is accessed using the VNC or SPICE protocol. The guest can be referred to based on its name, ID, or UUID. If the guest is not already running, then the viewer can be told to wait until is starts before attempting to connect to the console The viewer can connect to remote hosts to lookup the console information and then also connect to the remote console using the same network transport.

remote-viewer.desktop

[Desktop Entry] Name=remote-viewer GenericName=spice Exec=remote-viewer %F Icon= Type=Application Comment=spice Terminal=false MimeType=text/plain; Actions=Session;NewInstance; [Desktop Action Session] Exec= remote-viewer %F Name=Open With Previous Session [Desktop Action NewInstance] Exec=remote-viewer %F Name=Open In A New remote-viewer Window

Hi @maxlen ! I’m not sure I 100% grasp what you want to achieve, it sounds advanced. Snap packages can, at the very least, interact with DBus services if they declare the interface. That’s what we use to control WPE from another snap on a fully confined Ubuntu Core system.

If I understand your scenario correctly, your users will:

  1. Navigate to a web-based portal via WPE
  2. Click on a button to load a VM connection
  3. The linked .vv file should open a virt-viewer client so it’ll open the VM connection without further user interaction

What is the current behavior when you download a .vv file with the WPE snap?

I’m not sure the bundled cog launcher application handles downloads at all yet: An issue from 2021 reads like it needs to be implemented, and it’s still unresolved. I found no code references for download handling either. If you can tell me what the current behavior is and if the outlined workflow above indeed is what you want to achieve, I can ask the upstream developers.

Thanks @alan_g for the ping, appreciated :slightly_smiling_face: