diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-01-16 16:35:37 +1100 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-01-16 16:35:37 +1100 |
| commit | 02fd2e97f2c8a53bf2344e6fa8b14769cb15ee38 (patch) | |
| tree | 5e2a56becf6ba6961995e541ce9688224f704773 /src/utils/icons.ts | |
| parent | popupwindow: switch to class (diff) | |
| download | caelestia-shell-02fd2e97f2c8a53bf2344e6fa8b14769cb15ee38.tar.gz caelestia-shell-02fd2e97f2c8a53bf2344e6fa8b14769cb15ee38.tar.bz2 caelestia-shell-02fd2e97f2c8a53bf2344e6fa8b14769cb15ee38.zip | |
refactor: move ts to src
Also move popupwindow to own file
Diffstat (limited to 'src/utils/icons.ts')
| -rw-r--r-- | src/utils/icons.ts | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/utils/icons.ts b/src/utils/icons.ts new file mode 100644 index 0000000..f12aee0 --- /dev/null +++ b/src/utils/icons.ts @@ -0,0 +1,86 @@ +import { Gio } from "astal"; +import type AstalApps from "gi://AstalApps"; +import { Apps } from "../services/apps"; + +// Code points from https://www.github.com/lukas-w/font-logos +export const osIcons: Record<string, number> = { + almalinux: 0xf31d, + alpine: 0xf300, + arch: 0xf303, + arcolinux: 0xf346, + centos: 0x304, + debian: 0xf306, + elementary: 0xf309, + endeavouros: 0xf322, + fedora: 0xf30a, + gentoo: 0xf30d, + kali: 0xf327, + linuxmint: 0xf30e, + mageia: 0xf310, + manjaro: 0xf312, + nixos: 0xf313, + opensuse: 0xf314, + suse: 0xf314, + sles: 0xf314, + sles_sap: 0xf314, + pop: 0xf32a, + raspbian: 0xf315, + rhel: 0xf316, + rocky: 0xf32b, + slackware: 0xf318, + ubuntu: 0xf31b, +}; + +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"; +}; |