summaryrefslogtreecommitdiff
path: root/src/utils/icons.ts
blob: b309d7ba04f1a410c85de28254625ced8c1b021f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import { Apps } from "@/services/apps";
import { Gio } from "astal";
import type AstalApps from "gi://AstalApps";

export const osIcons: Record<string, string> = {
    almalinux: "",
    alpine: "",
    arch: "",
    archcraft: "",
    arcolinux: "",
    artix: "",
    centos: "",
    debian: "",
    devuan: "",
    elementary: "",
    endeavouros: "",
    fedora: "",
    freebsd: "",
    garuda: "",
    gentoo: "",
    hyperbola: "",
    kali: "",
    linuxmint: "󰣭",
    mageia: "",
    openmandriva: "",
    manjaro: "",
    neon: "",
    nixos: "",
    opensuse: "",
    suse: "",
    sles: "",
    sles_sap: "",
    "opensuse-tumbleweed": "",
    parrot: "",
    pop: "",
    raspbian: "",
    rhel: "",
    rocky: "",
    slackware: "",
    solus: "",
    steamos: "",
    tails: "",
    trisquel: "",
    ubuntu: "",
    vanilla: "",
    void: "",
    zorin: "",
};

export const desktopEntrySubs: Record<string, string> = {
    Firefox: "firefox",
};

const categoryIcons: Record<string, string> = {
    WebBrowser: "web",
    Printing: "print",
    Security: "security",
    Network: "chat",
    Archiving: "archive",
    Compression: "archive",
    Development: "code",
    IDE: "code",
    TextEditor: "edit_note",
    Audio: "music_note",
    Music: "music_note",
    Player: "music_note",
    Recorder: "mic",
    Game: "sports_esports",
    FileTools: "files",
    FileManager: "files",
    Filesystem: "files",
    FileTransfer: "files",
    Settings: "settings",
    DesktopSettings: "settings",
    HardwareSettings: "settings",
    TerminalEmulator: "terminal",
    ConsoleOnly: "terminal",
    Utility: "build",
    Monitor: "monitor_heart",
    Midi: "graphic_eq",
    Mixer: "graphic_eq",
    AudioVideoEditing: "video_settings",
    AudioVideo: "music_video",
    Video: "videocam",
    Building: "construction",
    Graphics: "photo_library",
    "2DGraphics": "photo_library",
    RasterGraphics: "photo_library",
    TV: "tv",
    System: "host",
};

export const getAppCategoryIcon = (nameOrApp: string | AstalApps.Application) => {
    const categories =
        typeof nameOrApp === "string"
            ? Gio.DesktopAppInfo.new(`${nameOrApp}.desktop`)?.get_categories()?.split(";") ??
              Apps.fuzzy_query(nameOrApp)[0]?.categories
            : nameOrApp.categories;
    if (categories)
        for (const [key, value] of Object.entries(categoryIcons)) if (categories.includes(key)) return value;
    return "terminal";
};