mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-05-15 08:42:47 -04:00
app picker: extend App Picker to integrate with mime overrides
- Adds "DMS Opener" as an option (dms-open.desktop) - Add mime type GO utils - Add rememberance to App Picker modal
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
package desktop
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type group struct {
|
||||
keys map[string]string
|
||||
}
|
||||
|
||||
func parseGroups(data []byte) map[string]*group {
|
||||
groups := make(map[string]*group)
|
||||
var current *group
|
||||
|
||||
scanner := bufio.NewScanner(bytes.NewReader(data))
|
||||
scanner.Buffer(make([]byte, 64*1024), 1024*1024)
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
if line == "" || line[0] == '#' {
|
||||
continue
|
||||
}
|
||||
|
||||
if line[0] == '[' && strings.HasSuffix(line, "]") {
|
||||
name := line[1 : len(line)-1]
|
||||
g, ok := groups[name]
|
||||
if !ok {
|
||||
g = &group{keys: make(map[string]string)}
|
||||
groups[name] = g
|
||||
}
|
||||
current = g
|
||||
continue
|
||||
}
|
||||
|
||||
if current == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
eq := strings.IndexByte(line, '=')
|
||||
if eq <= 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
key := strings.TrimSpace(line[:eq])
|
||||
if bracket := strings.IndexByte(key, '['); bracket > 0 {
|
||||
key = key[:bracket]
|
||||
}
|
||||
if _, ok := current.keys[key]; ok {
|
||||
continue
|
||||
}
|
||||
current.keys[key] = strings.TrimSpace(line[eq+1:])
|
||||
}
|
||||
|
||||
return groups
|
||||
}
|
||||
|
||||
func splitList(value string) []string {
|
||||
if value == "" {
|
||||
return nil
|
||||
}
|
||||
parts := strings.Split(value, ";")
|
||||
out := make([]string, 0, len(parts))
|
||||
for _, p := range parts {
|
||||
p = strings.TrimSpace(p)
|
||||
if p == "" {
|
||||
continue
|
||||
}
|
||||
out = append(out, p)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func parseBool(value string) bool {
|
||||
switch strings.ToLower(strings.TrimSpace(value)) {
|
||||
case "true", "1", "yes":
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user