aboutsummaryrefslogtreecommitdiff
path: root/.config/ags/lib/iconUtils.js
blob: baba660d6ed1f39084d57a9f881d605c158a5aba (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
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;
};