aboutsummaryrefslogtreecommitdiff
path: root/.config/ags/lib/iconUtils.js
diff options
context:
space:
mode:
Diffstat (limited to '.config/ags/lib/iconUtils.js')
-rw-r--r--.config/ags/lib/iconUtils.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/.config/ags/lib/iconUtils.js b/.config/ags/lib/iconUtils.js
new file mode 100644
index 0000000..baba660
--- /dev/null
+++ b/.config/ags/lib/iconUtils.js
@@ -0,0 +1,46 @@
+const { Gio, Gdk, Gtk } = imports.gi;
+
+function fileExists(filePath) {
+ let file = Gio.File.new_for_path(filePath);
+ return file.query_exists(null);
+}
+
+function cartesianProduct(arrays) {
+ if (arrays.length === 0) {
+ return [[]];
+ }
+
+ const [head, ...tail] = arrays;
+ const tailCartesian = cartesianProduct(tail);
+ const result = [];
+
+ for (const item of head) {
+ for (const tailItem of tailCartesian) {
+ result.push([item, ...tailItem]);
+ }
+ }
+ return result;
+}
+import { HOME } from '../utils.ts';
+export const find_icon = app_class => {
+ const themPath = [
+ [`${HOME}/.local/share/icons/WhiteSur/`, `${HOME}/.local/share//icons/WhiteSur-dark/`],
+ ['512x512/', '128x128/', '64x64/', '96x96/', '72x72/', '48x48/', '36x36/'],
+ ['apps/', ''],
+ [app_class + '.png', app_class + '.svg', app_class + '.xpm'],
+ ];
+
+ let real_path = '';
+ const all_icon_dir = cartesianProduct(themPath);
+
+ for (let index = 0; index < all_icon_dir.length; index++) {
+ const pathItem = all_icon_dir[index];
+ const icon_path = pathItem.join('');
+ if (fileExists(icon_path)) {
+ real_path = icon_path;
+ break;
+ }
+ }
+
+ return real_path;
+};