Skip to content

Commit 1569d6f

Browse files
committed
Expose the original $CWD as an environment variable
The place from where the appImage is executed might not be the same location where its placed. Consider an appImage located in `/opt/myapp.AppImage`. If I call such appImage from a terminal emulator where my `$CWD` is `/home/jviotti` (e.g: by passing the absolute path to the appImage), the application has no way to determine that it was run from `/home/jviotti`. This is very useful to provide a better integration when your application is executed from a terminal emulator. Classic GNU/Linux applications, like GIMP, set the default location of file dialogs to the place where the `gimp` command was executed from. In order to expose this to the user, we set the `OWD` environment to the result of `getcwd()` right before the runtime passes control to `AppRun`. Fixes: #172 Signed-off-by: Juan Cruz Viotti <jviottidc@gmail.com>
1 parent 733039e commit 1569d6f

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

runtime.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,13 @@ main (int argc, char *argv[])
359359
/* Setting some environment variables that the app "inside" might use */
360360
setenv( "APPIMAGE", fullpath, 1 );
361361
setenv( "APPDIR", mount_dir, 1 );
362+
363+
/* Original working directory */
364+
char cwd[1024];
365+
if (getcwd(cwd, sizeof(cwd)) != NULL) {
366+
setenv( "OWD", cwd, 1 );
367+
}
368+
362369
execv (filename, real_argv);
363370
/* Error if we continue here */
364371
perror ("execv error: ");

0 commit comments

Comments
 (0)