This reverts commit c640f2f215.
Turns out this is due to a very weird situation where Arch has their
libudev.so.0 as an incompatible API which all current games expect to
be of libudev.so.1 ABI, and isn't something LSI should be fixing, the
distro should.
Arch Linux uses a funky udev shim package which is incompatible with
our udev workaround, so allow them to disable it and use their shim
instead (as some packages are apparently **built** against the shim.)
For all other distros which are binary-built in ABI lockstep with udev
proper, keep it enabled.
This fixes#46.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This should fix our linking issues that appeared once we opted to include
the `fcntl.h` header, which adds `#define`s for the exact symbols that
we are trying to override.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This ensures we only use a sane realpath and collapse the slashes where
we can to allow trivial string matching.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
If we detect access to a unity3D configuration file, we'll enter the
unity3d workaround mode. Through this mode we'll abstract the real
"prefs" file away into `/dev/shm` so that Unity games do not directly
access that file again.
If no original prefs file exists, we'll write a new prefs file with the
absolute minimum requirement, i.e. disabling of fullscreen mode by default.
If one DOES exist, we'll copy all of the prefs file **except** for the
fullscreen option, and again, disabling it.
Upon library exit, again, we'll duplicate the unity config to the real
target file from the shm file, with the rewritten fullscreen option.
The net effect is that we create a circle of consumption that forcibly
disables unity games of a particular age (using `prefs` file) to not
start in fullscreen mode, which almost always means one of two things:
- Missing UI text elements
- Unity3D clamps resolution to 0x0
Many ports aren't going to see updates to their Unity build for a long time,
or indeed, ever. Instead we work around this in LSI and sit in between the
game and the configuration file.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This will ensure that the settings UI will always work, which will
somewhat perversely use lsi-exec through the config that it sets to
launch itself to set the config of lsi-exec..
This will allow us to actually expose lsi-settings as a usable thing
within the snap, where it is currently omitted. If we're not using snapd
mode, we'll just keep the file how it used to look.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Under snapd we forcibly change XDG_CONFIG_HOME away from the "norm", and
read before the variable is set. Thus, the config written by lsi-settings
is correct, but under snapd the wrong file would be read all the time.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This will ensure that the settings UI will always work, which will
somewhat perversely use lsi-exec through the config that it sets to
launch itself to set the config of lsi-exec..
This will allow us to actually expose lsi-settings as a usable thing
within the snap, where it is currently omitted. If we're not using snapd
mode, we'll just keep the file how it used to look.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This binary will allow us to run any command using the full LSI environment
and fully set it up as we would for Steam, greatly simplifying the testing
of the snap (and even for non-steam games!)
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This helps separate the main launch entry from the bulk of the bootstrap
code, and will also allow us to build a new lsi-exec tool that will just
execute whatever you tell it to, with the full shim setup routine.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
If `XDG_{DATA,CONFIG}_HOME` variables are set in the environment, use
those to ensure portability and integration with the platform. This ensures
we always use the right locations for accessing config files and the Steam
root.
This fixes#34.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
LSI enables Steam, which will invariably have massive games on disk.
We do NOT want this large data being moved around between upgrades,
and need this data to be "sticky" and unversioned.
To alleviate le huge pains of upgrades, start using this directory before
we go into production. This will mean only one last switch of the games
tree.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This gives help when LD_LIBRARY_PATH is a bit busted, as the "normal"
operational mode gets more help than we currently give to games.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Fedora doesn't seem to have `libbbz2.so.1` so let's intercept requests for
this guy and send them to the proper `libbz2.so.1.0.6`.
This fixes#38.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>
This ensures we correctly set up `LD_LIBRARY_PATH` with required extra
directories inside the snap environment - only if they actually exist.
This allows us to expand that search path to ensure that tls and vdpau
bits are available on multiarch systems, and things continue to tick
over as normal on biarch systems.
This is part of tackling issue #35.
Signed-off-by: Ikey Doherty <ikey@solus-project.com>