33
44HERE=" $( dirname " $( readlink -f " $0 " ) " ) "
55
6+ SHOW_SPLASH=true
7+ # Loop through all arguments
8+ for arg in " $@ " ; do
9+ case " $arg " in
10+ -nosplash|--nosplash)
11+ SHOW_SPLASH=false
12+ ;;
13+ esac
14+ done
15+
616notify_failure () {
717 if [[ -n " $FLATPAK_ID " ]]; then
818 local MSG=" <b>$FLATPAK_ID failed to start!</b>\n\nExit Code: $EXIT_CODE "
@@ -33,7 +43,17 @@ notify_failure() {
3343}
3444
3545launch_guarded () {
36- " $@ "
46+ if [[ " $1 " == " packageinfo" ]]; then
47+ cat " $OO_EXEDIR /Resources/manifest.plist"
48+ exit 0
49+ fi
50+ if [[ " $SHOW_SPLASH " == true ]]; then
51+ " $OO_EXEDIR /splash-launcher" " $OO_EXEDIR /Resources/Images/splash.bmp" &
52+ " $OO_EXEDIR /oolite" " $@ " -nosplash
53+ else
54+ # already has -nosplash
55+ " $OO_EXEDIR /oolite" " $@ "
56+ fi
3757 local EXIT_CODE=$?
3858
3959 if [ $EXIT_CODE -eq 0 ]; then
@@ -44,76 +64,85 @@ launch_guarded() {
4464 exit $EXIT_CODE
4565}
4666
47- find_exe_launch () {
48- if [[ -z " $OO_EXECUTABLE " ]]; then
49- OO_EXECUTABLE =" $HERE /oolite "
50- if [[ ! -f " $OO_EXECUTABLE " ]]; then
51- OO_EXECUTABLE =" $HERE /oolite.app/oolite "
67+ find_exedir () {
68+ if [[ -z " $OO_EXEDIR " ]]; then
69+ OO_EXEDIR =" $HERE "
70+ if [[ ! -f " $OO_EXEDIR /oolite " ]]; then
71+ OO_EXEDIR =" $HERE /oolite.app"
5272 fi
5373 fi
54- launch_guarded " $OO_EXECUTABLE " " $@ "
74+ }
75+
76+ make_gnustepconf_template () {
77+ export GNUSTEP_CONFIG_FILE=$( mktemp -t oolite_gnustep_XXXX --suffix=.conf)
78+ sed -e " s|@BASEDIR@|$BASEDIR |g" " $OO_EXEDIR /Resources/GNUstep.conf.template" > " $GNUSTEP_CONFIG_FILE "
5579}
5680
5781# Check if we are running inside a Flatpak
5882if [[ -n " $FLATPAK_ID " ]]; then
59- if [[ " $1 " == " packageinfo" ]]; then
60- cat " /app/bin/Resources/manifest.plist"
61- exit 0
62- fi
63-
83+ BASEDIR=" /app"
84+ OO_EXEDIR=" $BASEDIR /bin"
6485 GAME_DATA=" $HOME /.var/app/$FLATPAK_ID "
65- OO_EXECUTABLE= " /app/bin/oolite "
86+ make_gnustepconf_template
6687
6788# Check if we are running inside an AppImage
6889elif [[ -n " $APPIMAGE " ]]; then
69- MANIFEST=" $APPDIR /usr/bin/Resources/manifest.plist"
70- if [[ " $1 " == " packageinfo" ]]; then
71- cat " $MANIFEST "
72- exit 0
73- fi
74-
75- export LD_LIBRARY_PATH=" $APPDIR /usr/lib:$LD_LIBRARY_PATH "
76- export PATH=" $APPDIR /usr/bin:$PATH "
77- OO_EXECUTABLE=" $APPDIR /usr/bin/oolite"
90+ BASEDIR=" $APPDIR /usr"
91+ OO_EXEDIR=" $BASEDIR /bin"
92+ export LD_LIBRARY_PATH=" $BASEDIR /lib:$LD_LIBRARY_PATH "
93+ export PATH=" $OO_EXEDIR :$PATH "
7894
79- DEBUG_OXP=$( grep " debug_functionality_support" " $MANIFEST " )
95+ DEBUG_OXP=$( grep " debug_functionality_support" " $OO_EXEDIR /Resources/manifest.plist " )
8096 if [[ " $DEBUG_OXP " == * " yes" * ]]; then
81- INTERNAL_ADDONS=" $APPDIR /usr/bin /AddOns"
97+ INTERNAL_ADDONS=" $OO_EXEDIR /AddOns"
8298 export OO_ADDITIONALADDONSDIRS=" ${OO_ADDITIONALADDONSDIRS}${OO_ADDITIONALADDONSDIRS: +,} $INTERNAL_ADDONS "
8399 fi
84100
85101 if [[ -n " $OO_DIRTYPE " ]]; then
86102 if [[ " ${OO_DIRTYPE,,} " == " xdg" ]]; then
87103 GAME_DATA=" $HOME /.local/share/Oolite"
88104 elif [[ " ${OO_DIRTYPE,,} " == " legacy" ]]; then
89- launch_guarded " $OO_EXECUTABLE " " $ @"
105+ launch_guarded " $@ "
90106 fi
91107 else
92108 # Get the folder containing the AppImage file
93109 HERE=" $( dirname " $APPIMAGE " ) "
94110 GAME_DATA=" $HERE /GameData"
95111 fi
112+ make_gnustepconf_template
96113else
97- if [[ " $1 " == " packageinfo" ]]; then
98- if [ -f " $HERE /Resources/manifest.plist" ]; then
99- cat " $HERE /Resources/manifest.plist"
100- else
101- cat " $HERE /oolite.app/Resources/manifest.plist"
102- fi
103- exit 0
104- fi
105-
106114 # Check if OO_DIRTYPE set
107115 if [[ -n " $OO_DIRTYPE " ]]; then
108116 if [[ " ${OO_DIRTYPE,,} " == " xdg" ]]; then
109117 GAME_DATA=" $HOME /.local/share/Oolite"
110118 elif [[ " ${OO_DIRTYPE,,} " == " legacy" ]]; then
111- find_exe_launch " $@ "
119+ find_exedir
120+ launch_guarded " $@ "
112121 fi
113122 else
114123 # Use script directory
115124 GAME_DATA=" $HERE /GameData"
116125 fi
126+ # Find the current system configuration file
127+ ORIGINAL_CONF=$( gnustep-config --variable=GNUSTEP_CONFIG_FILE)
128+
129+ # Fallback: If gnustep-config returns nothing, assume standard location
130+ if [ -z " $ORIGINAL_CONF " ]; then
131+ ORIGINAL_CONF=" /etc/GNUstep/GNUstep.conf"
132+ fi
133+
134+ if [ -z " $ORIGINAL_CONF " ]; then
135+ ORIGINAL_CONF=" /usr/local/etc/GNUstep/GNUstep.conf"
136+ fi
137+
138+ GNUSTEP_CONFIG_FILE=$( mktemp -t oolite_gnustep_XXXX --suffix=.conf)
139+ # Copy the original config (if it exists) to the temp file
140+ if [ -f " $ORIGINAL_CONF " ]; then
141+ cp " $ORIGINAL_CONF " " $GNUSTEP_CONFIG_FILE "
142+ else
143+ echo " No system config found at $ORIGINAL_CONF . Starting with empty config."
144+ touch " $GNUSTEP_CONFIG_FILE "
145+ fi
117146fi
118147
119148mkdir -p " $GAME_DATA "
@@ -135,6 +164,7 @@ elif [[ -n "$OO_USERADDONSDIR" ]]; then
135164 fi
136165fi
137166mkdir -p " $OO_ADDONSEXTRACTDIR "
167+ # OO_ADDITIONALADDONSDIRS can be used to pass a comma separated list of additional OXP folders
138168if [ -n " $OO_ADDITIONALADDONSDIRS " ]; then
139169 (IFS=,; mkdir -p $OO_ADDITIONALADDONSDIRS )
140170fi
@@ -144,47 +174,21 @@ mkdir -p "$OO_GNUSTEPDIR"
144174OO_GNUSTEPDEFAULTSDIR=" ${OO_GNUSTEPDEFAULTSDIR:- ${GAME_DATA} } "
145175mkdir -p " $OO_GNUSTEPDEFAULTSDIR "
146176
147- # OO_ADDITIONALADDONSDIRS can be used to pass a comma separated list of additional OXP folders
148-
149-
150- # Find the current system configuration file
151- ORIGINAL_CONF=$( gnustep-config --variable=GNUSTEP_CONFIG_FILE)
152-
153- # Fallback: If gnustep-config returns nothing, assume standard location
154- if [ -z " $ORIGINAL_CONF " ]; then
155- ORIGINAL_CONF=" /etc/GNUstep/GNUstep.conf"
156- fi
157-
158- if [ -z " $ORIGINAL_CONF " ]; then
159- ORIGINAL_CONF=" /usr/local/etc/GNUstep/GNUstep.conf"
160- fi
161-
162- TEMP_CONF=$( mktemp -t oolite_gnustep_XXXX --suffix=.conf)
163-
164- # Copy the original config to the temp file (if it exists)
165- if [ -f " $ORIGINAL_CONF " ]; then
166- cp " $ORIGINAL_CONF " " $TEMP_CONF "
167- else
168- echo " No system config found at $ORIGINAL_CONF . Starting with empty config."
169- touch " $TEMP_CONF "
170- fi
171-
172- echo " " >> " $TEMP_CONF "
173- echo " # --- Overrides added by launcher script ---" >> " $TEMP_CONF "
174- echo " GNUSTEP_USER_DIR_APPS=$OO_GNUSTEPDIR /Applications" >> " $TEMP_CONF "
175- echo " GNUSTEP_USER_DIR_ADMIN_APPS=$OO_GNUSTEPDIR /Applications/Admin" >> " $TEMP_CONF "
176- echo " GNUSTEP_USER_DIR_WEB_APPS=$OO_GNUSTEPDIR /WebApplications" >> " $TEMP_CONF "
177- echo " GNUSTEP_USER_DIR_TOOLS=$OO_GNUSTEPDIR /Tools" >> " $TEMP_CONF "
178- echo " GNUSTEP_USER_DIR_ADMIN_TOOLS=$OO_GNUSTEPDIR /Tools/Admin" >> " $TEMP_CONF "
179- echo " GNUSTEP_USER_DIR_LIBRARY=$OO_GNUSTEPDIR /Library" >> " $TEMP_CONF "
180- echo " GNUSTEP_USER_DIR_HEADERS=$OO_GNUSTEPDIR /Library/Headers" >> " $TEMP_CONF "
181- echo " GNUSTEP_USER_DIR_LIBRARIES=$OO_GNUSTEPDIR /Library/Libraries" >> " $TEMP_CONF "
182- echo " GNUSTEP_USER_DIR_DOC=$OO_GNUSTEPDIR /Library/Documentation" >> " $TEMP_CONF "
183- echo " GNUSTEP_USER_DIR_DOC_MAN=$OO_GNUSTEPDIR /Library/Documentation/man" >> " $TEMP_CONF "
184- echo " GNUSTEP_USER_DIR_DOC_INFO=$OO_GNUSTEPDIR /Library/Documentation/info" >> " $TEMP_CONF "
185- echo " GNUSTEP_USER_DEFAULTS_DIR=$OO_GNUSTEPDEFAULTSDIR " >> " $TEMP_CONF "
186-
187- export GNUSTEP_CONFIG_FILE=" $TEMP_CONF "
188-
189- find_exe_launch " $@ "
190- rm " $TEMP_CONF "
177+ echo " " >> " $GNUSTEP_CONFIG_FILE "
178+ echo " GNUSTEP_USER_CONFIG_FILE=$GNUSTEP_CONFIG_FILE " >> " $GNUSTEP_CONFIG_FILE "
179+ echo " GNUSTEP_USER_DIR_APPS=$OO_GNUSTEPDIR /Applications" >> " $GNUSTEP_CONFIG_FILE "
180+ echo " GNUSTEP_USER_DIR_ADMIN_APPS=$OO_GNUSTEPDIR /Applications/Admin" >> " $GNUSTEP_CONFIG_FILE "
181+ echo " GNUSTEP_USER_DIR_WEB_APPS=$OO_GNUSTEPDIR /WebApplications" >> " $GNUSTEP_CONFIG_FILE "
182+ echo " GNUSTEP_USER_DIR_TOOLS=$OO_GNUSTEPDIR /Tools" >> " $GNUSTEP_CONFIG_FILE "
183+ echo " GNUSTEP_USER_DIR_ADMIN_TOOLS=$OO_GNUSTEPDIR /Tools/Admin" >> " $GNUSTEP_CONFIG_FILE "
184+ echo " GNUSTEP_USER_DIR_LIBRARY=$OO_GNUSTEPDIR /Library" >> " $GNUSTEP_CONFIG_FILE "
185+ echo " GNUSTEP_USER_DIR_HEADERS=$OO_GNUSTEPDIR /Library/Headers" >> " $GNUSTEP_CONFIG_FILE "
186+ echo " GNUSTEP_USER_DIR_LIBRARIES=$OO_GNUSTEPDIR /Library/Libraries" >> " $GNUSTEP_CONFIG_FILE "
187+ echo " GNUSTEP_USER_DIR_DOC=$OO_GNUSTEPDIR /Library/Documentation" >> " $GNUSTEP_CONFIG_FILE "
188+ echo " GNUSTEP_USER_DIR_DOC_MAN=$OO_GNUSTEPDIR /Library/Documentation/man" >> " $GNUSTEP_CONFIG_FILE "
189+ echo " GNUSTEP_USER_DIR_DOC_INFO=$OO_GNUSTEPDIR /Library/Documentation/info" >> " $GNUSTEP_CONFIG_FILE "
190+ echo " GNUSTEP_USER_DEFAULTS_DIR=$OO_GNUSTEPDEFAULTSDIR " >> " $GNUSTEP_CONFIG_FILE "
191+
192+ find_exedir
193+ launch_guarded " $@ "
194+ rm " $GNUSTEP_CONFIG_FILE "
0 commit comments