rhx/SwiftGtk

Build for linux does not copy resources folder content

sh1l0n opened this issue · 1 comments

In the build.sh script the app-bundle is generated only for MacOSX devices but if we compile from Linux we also want the resources.
So maybe we need to add an else condition in that script. The modified build.sh could be something as the next

gtk=`echo .build/checkouts/SwiftGtk*/Sources/Gtk/Gtk-3.0.swift`
[ -e $gtk ] || ./generate-wrapper.sh
swift build $CCFLAGS $LINKFLAGS "$@"
if [ `uname` = "Darwin" ]; then
	. ./app-bundle.sh
else
	cp -r $RESOURCES_DIR/* $BUILD_BIN/ 	
fi

I found the problem while trying to load css file from resources throught the next function:

func readCssFile(forResource: String) {
    if let fileURL = Bundle.main.url(forResource: forResource, withExtension: "css") { 
        if let fileContents = try? String(contentsOf: fileURL) {
            if let screen = ScreenRef.getDefault(), let css = try? CSSProvider(from: fileContents) {
                screen.add(provider: css, priority: STYLE_PROVIDER_PRIORITY_APPLICATION)
            }
        }
    }
}
rhx commented

This is probably something that the app-bundle.sh script (or an install script) should be doing. At the moment, the app-bundle script is macOS only. The question is what would be a good app structure on Linux that is somewhat idiomatic for different desktop environments (such as Gnome, KDE, etc.)?