LibreSplit icon indicating copy to clipboard operation
LibreSplit copied to clipboard

rsvg-convert error on Steam Deck (read-only file system)

Open happycamper31 opened this issue 1 year ago • 4 comments

Hello everyone,

I'm currently building LibreSplit on my Steam Deck within distrobox (Ubuntu 22-04). I already got urn working, but during the sudo make install I get the following error:

xxd --include ./src/main.css > ./src/main.h || (rm -f ./src/main.h; false)
install -Dm755 libresplit /usr/local/bin/libresplit
install -Dm644 libresplit.desktop /usr/local/share/applications/libresplit.desktop
for size in 16 22 24 32 36 48 64 72 96 128 256 512; do \
        mkdir -p /usr/local/share/icons/hicolor/"$size"x"$size"/apps ; \
        rsvg-convert -w "$size" -h "$size" -f png -o /usr/local/share/icons/hicolor/"$size"x"$size"/apps/libresplit.png libresplit.svg ; \
done
Error opening output "/usr/local/share/icons/hicolor/16x16/apps/libresplit.png": Error opening file “/usr/local/share/icons/hicolor/16x16/apps/libresplit.png”: Read-only file system

Well, it already states the reason: because of the Read-only file system the icons cannot be created, then the build exits. So I was thinking maybe I can edit some files to not create the icons on the read-only part of the system. I won't need icons anyways. Would you be so kind to point out what I'd have to edit? I'm not very proficient in coding.

BR happycamper

PS: I now realize I could unlock the system, build, then lock it again. But in this case I'd like to know which & how many files are created outside the build directory?

happycamper31 avatar Oct 18 '24 11:10 happycamper31

Im surprised it didnt fail before when installing the binaries to /usr/local/, but anyways, if you just want it to install you can comment out the lines inside the for loop (mkdir and rsvg-convert) but the .desktop wont have icons A solution would be to instead being inside /usr/local/icons to be inside ~/.local/share/icons, so the icons end up in your home r/w filesystem instead of root which may get reverted on updates. You can do this with a simple find and replace

EXtremeExploit avatar Oct 18 '24 18:10 EXtremeExploit

Thanks, that worked! And I'm fine starting it from the command line.

But another more critical issue popped up. Libresplit has no permissions to check the memory of the game. I think this is the outcome of Libresplit running within distrobox, which is technically a virtual system. While the game (in this case SW Battlefront 2) is running on Steam OS. I'm not really sure if I should continue tinkering to make that work. There are probably good (security) reasons why the processes within a virtual system don't have access to the main system. Or maybe my guess is wrong. Do you know what is going on? image

happycamper31 avatar Oct 20 '24 06:10 happycamper31

Not really, but your thought makes sense, you can also install libresplit on the deck os to make it work, you can change the binary output path to something inside .local/share/bin or something like that and change where the .desktop is, and that way libresplit is installed only in the home partition which is not read-only on the deck

EXtremeExploit avatar Oct 20 '24 14:10 EXtremeExploit

Thanks, that worked! And I'm fine starting it from the command line.

But another more critical issue popped up. Libresplit has no permissions to check the memory of the game. I think this is the outcome of Libresplit running within distrobox, which is technically a virtual system. While the game (in this case SW Battlefront 2) is running on Steam OS. I'm not really sure if I should continue tinkering to make that work. There are probably good (security) reasons why the processes within a virtual system don't have access to the main system. Or maybe my guess is wrong. Do you know what is going on? image

Pretty much having the same exact issue on NixOS. Unsure if it has to do with it not being FHS or something along those lines, even using steam-run won't help

junko00 avatar Feb 04 '25 16:02 junko00

Any news on this? I assume the main issue comes from make install using /usr as the DESTDIR by default, this will be fixed in the future when appimage releases are implemented and/or another build system is used that supports user installation more easily

EXtremeExploit avatar Oct 09 '25 21:10 EXtremeExploit

DESTDIR is only used for packaging, not user installs. To install in $HOME/.local you would do PREFIX=$HOME/.local make install

wins1ey avatar Oct 21 '25 01:10 wins1ey

Bit more info on https://github.com/LibreSplitDev/LibreSplit/issues/6 TLDR: We need to get rid of gsettings and use the JSON config file instead as you cant use gschemas from AppImages and no one likes gsettings

EXtremeExploit avatar Oct 25 '25 14:10 EXtremeExploit