Pixelorama snap - need help

Hi guys!
I’m trying to snap the Pixelorama sprite editor so following this great how-to from @popey I made the directory called “pixelorama”, and in that I downloaded and put the .pck and x86_64 linux files under a “files” folder (plus a “Brushes” and a “Palettes” directories found in the downloaded zip) and put this yaml under a “snap” folder:

name: pixelorama
base: core18
version: '0.6'
summary: Pixelorama sprite editor
description: |
  Your free & open-source 2D sprite editor, made by Orama Interactive in the Godot Engine, using GDScript!

grade: devel
confinement: strict

apps:
  pixelorama:
    command: desktop-launch "$SNAP/Pixelorama.x86_64"
    environment:
      LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/pulseaudio"
    plugs:
      - opengl
      - network
      - network-bind
      - pulseaudio
      - x11
      - desktop
      - joystick

parts:
  editor:
    plugin: dump
    source: files/
    after: [desktop-glib-only]
    stage-packages:
      - libgl1-mesa-dri
      - libglu1-mesa
      - libgl1-mesa-glx
      - libpulse0
      - libxcursor1
      - libxinerama1
      - libxrandr2
      - libxi6
      - libasound2
  desktop-glib-only:  
        build-packages:
          - libglib2.0-dev
        plugin: make
        source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
        source-subdir: glib-only
        stage-packages:
          - libglib2.0-bin

I executed the snapcraft command and the sudo snap install pixelorama_0.6_amd64.snap --dangerous command both with success.

But when I try to launch the snap I obtain this error:

aurelio@aurelio-Lenovo-B51-80:~/snap/pixelorama$ pixelorama 
/snap/pixelorama/x2/bin/desktop-launch: line 528: /snap/pixelorama/x2/Pixelorama.x86_64: Permission denied
/snap/pixelorama/x2/bin/desktop-launch: line 528: exec: /snap/pixelorama/x2/Pixelorama.x86_64: cannot execute: Permission denied

I don’t know how to solve this
what have I done wrong?

You tried
$ sudo pixelorama
too?

1 Like

check your systemd journal for “DENIED” messages …

oh, and is the binary actually executable ? :slight_smile:

@jsmolka Yes, that was my first try but same result:

~$ sudo pixelorama
[sudo] password di aurelio: 
mkdir: cannot create directory '/run/user/0': Permission denied
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
realpath: '': No such file or directory
/snap/pixelorama/x2/bin/desktop-launch: line 528: /snap/pixelorama/x2/Pixelorama.x86_64: Permission denied
/snap/pixelorama/x2/bin/desktop-launch: line 528: exec: /snap/pixelorama/x2/Pixelorama.x86_64: cannot execute: Permission denied

@ogra

aurelio@aurelio-Lenovo-B51-80:~$ journalctl
-- Logs begin at gio 2020-01-09 17:51:50 CET, end at gio 2020-01-09 17:51:56 CET. --
gen 09 17:51:50 aurelio-Lenovo-B51-80 systemd-journald[402]: Runtime journal (/run/log/journal/) is 9.5M, max 38.0M, 28.5M free.
gen 09 17:51:51 aurelio-Lenovo-B51-80 sudo[32575]: pam_unix(sudo:session): session closed for user root
gen 09 17:51:53 aurelio-Lenovo-B51-80 sudo[32577]:  aurelio : TTY=pts/4 ; PWD=/home/aurelio ; USER=root ; COMMAND=/bin/journalctl --vacuum-time=1s
gen 09 17:51:53 aurelio-Lenovo-B51-80 sudo[32577]: pam_unix(sudo:session): session opened for user root by (uid=0)
gen 09 17:51:53 aurelio-Lenovo-B51-80 sudo[32577]: pam_unix(sudo:session): session closed for user root
gen 09 17:51:56 aurelio-Lenovo-B51-80 audit[32670]: AVC apparmor="DENIED" operation="open" profile="snap.pixelorama.pixelorama" name="/home/aurelio/Documenti/" pid=32670 comm="head" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000
gen 09 17:51:56 aurelio-Lenovo-B51-80 kernel: audit: type=1400 audit(1578588716.564:102): apparmor="DENIED" operation="open" profile="snap.pixelorama.pixelorama" name="/home/aurelio/Documenti/" pid=32670 comm="head" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000

and

aurelio@aurelio-Lenovo-B51-80:~$ ls -la /snap/pixelorama/x2/bin
total 18
drwxr-xr-x 2 root root    37 gen  8 10:23 .
drwxrwxr-x 9 root root   195 gen  8 10:23 ..
-rwxr-xr-x 1 root root 18093 gen  8 10:22 desktop-launch

well, you cut off all the relevant info … rather do something like:

$ journalctl | grep DEN

and make sure the full width of the lines is in your paste …

your app binary is in /snap/pixelorama/x2 not in the bin/ subdir … i should have phrased the question differently … so lets try again:

is Pixelorama.x86_64 actually executable ?

:slight_smile:

1 Like

I realized it but just as I was correcting you replied. you are too fast! :joy:

you can see the complete string in my previous post.

Also checked the bin and, as you suspected, it was not executable. so I retry the snapcraft procedure after changing the Pixelorama.x86_64 permission in the “files” directory.

now it works! thank you! :tada::confetti_ball:

1 Like

for the one DENIED message you probably want to add - home to your plugs, so the app can access your Documents dir …

1 Like

done! thank you again.

now systemD report only these denied messages:

gen 09 19:02:55 aurelio-Lenovo-B51-80 audit[8698]: AVC apparmor="DENIED" operation="open" profile="snap.pixelorama.pixelorama" name="/proc/8698/mounts" pid=8698 comm="Pixelorama.x86_" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000
gen 09 19:02:55 aurelio-Lenovo-B51-80 kernel: kauditd_printk_skb: 20 callbacks suppressed
gen 09 19:02:55 aurelio-Lenovo-B51-80 kernel: audit: type=1400 audit(1578592975.781:1835): apparmor="DENIED" operation="open" profile="snap.pixelorama.pixelorama" name="/proc/8698/mounts" pid=8698 comm="Pixelorama.x86_" requested_mask="r" denied_mask="r" fsuid=1000 ouid=1000

but the application seems usable (though with some missing brushes and palettes)

aurelio@aurelio-Lenovo-B51-80:~/snap/pixelorama$ pixelorama
Godot Engine v3.1.2.stable.official - https://godotengine.org
OpenGL ES 2.0 Renderer: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) 
WARNING: _png_warn_function: iCCP: profile 'ICC profile': 'RGB ': RGB color space not permitted on grayscale PNG
   At: drivers/png/image_loader_png.cpp:71.
WARNING: _png_warn_function: iCCP: profile 'ICC profile': 'RGB ': RGB color space not permitted on grayscale PNG
   At: drivers/png/image_loader_png.cpp:71.
ERROR: load_image: Error opening file: Brushes/./parts/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./parts/splash.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./x1/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./x1/splash.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./current/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./current/splash.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./prime/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./prime/splash.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./snap/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./snap/splash.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./stage/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./stage/splash.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./files/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./files/splash.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./common/icon.png
   At: core/io/image_loader.cpp:56.
ERROR: load_image: Error opening file: Brushes/./common/splash.png
   At: core/io/image_loader.cpp:56.
WARNING: cleanup: ObjectDB Instances still exist!
   At: core/object.cpp:2087.
ERROR: clear: Resources Still in use at Exit!
   At: core/resource.cpp:425.

This is usually just noise, but you can make it go away by plugging and connecting the ‘mount-observe’ interface.

1 Like

I confirm it seems only noise so I will not try to plug and connect the mount-observe interface.