TigerVNC / tigervnc

High performance, multi-platform VNC client and server
https://tigervnc.org
GNU General Public License v2.0
5.16k stars 943 forks source link

Provide the native vncviewer as an AppImage for Linux #1354

Open binary-manu opened 3 years ago

binary-manu commented 3 years ago

Is your feature request related to a problem? Please describe. As a heavy TigerVNC user, I like the idea of portable one-file vncviewer distributions for Linux systems, just like there is a portable executable for Windows. It is easy to keep different versions alongside each other, no problems with missing dependencies and no root privileges required for installation.

Describe the solution you'd like I'd like for official TigerVNC releases to also provide an AppImage version of the VNC viewer component. There are unofficial AppImages out there, but they are behind the latest release.

Describe alternatives you've considered Among the most widespread packaging formats, AppImage gives users something that is largely independent from the lifecycle of the underlying system, is radically simple (one app=one file) and has few system dependencies (basically FUSE). Multiple AppImage versions are easy to manage even from shell scripts. Both snaps and flatpaks are more complex. Also, creating an AppImage is a relatively simple task. That being said, this is highly subjective as different people tend to have strong and diverse ideas about packaging formats.

The next best shot would be the semi-static TigerVNC build as described in the docs, which is also marked as "very fragile" and "may require tweaking". An AppImage is a plain dynamically linked build with RPATHs packaged in a single file. Desktop integration is also easier if appimaged is optionally employed.

Additional context I have some experience with AppImages and could work on this issue in my spare time. However, I would like to know if the maintainers have any real interest in seeing this packaging option added. Deploying an app as an AppImage requires the executable to be relocatable, thus independent from the installation prefix. A quick glance at current vncviewer code shows that this is not the case, as there are a few instances of hardwired paths (icons loading and locale files). Turning them into something dynamic is not a daunting task, but the changes should then be merged upstream. Also, some additions to GitHub Actions will be needed to build the AppImage.

If you guys think this is valuable, drop a line. Otherwise, feel free to close this request.

--- Want to back this issue? **[Post a bounty on it!](https://app.bountysource.com/issues/108361092-provide-the-native-vncviewer-as-an-appimage-for-linux?utm_campaign=plugin&utm_content=tracker%2F3557444&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://app.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F3557444&utm_medium=issues&utm_source=github).
CendioOssman commented 3 years ago

We generally want to avoid having to do packaging work. We'd prefer if we can focus on the software itself. :)

If AppImage:s require custom modifications, then I'm afraid that makes them even less appealing. These days snap and flatpak are the dominant players for contained applications. And they do not require any application modification as far as I know. Have you had a look at them?

binary-manu commented 3 years ago

We generally want to avoid having to do packaging work.

Quite understandable :)

While I have used both snaps and flatpaks, I only skimmed through how to make flatpaks from scratch, so I'm unable to contribute on that at the moment. This may well be the topic for a different feature request, if I ever get a chance to study that subject, or someone else decides to lend a hand.

Meanwhile, since this request has not been closed yet, I'd try and add some more details that may help your decisions.

Let me know.

Rikitik commented 3 weeks ago

I would like this very much too, especially the serve part