From 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 Mon Sep 17 00:00:00 2001 From: AlexanderCurl Date: Sat, 18 Apr 2026 17:46:06 +0100 Subject: Replaced file structures for themes in the correct format --- .../core/internal/utils/flatpak.go | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go') diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go new file mode 100644 index 0000000..f1c9009 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/utils/flatpak.go @@ -0,0 +1,83 @@ +package utils + +import ( + "bytes" + "errors" + "os/exec" + "slices" + "strings" +) + +func FlatpakInPath() bool { + _, err := exec.LookPath("flatpak") + return err == nil +} + +func FlatpakExists(name string) bool { + if !FlatpakInPath() { + return false + } + + cmd := exec.Command("flatpak", "info", name) + err := cmd.Run() + return err == nil +} + +func FlatpakSearchBySubstring(substring string) bool { + if !FlatpakInPath() { + return false + } + + cmd := exec.Command("flatpak", "list", "--app") + var stdout bytes.Buffer + cmd.Stdout = &stdout + + if err := cmd.Run(); err != nil { + return false + } + + out := stdout.String() + + for line := range strings.SplitSeq(out, "\n") { + fields := strings.Fields(line) + if len(fields) > 1 { + id := fields[1] + idParts := strings.Split(id, ".") + // We are assuming that the last part of the ID is + // the package name we're looking for. This might + // not always be true, some developers use arbitrary + // suffixes. + if len(idParts) > 0 && idParts[len(idParts)-1] == substring { + cmd := exec.Command("flatpak", "info", id) + err := cmd.Run() + return err == nil + } + } + } + return false +} + +func AnyFlatpakExists(flatpaks ...string) bool { + return slices.ContainsFunc(flatpaks, FlatpakExists) +} + +func FlatpakInstallationDir(name string) (string, error) { + if !FlatpakInPath() { + return "", errors.New("flatpak not found in PATH") + } + + cmd := exec.Command("flatpak", "info", "--show-location", name) + var stdout bytes.Buffer + cmd.Stdout = &stdout + + if err := cmd.Run(); err != nil { + return "", errors.New("flatpak not installed: " + name) + } + + location := strings.TrimSpace(stdout.String()) + if location == "" { + return "", errors.New("installation directory not found for: " + name) + } + + return location, nil +} -- cgit v1.3