I’m trying to run an application with xvfb inside a snap. (without using classic mode) I can’t get it to work.
Snapcraft.yaml
name: pdf-generator
version: '2.0.0-beta1'
summary: PDF Generator
description: |
PDF Generator with REST Api
base: core22
confinement: strict # could xvfb-ron not to work in strict mode
grade: stable
compression: lzo
layout:
/etc/fonts:
bind: $SNAP/etc/fonts
apps:
pdf-generator:
command: pdf-generator/pdf-generator $SNAP/pdf-generator/resources/app/app.js
environment:
ELECTRON_RUN_AS_NODE: 1
service:
command: /usr/bin/xvfb-run -a $SNAP/pdf-generator/pdf-generator --no-sandbox
daemon: simple
# no plugs needed in classic mode
plugs:
- browser-support
- network
- network-bind
- cups-control
environment:
restart-condition: always
restart-delay: 2s
parts:
pdf-generator:
plugin: nil
source: .
override-build: |
npm install
npx electron-builder
rm -f ./*.snap
cp -rv ./dist/linux-unpacked $SNAPCRAFT_PART_INSTALL/pdf-generator
# msttcorefonts
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections
apt -y install ttf-mscorefonts-installer
cp -r /usr/share/fonts/truetype/msttcorefonts $SNAPCRAFT_PART_INSTALL/usr/share/fonts/truetype
build-snaps:
- node/16/stable
stage-packages:
- libnss3
- libnspr4
- libatk-bridge2.0-0
- libcups2
- libdrm2
- libgtk-3-0
- libgbm1
- libasound2
- xvfb
1 First try: I received the following error:
/snap/pdf-generator/x1/usr/bin/xvfb-run: 155: mcookie: Permission denied
2 adding “util-linux” package fort mcookie command Error:
Fatal server error:
(EE) Failed to activate virtual core keyboard: 2(EE)
_XSERVTransSocketCreateListener: failed to bind listener
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: failed to create listener for local
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
3 Adding “x11-common” package Same error as in 2)
4 Adding X11 to plugs New error:
Fatal server error:
(EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)
_XSERVTransSocketCreateListener: failed to bind listener
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: failed to create listener for local
_XSERVTransSocketCreateListener: failed to bind listener
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: failed to create listener for unix
5 I don’t know what to do next …