A shepherd for your Appimages.
0

Configure Feed

Select the types of activity you want to include in your feed.

internal: add launch + path

Aly Raffauf (Jun 18, 2026, 4:22 PM EDT) 4779d958 9cb35e29

+34
+22
internal/appherder/launch.go
··· 1 + package appherder 2 + 3 + import ( 4 + "fmt" 5 + "os/exec" 6 + ) 7 + 8 + // Launch starts the installed AppImage for appid and returns immediately. 9 + func (a App) Launch(appid string) error { 10 + path, err := findAppImagePath(a.appimagesDir, appid) 11 + if err != nil { 12 + return err 13 + } 14 + if path == "" { 15 + return fmt.Errorf("appimage %s is not installed", appid) 16 + } 17 + cmd := exec.Command(path) 18 + if err := cmd.Start(); err != nil { 19 + return fmt.Errorf("launch %s: %w", appid, err) 20 + } 21 + return cmd.Process.Release() 22 + }
+10
internal/appherder/launch_test.go
··· 1 + package appherder 2 + 3 + import "testing" 4 + 5 + func TestLaunchMissingApp(t *testing.T) { 6 + a, _ := newTestApp(t) 7 + if err := a.Launch("missing"); err == nil { 8 + t.Fatal("Launch missing app succeeded, want error") 9 + } 10 + }
+2
internal/appherder/list.go
··· 14 14 Name string // desktop Name= field, falls back to filename 15 15 Icon string // desktop Icon= field, usually appherder's installed icon path 16 16 Filename string // basename of the AppImage in ~/AppImages, "" when missing 17 + Path string // full path to the AppImage in ~/AppImages, "" when missing 17 18 Version string // desktop X-AppImage-Version= 18 19 Size int64 19 20 Source string // update source kind, "none" when no info ··· 57 58 58 59 var signed bool 59 60 if path, err := findAppImagePath(appimagesDir, appid); err == nil && path != "" { 61 + info.Path = path 60 62 info.Filename = filepath.Base(path) 61 63 if stat, err := os.Stat(path); err == nil { 62 64 info.Size = stat.Size()