Sure! I’ve read you managed to “fix” the issue but this might be useful knowledge for you.
Containers/sandboxes/namespaces/jails/chroots are a mechanism to create a virtual “something” inside your computer, while providing bare metal performance, that is, there’s no virtualization/emulation involved. This “something” at least is a mount namespace, but usually includes user, network, pid, ipc, etc, so containers can be pretty much isolated from the host operating system. They can see only host resources that were allowed for them to see, while the host can see everything inside a container. The only thing a container and the host OS must absolutely share is the kernel, everything else can come from another distro.
If a software isn’t provided by the repos, I’d consider a containerized approach. This way I keep my machine “untainted” by packages which can possibly create runtime issues to the system. Tumbleweed moves only forward, so legacy packages are best run in a container.
The main feature of containers is that they are portable, that is, they bring everything that is needed to run a given software. As such, they are popular with server-side software. Nevertheless it’s possible to run graphical applications on it, if you provide a graphical context for them to run. In Linux/Xorg environment the X11 protocol can be leveraged.
First of all, you’ll need to install either docker or podman. They differ in how they manage images and containers. Docker uses a daemon, while podman does not.
Then you’ll need to create a file named Dockerfile to describe the environment:
FROM registry.opensuse.org/opensuse/leap
RUN zypper --non-interactive in --recommends python2 DisplayCAL dejavu-fonts
RUN useradd -mr -u 1000 -g 100 user
USER user
WORKDIR /home/user
CMD "displaycal"]
Build the image once:
docker build -t displaycal .
Then run:
docker run --rm --env "DISPLAY" --volume=/tmp/.X11-unix:/tmp/.X11-unix:ro --volume=$XAUTHORITY:/home/user/.Xauthorithy:ro --env "XAUTHORITY=/home/user/.Xauthorithy" displaycal
Note that I don’t use this tool, so I don’t know whether it needs anything else to run. Sometimes it’s needed to pass additional volumes/privileges to the container.