Skip to content

Commit caa862c

Browse files
committed
Add AppImage Support
1 parent 948aa79 commit caa862c

1 file changed

Lines changed: 18 additions & 3 deletions

File tree

process_manager.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,29 @@ func buildV2RayCommand(execDir string) commandSpec {
122122
}
123123

124124
func currentExecutableDir() (string, error) {
125+
if appImage := os.Getenv("APPIMAGE"); appImage != "" {
126+
return executablePathDir(appImage)
127+
}
128+
125129
executable, err := os.Executable()
126130
if err != nil {
127131
return "", fmt.Errorf("resolve executable path: %w", err)
128132
}
129-
if resolved, err := filepath.EvalSymlinks(executable); err == nil {
130-
executable = resolved
133+
return executablePathDir(executable)
134+
}
135+
136+
func executablePathDir(path string) (string, error) {
137+
if !filepath.IsAbs(path) {
138+
absolute, err := filepath.Abs(path)
139+
if err != nil {
140+
return "", fmt.Errorf("resolve executable directory: %w", err)
141+
}
142+
path = absolute
143+
}
144+
if resolved, err := filepath.EvalSymlinks(path); err == nil {
145+
path = resolved
131146
}
132-
return filepath.Dir(executable), nil
147+
return filepath.Dir(path), nil
133148
}
134149

135150
func (pm *ProcessManager) Start() error {

0 commit comments

Comments
 (0)