AppImage

Remmina AppImage - terminate called after throwing an instance of 'linuxdeploy::desktopfile::ParseError'

Hi all,

I’m trying to create the AppImage for the Remmina remote desktop client.

In our desktop files, we have some x-scheme-handler that from my understandinf of the freedesktop specs are right, but linuxdeploy exit with a parsing error:

$ linuxdeploy-x86_64.AppImage --appdir AppDir
...
...
-- Deploying files into AppDir root directory --
terminate called after throwing an instance of 'linuxdeploy::desktopfile::ParseError'
  what():  Key x-scheme-handler/remmina contains invalid character /
[1]    1076 abort (core dumped)  linuxdeploy-x86_64.AppImage --appdir AppDir

Our scheme handlers looks like this:

AppDir/usr/share/applications/org.remmina.Remmina.desktop:MimeType=x-scheme-handler/rdp;x-scheme-handler/spice;x-scheme-handler/vnc;x-scheme-handler/remmina;application/x-remmina;
AppDir/usr/share/applications/remmina-file.desktop:x-scheme-handler/remmina=remmina-file.desktop
AppDir/usr/share/applications/remmina-file.desktop:x-scheme-handler/rdp=remmina-file.desktop
AppDir/usr/share/applications/remmina-file.desktop:x-scheme-handler/spice=remmina-file.desktop
AppDir/usr/share/applications/remmina-file.desktop:x-scheme-handler/vnc=remmina-file.desktop

I cannot really say is this is an issue on our side or with the linuxdeploy parser.

Any ideas?

Thanks

Iḿ really wrong here… I saw this and than red the Desktop Entry Specification again

I’m investigating how to create a a valid protocol handler

I’ve just removed the offending keys and it works.

1 Like

Hi @antenore and welcome here. How is your Remmina AppImage going? Is it up for testing?

Hi @probono
Updating the status here to reflect the gitlab exchange we had.

We have an AppImage of Remmina, yes!

https://gitlab.com/Remmina/Remmina/-/jobs/300788203/artifacts/download

I just have to figure out how to upload it automatically and do some proper tests, than I´d appreciate a review of our .gitlab-ci.yml

Hi @antenore, thanks for making an AppImage. Greatly appreciated.

Why are you installing libfuse-dev, is it needed by Remmina?

Why do you embed update information for appimaged into a Remmina AppImage?

fuse

The only reason I added it was for the CI, to be able to build the AppImage, specifically for this line:

I had an issue while build the AppImage and I’ve found somewhere to solve it that way (probably in one of your travi-ci.yml :stuck_out_tongue:

If you can advice on how to do better let me know, for me it’s still quite hard to understand.

Why do you embed update information for appimaged into a Remmina AppImage?

What exactly? I’m not sure I’ve understood your question.

Damn, the Remmina AppImage does not work, I was testing on a PC where it was already installed, so it was finding all the libraries, glade files etc in the root FS.

It’s way too complex without investing a tremendous amount of time, I think I’m going to give up till I’ll have much more free time available (after 65 yo maybe).

Just in case, @probono, do you have an AppImage example that uses gtk/glib libraries? I’m interested in the CI part obviously.

:triumph:

Damn, the Remmina AppImage does not work, I was testing on a PC where it was already installed, so it was finding all the libraries, glade files etc in the root FS.

One needs to ensure that an application does not load resources from absolute paths but from paths relative to the AppDir.

Ideally, this is done in the source code, e.g., like this patch does:

Things like Application app = new Application(dirName(thisExePath())); and builder.addFromFile(buildNormalizedPath(path, "design.glade")); are used to make the application load resources like Glade files from relative locations.

Alternatively, the following MAY work depending on your application:

https://github.com/GNOME/glade/blob/master/build/linux/AppRun may have some hints on how to do this by exporting environment variables; expecially check

You do not need to install libfuse-dev.

Why are you doing:

This is definitely wrong. Best delete that line.