├── .editorconfig
├── .github
└── ISSUE_TEMPLATE
├── .gitignore
├── .pylintrc
├── HardcodeTray
├── app.py
├── decorators.py
├── enum.py
├── modules
│ ├── applications
│ │ ├── application.py
│ │ ├── b64electron.py
│ │ ├── electron.py
│ │ ├── helpers
│ │ │ ├── asar.py
│ │ │ ├── binary.py
│ │ │ ├── data_pack.py
│ │ │ └── extract.py
│ │ ├── nwjs.py
│ │ ├── pak.py
│ │ ├── qt.py
│ │ └── zip.py
│ ├── backup.py
│ ├── config
│ │ ├── arguments.py
│ │ ├── json.py
│ │ └── system.py
│ ├── icon.py
│ ├── log.py
│ ├── parser.py
│ ├── path.py
│ ├── svg
│ │ ├── cairosvg.py
│ │ ├── imagemagick.py
│ │ ├── inkscape.py
│ │ ├── rsvgconvert.py
│ │ ├── svg.py
│ │ └── svgexport.py
│ └── theme.py
├── path.py
├── tools.py
└── utils.py
├── LICENSE.BSD-3-Clause
├── LICENSE.GPL-3.0
├── NOTICE
├── README.md
├── circle.yml
├── const.py.in
├── data
├── config.json
├── database
│ ├── 1password.electron.json
│ ├── acestream.json
│ ├── anatine.json
│ ├── android-messages-desktop.electron.json
│ ├── ao.electron.json
│ ├── bauh.json
│ ├── bitwarden.electron.json
│ ├── bluemail.electron.json
│ ├── brave.json
│ ├── calendar-indicator.json
│ ├── caprine.electron.json
│ ├── caprine.json
│ ├── catch-indicator.json
│ ├── china-weather.json
│ ├── chromium.json
│ ├── cisco-anyconnect.json
│ ├── clockify.electron.json
│ ├── cpod.electron.json
│ ├── cryptfolder-indicator.json
│ ├── deltachat.electron.json
│ ├── deltachat.json
│ ├── devhub.electron.json
│ ├── discord-canary.electron.json
│ ├── discord.electron.json
│ ├── disper-indicator.json
│ ├── dropbox-flatpak.json
│ ├── dropbox.json
│ ├── electron-mail.electron.json
│ ├── element.electron.json
│ ├── evernote.json
│ ├── ferdi.electron.json
│ ├── ferdium.electron.json
│ ├── franz.electron.json
│ ├── freezer.electron.json
│ ├── gdlauncher.electron.json
│ ├── ghetto_skype.electron.json
│ ├── ghetto_skype.json
│ ├── gitify.electron.json
│ ├── gitter.json
│ ├── gmail-desktop.electron.json
│ ├── google-chat-linux.electron.json
│ ├── google-chrome.json
│ ├── google-tasks-indicator.json
│ ├── gpmdp.electron.json
│ ├── grive-tools.json
│ ├── guake.json
│ ├── guitarix.json
│ ├── hamsket.electron.json
│ ├── harmony.json
│ ├── heroic.electron.json
│ ├── hexchat.json
│ ├── hp-printing.json
│ ├── hp-printing.qt.json
│ ├── ibus-anthy.json
│ ├── ibus-mozc.json
│ ├── indicator-weather.json
│ ├── insync.json
│ ├── internxt-drive.json
│ ├── irccloud.electron.json
│ ├── jdownloader.json
│ ├── joplin.json
│ ├── kaku.electron.json
│ ├── keepass.json
│ ├── keepassx.json
│ ├── keybase.json
│ ├── kuro.electron.json
│ ├── laditools.json
│ ├── liferea.json
│ ├── lightcord.electron.json
│ ├── listen-moe.electron.json
│ ├── lyricfier.json
│ ├── mailspring.json
│ ├── mate-sensors-applet.json
│ ├── mattermost.electron.json
│ ├── megasync.json
│ ├── messenger.electron.json
│ ├── messengerfordesktop.json
│ ├── messengerfordesktop.nwjs.json
│ ├── minetime.json
│ ├── mintupdate.json
│ ├── moderndeck.electron.json
│ ├── morgen.electron.json
│ ├── motrix-git.json
│ ├── motrix.electron.json
│ ├── mullvad.electron.json
│ ├── museeks.electron.json
│ ├── mx-updater.json
│ ├── my-weather-indicator.json
│ ├── nomachine.json
│ ├── nozbe.json
│ ├── nutstore.json
│ ├── nylas.json
│ ├── odrive.electron.json
│ ├── openbazaar2client.json
│ ├── opensnitch.json
│ ├── overgrive.json
│ ├── pb-for-desktop.json
│ ├── pcloud-drive.json
│ ├── pocket-casts.electron.json
│ ├── pomodoneapp.json
│ ├── pomodoro-indicator.json
│ ├── popcorntime.json
│ ├── premid.electron.json
│ ├── prime-indicator-plus.json
│ ├── primeindicator.json
│ ├── protonmail.json
│ ├── protonvpn-gui.json
│ ├── pushbullet-indicator.json
│ ├── qjoypad.json
│ ├── qtwaw.json
│ ├── radiotray.json
│ ├── rambox.electron.json
│ ├── ramme.json
│ ├── rare.json
│ ├── rclonetray.electron.json
│ ├── record-desktop.json
│ ├── rememberthemilk.electron.json
│ ├── rhythmbox.json
│ ├── riot.electron.json
│ ├── rocketchat.electron.json
│ ├── rto-proxy.electron.json
│ ├── sendanywhere.electron.json
│ ├── session-desktop.electron.json
│ ├── sflphone.json
│ ├── signal.electron.json
│ ├── skype.json
│ ├── slack.json
│ ├── slimbookamdcontroller.json
│ ├── solaar.json
│ ├── spotifywebplayer.json
│ ├── steam.json
│ ├── superproductivity.electron.json
│ ├── tartube.json
│ ├── teams-for-linux.electron.json
│ ├── teams.json
│ ├── ticktick.electron.json
│ ├── todoist.electron.json
│ ├── touchpad-indicator.json
│ ├── trimage.json
│ ├── tusk.json
│ ├── tutanota-desktop.json
│ ├── tweet-tray.electron.json
│ ├── twitch-indicator.json
│ ├── utools.electron.json
│ ├── variety.json
│ ├── vivaldi.json
│ ├── vk.json
│ ├── vorta.json
│ ├── wazzapp.electron.json
│ ├── webtorrent-desktop.json
│ ├── wechat.json
│ ├── whatsapp-nativefier.json
│ ├── whatsapp.json
│ ├── whatsdesk.electron.json
│ ├── whatsie.json
│ ├── wicd.json
│ ├── wire.electron.json
│ ├── wire.json
│ ├── workrave.json
│ ├── x-tile.json
│ ├── xkbmod-indicator.json
│ ├── yakyak.json
│ ├── yamusic.electron.json
│ ├── yate.json
│ ├── yd-tools.json
│ ├── youtube-indicator.json
│ ├── youtube-music.electron.json
│ ├── ytmdesktop.electron.json
│ └── yum-extender-dnf.json
├── man
│ └── hardcode-tray.1
└── meson.build
├── hardcode-tray.py.in
├── license
├── BSD
├── GPL
└── README.md
├── meson.build
├── po
├── LINGUAS
├── POTFILES
├── de.po
├── hardcode-tray.pot
├── meson.build
├── nl_NL.po
└── ru.po
├── screenshots
├── numix.png
└── papirus.png
└── tests
├── database
├── database.py
└── schema.json
└── pylint.sh
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 | [*]
3 | indent_style = space
4 | indent_size = 2
5 | charset = utf-8
6 | trim_trailing_whitespace = true
7 | insert_final_newline = true
8 |
9 | [*.{py,json}]
10 | indent_size = 4
11 |
12 | [*.md]
13 | trim_trailing_whitespace = false
14 |
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE:
--------------------------------------------------------------------------------
1 | ### Specifications
2 | - Hardcode-Tray version : ``
3 | - Distribution : ``
4 | - Gtk version : ``
5 | - Inkscape version : `` if installed
6 | - Cairo version : `` if installed
7 | - Sni-qt version: `` if installed
8 | - Application name : ``
9 | - Application version : ``
10 |
11 | ### Expected behavior and actual behavior
12 |
13 | ### Steps to reproduce the problem
14 | 1.
15 | 2.
16 | 3.
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 |
5 | # C extensions
6 | *.so
7 |
8 | # Distribution / packaging
9 | .Python
10 | env/
11 | build/
12 | builddir/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 |
27 | # PyInstaller
28 | # Usually these files are written by a python script from a template
29 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
30 | *.manifest
31 | *.spec
32 |
33 | # Installer logs
34 | pip-log.txt
35 | pip-delete-this-directory.txt
36 |
37 | # Unit test / coverage reports
38 | htmlcov/
39 | .tox/
40 | .coverage
41 | .coverage.*
42 | .cache
43 | nosetests.xml
44 | coverage.xml
45 | *,cover
46 |
47 | # Translations
48 | *.mo
49 |
50 | # Django stuff:
51 | *.log
52 |
53 | # Sphinx documentation
54 | docs/_build/
55 |
56 | # PyBuilder
57 | target/
58 |
59 | .idea/
60 |
61 | tags
62 |
63 | .vscode/
64 | hardcode-tray
65 | HardcodeTray/const.py
66 |
67 | # Sublime Text 3
68 | *.sublime-project
69 | *.sublime-workspace
70 |
--------------------------------------------------------------------------------
/.pylintrc:
--------------------------------------------------------------------------------
1 | [MESSAGES CONTROL]
2 | # C0103: Invalid %s name "%s"
3 | # C0413: Too few public methods
4 | # R0902: Too many instance attributes (%s/%s)
5 | # R0903: Too few public methods
6 | # R0914: Too many local variables (%s/%s)
7 | # W0406: Module import itself
8 | disable=C0103,C0413,R0902,R0903,R0914,W0401,W0406,W0614
9 |
--------------------------------------------------------------------------------
/HardcodeTray/decorators.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import path
22 |
23 | from HardcodeTray.utils import symlink_file
24 |
25 |
26 | def symlinks_installer(func):
27 | """
28 | Symlinks installation decorator
29 | """
30 | def wrapper(application, icon, icon_path):
31 | """
32 | Install symlinks easily.
33 | """
34 | func(application, icon, icon_path)
35 |
36 | if icon.has_symlinks():
37 | output_icon = path.join(str(icon_path), icon.original)
38 | for symlink_icon in icon.symlinks:
39 | symlink_icon = path.join(str(icon_path), symlink_icon)
40 | symlink_file(output_icon, symlink_icon)
41 |
42 | return wrapper
43 |
44 |
45 | def install_wrapper(func):
46 | """
47 | Install decorator
48 | """
49 | def wrapper(app):
50 | """
51 | Create backup file and apply the modifications.
52 | """
53 | from HardcodeTray.app import App
54 | if not app.backup_ignore and not App.get("backup_ignore"):
55 | app.backup.create_backup_dir()
56 |
57 | app.install_symlinks()
58 | func(app)
59 | return wrapper
60 |
61 |
62 | def revert_wrapper(func):
63 | """
64 | Revert decorator
65 | """
66 | def wrapper(app):
67 | """
68 | Revert to the old version and remove symlinks.
69 | """
70 | from HardcodeTray.app import App
71 | if app.BACKUP_IGNORE or app.backup_ignore or App.get("backup_ignore"):
72 | app.remove_symlinks()
73 | func(app)
74 | else:
75 | app.backup.select()
76 | if app.backup.selected_backup:
77 | app.remove_symlinks()
78 | func(app)
79 | else:
80 | app.success = False
81 | return wrapper
82 |
--------------------------------------------------------------------------------
/HardcodeTray/enum.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 |
22 |
23 | class Action:
24 | """
25 | Different possible actions
26 | """
27 | APPLY = 1
28 | REVERT = 2
29 | CLEAR_CACHE = 3
30 |
31 | @staticmethod
32 | def choices():
33 | """Return a dict of different choices."""
34 | choices = {}
35 | for choice in Action.__dict__:
36 | if hasattr(Action, choice):
37 | try:
38 | value = int(getattr(Action, choice))
39 | choices[value] = choice
40 | except (TypeError, ValueError):
41 | pass
42 | return choices
43 |
44 |
45 | class ConversionTools:
46 | """
47 | Supported Conversion tools
48 | """
49 | RSVGCONVERT = "RSVGConvert"
50 | CAIROSVG = "CairoSVG"
51 | SVGEXPORT = "SVGExport"
52 | IMAGEMAGICK = "ImageMagick"
53 | INKSCAPE = "Inkscape"
54 |
55 | @staticmethod
56 | def choices():
57 | """Return a dict of different choices."""
58 | choices = {}
59 | for choice in ConversionTools.__dict__:
60 | if hasattr(ConversionTools, choice):
61 | value = getattr(ConversionTools, choice)
62 | if isinstance(value, str) and choice not in ["__module__", "__doc__"]:
63 | choices[value] = choice
64 | return choices
65 |
66 |
67 | class ApplicationType:
68 | """
69 | Different Applications Type
70 | """
71 | ELECTRON = "ElectronApplication"
72 | B64ELECTRON = "B64ElectronApplication"
73 | ZIP = "ZipApplication"
74 | PAK = "PakApplication"
75 | NWJS = "NWJSApplication"
76 | QT = "QtApplication"
77 | APPLICATION = "Application"
78 |
79 | @staticmethod
80 | def choices():
81 | """Return a dict of different choices."""
82 | choices = {}
83 | for choice in ApplicationType.__dict__:
84 | if hasattr(ApplicationType, choice):
85 | value = getattr(ApplicationType, choice)
86 | if isinstance(value, str) and choice != "__module__":
87 | choices[choice.lower()] = value
88 | return choices
89 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/applications/electron.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import path
22 |
23 | from HardcodeTray.modules.applications.helpers.binary import BinaryApplication
24 | from HardcodeTray.modules.applications.helpers.asar import AsarFile
25 | from HardcodeTray.modules.log import Logger
26 | from HardcodeTray.utils import get_pngbytes
27 |
28 |
29 | class ElectronApplication(BinaryApplication):
30 | """Electron application object."""
31 |
32 | def __init__(self, parser):
33 | """Use the parent class, Application, modify only the (re)install."""
34 | BinaryApplication.__init__(self, parser)
35 |
36 | def install_icon(self, icon, icon_path):
37 | """Install the icon."""
38 | png_bytes = get_pngbytes(icon)
39 | if png_bytes:
40 | icon = ElectronApplication.get_real_path(icon.original)
41 | self.set_icon(icon, icon_path, png_bytes, True)
42 | else:
43 | Logger.error("PNG file was not found.")
44 |
45 | @staticmethod
46 | def get_real_path(icon_name):
47 | """Get real path of an icon name inside the asar file."""
48 | return "files/{0}".format("/files/".join(icon_name.split("/")))
49 |
50 | def revert_icon(self, icon, icon_path):
51 | """Revert to the original icon."""
52 | asar_icon_path = ElectronApplication.get_real_path(icon.original)
53 | backup_file = "|".join(asar_icon_path.split("/"))
54 |
55 | png_bytes = self.get_backup_file(backup_file)
56 | if png_bytes:
57 | self.set_icon(icon.original, icon_path, png_bytes)
58 | else:
59 | Logger.error("Backup file of {0} was not found".format(self.name))
60 |
61 | def set_icon(self, icon_to_replace, binary_path, png_bytes, backup=False):
62 | """Set the icon into the electron binary file."""
63 | binary_file = path.join(str(binary_path), self.binary)
64 |
65 | asar = AsarFile(binary_file)
66 | asar.write(icon_to_replace, png_bytes)
67 | if backup:
68 | backup_file = "|".join(asar.keys)
69 | content = asar.old_content
70 | if content: # in case the icon doesn't exists anymore
71 | self.backup.file(backup_file, content)
72 |
73 | self.is_corrupted = not asar.success
74 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/applications/helpers/binary.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from HardcodeTray.enum import Action
22 | from HardcodeTray.modules.applications.application import Application
23 |
24 |
25 | class BinaryApplication(Application):
26 | """Pak Application class, based on data_pak file."""
27 |
28 | def __init__(self, parser):
29 | """Init method."""
30 | Application.__init__(self, parser)
31 |
32 | self.is_corrupted = False
33 |
34 | def get_backup_file(self, icon_name):
35 | """Return the binary content of a backup file."""
36 | backup_file = self.backup.get_backup_file(icon_name)
37 |
38 | if backup_file:
39 | with open(backup_file, 'rb') as binary_obj:
40 | pngbytes = binary_obj.read()
41 | return pngbytes
42 | return None
43 |
44 | def execute(self, action):
45 | for icon_path in self.icons_path:
46 | for icon in self.icons:
47 | if self.is_corrupted:
48 | break
49 | if action == Action.APPLY:
50 | self.install_icon(icon, icon_path)
51 | elif action == Action.REVERT:
52 | self.revert_icon(icon, icon_path)
53 | self.success = not self.is_corrupted
54 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/applications/helpers/extract.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from abc import ABCMeta, abstractmethod
22 |
23 | from HardcodeTray.enum import Action
24 | from HardcodeTray.modules.applications.helpers.binary import BinaryApplication
25 |
26 |
27 | class ExtractApplication(BinaryApplication):
28 | """
29 | Extractable binary applications.
30 | """
31 | __metaclass__ = ABCMeta
32 |
33 | def __init__(self, parser):
34 | BinaryApplication.__init__(self, parser)
35 |
36 | def execute(self, action):
37 | """Execute actions: Apply/Revert."""
38 | for icon_path in self.icons_path:
39 | if self.is_corrupted:
40 | break
41 | self.extract(icon_path) # Extract the file
42 | for icon in self.icons:
43 | if action == Action.APPLY:
44 | self.install_icon(icon, self.tmp_path)
45 | elif action == Action.REVERT:
46 | self.revert_icon(icon, self.tmp_path)
47 | self.pack(icon_path) # Pack the file
48 | self.success = not self.is_corrupted
49 |
50 | @abstractmethod
51 | def extract(self, icon_path):
52 | """Extract binary file."""
53 |
54 | @abstractmethod
55 | def pack(self, icon_path):
56 | """Pack the binary file."""
57 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/applications/nwjs.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import path, remove
22 | from shutil import make_archive, move, rmtree
23 | from tempfile import gettempdir
24 |
25 | from HardcodeTray.modules.log import Logger
26 | from HardcodeTray.modules.applications.helpers.extract import ExtractApplication
27 | from HardcodeTray.utils import execute
28 |
29 |
30 | class NWJSApplication(ExtractApplication):
31 | """NodeWebKit JS Application class."""
32 |
33 | def __init__(self, parser):
34 | """Init method."""
35 | ExtractApplication.__init__(self, parser)
36 |
37 | self.tmp_path = path.join(gettempdir(),
38 | "{}_extracted".format(self.name))
39 |
40 | def extract(self, icon_path):
41 | """Extract the zip file in /tmp directory."""
42 |
43 | if path.exists(self.tmp_path):
44 | rmtree(self.tmp_path)
45 |
46 | Logger.debug("NWJS Application: Extracting of {}".format(self.binary))
47 | execute(["unzip", path.join(str(icon_path),
48 | self.binary), "-d", self.tmp_path])
49 |
50 | def pack(self, icon_path):
51 | """Recreate the zip file from the tmp directory."""
52 | from HardcodeTray.app import App
53 | nwjs_sdk = App.get("nwjs")
54 | if nwjs_sdk:
55 | binary_file = path.join(gettempdir(), self.binary)
56 |
57 | Logger.debug(
58 | "NWJS Application: Creating new archive {}".format(self.binary))
59 | make_archive(binary_file, "zip", self.tmp_path)
60 |
61 | move(binary_file + ".zip", binary_file + ".nw")
62 |
63 | local_binary_file = path.join(nwjs_sdk, self.binary)
64 |
65 | move(binary_file + ".nw", local_binary_file + ".nw")
66 |
67 | Logger.debug("NWJS Application: Creating executable file.")
68 | execute(["cat which nw " + self.binary + ".nw > " + self.binary],
69 | True, True, nwjs_sdk)
70 |
71 | remove(local_binary_file + ".nw")
72 |
73 | move(local_binary_file, path.join(str(icon_path), self.binary))
74 | execute(["chmod", "+x", path.join(str(icon_path), self.binary)])
75 |
76 | rmtree(self.tmp_path)
77 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/applications/pak.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import path
22 |
23 | from HardcodeTray.modules.applications.helpers.binary import BinaryApplication
24 | from HardcodeTray.modules.applications.helpers.data_pack import DataPack
25 | from HardcodeTray.modules.log import Logger
26 | from HardcodeTray.utils import get_pngbytes
27 |
28 |
29 | class PakApplication(BinaryApplication):
30 | """Pak Application class, based on data_pak file."""
31 |
32 | def __init__(self, parser):
33 | """Init method."""
34 | BinaryApplication.__init__(self, parser)
35 |
36 | self.binary_file = None
37 | self.pak = None
38 |
39 | def set_binary_file(self, binary_file):
40 | """Set pak file and create a new instance of it."""
41 | if binary_file != self.binary_file and path.exists(binary_file):
42 | self.binary_file = binary_file
43 | self.pak = DataPack(binary_file)
44 |
45 | def set_icon(self, icon, icon_path, pngbytes, backup=False):
46 | """Update the icon bytes with the new one."""
47 | self.set_binary_file(path.join(str(icon_path), self.binary))
48 | if self.pak:
49 | icon_name = icon.original
50 | if pngbytes and self.pak.haskey(icon_name):
51 | if backup:
52 | self.backup.file(icon_name, self.pak.get_value(icon_name))
53 |
54 | self.pak.set_value(icon_name, pngbytes)
55 | self.pak.write()
56 | else:
57 | Logger.error("Couldn't find a PNG file.")
58 | else:
59 | Logger.warning(
60 | "The file {0} was not found".format(self.binary_file))
61 |
62 | def install_icon(self, icon, icon_path):
63 | """Install the new icon."""
64 | png_bytes = get_pngbytes(icon)
65 | self.set_icon(icon, icon_path, png_bytes, True)
66 |
67 | def revert_icon(self, icon, icon_path):
68 | """Revert to the original icon."""
69 | png_bytes = self.get_backup_file(icon.original)
70 | self.set_icon(icon, icon_path, png_bytes)
71 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/applications/qt.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import path
22 | from shutil import rmtree
23 |
24 | from HardcodeTray.decorators import revert_wrapper, symlinks_installer
25 | from HardcodeTray.modules.log import Logger
26 | from HardcodeTray.modules.applications.application import Application
27 | from HardcodeTray.utils import symlink_file
28 |
29 |
30 | class QtApplication(Application):
31 | """Qt application, works only with the patched version of sni-qt."""
32 | BACKUP_IGNORE = True
33 |
34 | def __init__(self, parser):
35 | """Init method."""
36 | Application.__init__(self, parser)
37 |
38 | @symlinks_installer
39 | def install_icon(self, icon, icon_path):
40 | """Install icon to the current directory."""
41 | icon.original = "{}.{}".format(icon.original,
42 | icon.theme_ext)
43 |
44 | base_icon = icon.original
45 | theme_icon = icon.theme
46 | output_icon = path.join(str(icon_path), base_icon)
47 | symlink_file(theme_icon, output_icon)
48 |
49 | @revert_wrapper
50 | def reinstall(self):
51 | """Overwrite the reinstall function, and remove the whole dir."""
52 | done = False
53 | for icon_path in self.icons_path:
54 | icon_path = str(icon_path)
55 | if path.isdir(icon_path):
56 | rmtree(icon_path)
57 | Logger.debug("Qt Application: Reverting"
58 | " {} is done.".format(self.name))
59 | done = True
60 | if not done:
61 | Logger.debug("Qt Application: Reverting "
62 | "{} is not done.".format(self.name))
63 | self.success = done
64 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/applications/zip.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import makedirs, path, remove
22 | from shutil import make_archive, rmtree
23 | from tempfile import gettempdir
24 | from zipfile import ZipFile
25 |
26 | from HardcodeTray.modules.log import Logger
27 | from HardcodeTray.modules.applications.helpers.extract import ExtractApplication
28 |
29 |
30 | class ZipApplication(ExtractApplication):
31 | """Zip Application class."""
32 |
33 | def __init__(self, parser):
34 | """Init method."""
35 | ExtractApplication.__init__(self, parser)
36 |
37 | self.tmp_path = path.join(gettempdir(), "_{}".format(self.name))
38 |
39 | def extract(self, icon_path):
40 | """Extract the zip file in /tmp directory."""
41 | if path.exists(self.tmp_path):
42 | rmtree(self.tmp_path)
43 |
44 | makedirs(self.tmp_path, exist_ok=True)
45 |
46 | Logger.debug("Zip Application: Extracting of "
47 | "{} started".format(self.binary))
48 |
49 | with ZipFile(path.join(str(icon_path), self.binary)) as zip_object:
50 | zip_object.extractall(self.tmp_path)
51 |
52 | Logger.debug("Zip Application: Extracting is done.")
53 |
54 | def pack(self, icon_path):
55 | """Recreate the zip file from the tmp directory."""
56 | zip_file = path.join(str(icon_path), self.binary)
57 |
58 | if path.isfile(zip_file):
59 | Logger.debug("Zip Application: Removing "
60 | "old binary file {}".format(zip_file))
61 | remove(zip_file)
62 |
63 | make_archive(zip_file.replace(".zip", ""), 'zip', self.tmp_path)
64 | Logger.debug("Zip Application: Creating a new zip archive.")
65 |
66 | if path.exists(self.tmp_path):
67 | rmtree(self.tmp_path)
68 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/config/system.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from gettext import gettext as _
22 |
23 | from gi import require_version
24 | require_version("Gtk", "3.0")
25 | from gi.repository import Gtk
26 |
27 | from HardcodeTray.const import DESKTOP_ENV
28 | from HardcodeTray.utils import (get_gnome_scaling_factor,
29 | get_kde_scaling_factor,
30 | get_cinnamon_scaling_factor)
31 | from HardcodeTray.modules.log import Logger
32 | from HardcodeTray.modules.theme import Theme
33 |
34 |
35 | class SystemConfig:
36 | """Read your system config."""
37 |
38 | @staticmethod
39 | def icon_size():
40 | """Return the icon size."""
41 | if DESKTOP_ENV in ("pantheon", "xfce"):
42 | icon_size = 24
43 | else:
44 | icon_size = 22
45 | Logger.debug("System/Icon Size: {}".format(icon_size))
46 | return icon_size
47 |
48 | @staticmethod
49 | def scaling_factor():
50 | """Return the scaling factor."""
51 | scaling_factor = 1
52 | # Scaling factor on GNOME desktop
53 | if DESKTOP_ENV == "gnome":
54 | scaling_factor = get_gnome_scaling_factor()
55 | # Cinnamon scaling factor
56 | elif DESKTOP_ENV == "cinnamon":
57 | scaling_factor = get_cinnamon_scaling_factor()
58 | # Scaling factor on KDE Desktop
59 | elif DESKTOP_ENV == "kde":
60 | scaling_factor = get_kde_scaling_factor()
61 |
62 | return scaling_factor
63 |
64 | @staticmethod
65 | def theme():
66 | """Return a theme object."""
67 | theme_name = Gtk.Settings.get_default().get_property("gtk-icon-theme-name")
68 | theme = None
69 | if theme_name:
70 | Logger.debug("System/Theme: {}".format(theme_name))
71 | theme = Theme(theme_name)
72 | else:
73 | Logger.error("System/Theme: Not detected.")
74 | return theme
75 |
76 | @staticmethod
77 | def action():
78 | """Return the action to be done."""
79 | from HardcodeTray.enum import Action
80 | print(_("1 - Apply"))
81 | print(_("2 - Revert"))
82 | print(_("3 - Clear Backup Cache"))
83 | has_chosen = False
84 | while not has_chosen:
85 | try:
86 | action = int(input(_("Please choose: ")))
87 | if action not in Action.choices():
88 | print(_("Please try again"))
89 | else:
90 | has_chosen = True
91 | return action
92 | except ValueError:
93 | print(_("Please choose a valid value!"))
94 | except KeyboardInterrupt:
95 | exit("")
96 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/log.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | import logging
22 | from os import makedirs, path
23 | from tempfile import gettempdir
24 | from time import strftime
25 |
26 |
27 | class Logger:
28 | """
29 | Logger class, logs error and other messages on /tmp/Hardcode-Tray.
30 | """
31 | FORMAT = "[%(levelname)-s] %(asctime)s %(message)s"
32 | DATE = "%Y-%m-%d %H:%M:%S"
33 | PATH = path.join(gettempdir(), "Hardcode-Tray")
34 | _log = None
35 |
36 | @staticmethod
37 | def get_default():
38 | """Return default instance of Logger."""
39 | if Logger._log is None:
40 | from HardcodeTray.const import LOG_FILE_FORMAT
41 | logger = logging.getLogger('hardcode-tray')
42 |
43 | log_file = "{}.log".format(strftime(LOG_FILE_FORMAT))
44 | tmp_file = path.join(Logger.PATH, log_file)
45 |
46 | if not path.exists(path.dirname(tmp_file)):
47 | makedirs(path.dirname(tmp_file))
48 |
49 | if not path.exists(tmp_file):
50 | with open(tmp_file, 'w') as tmp_obj:
51 | tmp_obj.write('')
52 |
53 | handler = logging.FileHandler(tmp_file)
54 | formater = logging.Formatter(Logger.FORMAT, Logger.DATE)
55 | handler.setFormatter(formater)
56 | logger.addHandler(handler)
57 | logger.setLevel(logging.DEBUG)
58 |
59 | Logger._log = logging.getLogger("hardcode-tray")
60 | return Logger._log
61 |
62 | @staticmethod
63 | def warning(msg):
64 | """Log warning message."""
65 | Logger.get_default().warning(msg)
66 |
67 | @staticmethod
68 | def debug(msg):
69 | """Log debug message."""
70 | Logger.get_default().debug(msg)
71 |
72 | @staticmethod
73 | def info(msg):
74 | """Log info message."""
75 | Logger.get_default().info(msg)
76 |
77 | @staticmethod
78 | def error(msg):
79 | """Log error message."""
80 | Logger.get_default().error(msg)
81 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/svg/cairosvg.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from __future__ import absolute_import
22 | from io import BytesIO
23 |
24 | from HardcodeTray.modules.svg.svg import SVG, SVGNotInstalled
25 |
26 | try:
27 | from cairosvg import svg2png
28 | from cairo import ImageSurface, FORMAT_ARGB32, Context
29 | from gi import require_version
30 | require_version('Rsvg', '2.0')
31 | from gi.repository import Rsvg
32 | CAIRO_IS_INSTALLED = True
33 | except (ImportError, AttributeError, ValueError):
34 | CAIRO_IS_INSTALLED = False
35 |
36 |
37 | class CairoSVG(SVG):
38 | """Cairo implemntation of SVG Interface."""
39 |
40 | def __init__(self, colors):
41 | """Init function."""
42 | super(CairoSVG, self).__init__(colors)
43 |
44 | if not CairoSVG.is_installed():
45 | raise SVGNotInstalled
46 |
47 | @staticmethod
48 | def convert_to_png(input_file, output_file, width=None, height=None):
49 | """Convert svg to png."""
50 | if width and height:
51 | handle = Rsvg.Handle()
52 | svg = handle.new_from_file(input_file)
53 | dim = svg.get_dimensions()
54 |
55 | img = ImageSurface(FORMAT_ARGB32, width, height)
56 | ctx = Context(img)
57 | ctx.scale(width / dim.width, height / dim.height)
58 | svg.render_cairo(ctx)
59 |
60 | png_io = BytesIO()
61 | img.write_to_png(png_io)
62 | with open(output_file, 'wb') as fout:
63 | fout.write(png_io.getvalue())
64 | fout.close()
65 | svg.close()
66 | png_io.close()
67 | img.finish()
68 | else:
69 | with open(input_file, "r") as content_file:
70 | svg = content_file.read()
71 | content_file.close()
72 | fout = open(output_file, "wb")
73 | svg2png(bytestring=bytes(svg, "UTF-8"), write_to=fout)
74 | fout.close()
75 |
76 | @staticmethod
77 | def is_installed():
78 | """Check if Cairo is installed or not."""
79 | return CAIRO_IS_INSTALLED
80 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/svg/imagemagick.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from HardcodeTray.modules.svg.svg import SVG, SVGNotInstalled
22 | from HardcodeTray.utils import execute
23 |
24 |
25 | class ImageMagick(SVG):
26 | """Inkscape implemntation of SVG Interface."""
27 |
28 | def __init__(self, colors):
29 | """Init function."""
30 | super(ImageMagick, self).__init__(colors)
31 |
32 | self.cmd = "convert"
33 | if not self.is_installed():
34 | raise SVGNotInstalled
35 |
36 | def convert_to_png(self, input_file, output_file, width=None, height=None):
37 | """Convert svg to png."""
38 | cmd = [self.cmd, "-background", "none"]
39 |
40 | if width and height:
41 | cmd.extend(["-resize", "{0}x{1}".format(str(width), str(height))])
42 |
43 | cmd.extend([input_file, output_file])
44 |
45 | execute(cmd, True, False)
46 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/svg/inkscape.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from HardcodeTray.modules.svg.svg import SVG, SVGNotInstalled
22 | from HardcodeTray.utils import execute
23 |
24 |
25 | class Inkscape(SVG):
26 | """Inkscape implemntation of SVG Interface."""
27 |
28 | def __init__(self, colors):
29 | """Init function."""
30 | super(Inkscape, self).__init__(colors)
31 |
32 | self.cmd = "inkscape"
33 | if not self.is_installed():
34 | raise SVGNotInstalled
35 |
36 | def convert_to_png(self, input_file, output_file, width=None, height=None):
37 | """Convert svg to png."""
38 | cmd = [self.cmd, "-z", "-f", input_file, "-e", output_file]
39 |
40 | if width and height:
41 | cmd.extend(["-w", str(width), "-h", str(height)])
42 |
43 | # Fix for inkscape 0.92
44 | execute(cmd, False)
45 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/svg/rsvgconvert.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from HardcodeTray.modules.svg.svg import SVG, SVGNotInstalled
22 | from HardcodeTray.utils import execute
23 |
24 |
25 | class RSVGConvert(SVG):
26 | """Inkscape implemntation of SVG Interface."""
27 |
28 | def __init__(self, colors):
29 | """Init function."""
30 | super(RSVGConvert, self).__init__(colors)
31 |
32 | self.cmd = "rsvg-convert"
33 | if not self.is_installed():
34 | raise SVGNotInstalled
35 |
36 | def convert_to_png(self, input_file, output_file, width=None, height=None):
37 | """Convert svg to png."""
38 | cmd = [self.cmd, "-f", "png", "-o", output_file]
39 |
40 | if width and height:
41 | cmd.extend(["-w", str(width), "-h", str(height)])
42 |
43 | cmd.append(input_file)
44 |
45 | execute(cmd)
46 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/svg/svgexport.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from HardcodeTray.modules.svg.svg import SVG, SVGNotInstalled
22 | from HardcodeTray.utils import execute
23 |
24 |
25 | class SVGExport(SVG):
26 | """Inkscape implemntation of SVG Interface."""
27 |
28 | def __init__(self, colors):
29 | """Init function."""
30 | super(SVGExport, self).__init__(colors)
31 |
32 | self.cmd = "svgexport"
33 | if not self.is_installed():
34 | raise SVGNotInstalled
35 |
36 | def convert_to_png(self, input_file, output_file, width=None, height=None):
37 | """Convert svg to png."""
38 | cmd = [self.cmd, input_file, output_file]
39 |
40 | if width and height:
41 | cmd.extend(["{0}:{1}".format(str(width), str(height))])
42 |
43 | cmd.extend([input_file, output_file])
44 |
45 | execute(cmd)
46 |
--------------------------------------------------------------------------------
/HardcodeTray/modules/theme.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from gettext import gettext as _
22 |
23 | from HardcodeTray.const import THEMES_LIST
24 | from gi import require_version
25 | require_version("Gtk", "3.0")
26 | from gi.repository import Gtk
27 |
28 |
29 | class Theme(Gtk.IconTheme):
30 | """Easy way to create new themes based on the theme name."""
31 |
32 | def __init__(self, theme_name):
33 | if theme_name not in THEMES_LIST:
34 | exit(_("Theme {} does not exists.").format(theme_name))
35 |
36 | self._name = theme_name
37 | Gtk.IconTheme.__init__(self)
38 | self.set_custom_theme(self.name)
39 |
40 | @staticmethod
41 | def new_with_dark_light(dark_theme, light_theme):
42 | """Create a new theme object by specifing the dark & light theme."""
43 | theme = {
44 | "dark": Theme(dark_theme),
45 | "light": Theme(light_theme)
46 | }
47 | return theme
48 |
49 | @property
50 | def name(self):
51 | """Property: name."""
52 | return self._name
53 |
54 | def __getattr__(self, item):
55 | if isinstance(self.name, dict):
56 | return self.name[item]
57 |
58 | def __repr__(self, *args):
59 | return self.name
60 |
--------------------------------------------------------------------------------
/HardcodeTray/path.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 |
22 | from os import path
23 |
24 |
25 | def discord_callback(directory):
26 | """
27 | Correct the hardcoded discord directory.
28 |
29 | Args:
30 | directory(str): the default discord config directory
31 | """
32 | if path.isdir(directory):
33 | return path.isdir(path.join(directory, 'modules/discord_desktop_core'))
34 | return False
35 |
36 |
37 | def dropbox_callback(directory):
38 | """
39 | Correct the hardcoded dropbox directory.
40 |
41 | Args:
42 | directory(str): the default dropbox directory
43 | """
44 | if path.isdir(directory):
45 | sub_dir = directory.split(path.sep)
46 | return len(sub_dir) > 1 and sub_dir[-2].lower().startswith("dropbox-")
47 | return False
48 |
--------------------------------------------------------------------------------
/HardcodeTray/tools.py:
--------------------------------------------------------------------------------
1 | """
2 | Fixes Hardcoded tray icons in Linux.
3 |
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import environ, listdir, path
22 |
23 | from HardcodeTray.modules.log import Logger
24 |
25 |
26 | def detect_de(de_list):
27 | """Detect the desktop environment, used to choose the proper icons size."""
28 | try:
29 | desktop_env = [environ.get("DESKTOP_SESSION", "").lower(),
30 | environ.get("XDG_CURRENT_DESKTOP", "").lower()]
31 | except AttributeError:
32 | desktop_env = []
33 |
34 | for desktop in desktop_env:
35 | if desktop in de_list:
36 | Logger.debug("DE: {0}".format(desktop.title()))
37 | return desktop
38 | elif desktop == "gnome-xorg":
39 | Logger.debug("DE: {0} (falling back to gnome)".format(desktop.title()))
40 | return "gnome"
41 | Logger.debug("DE not detected.")
42 | return "other"
43 |
44 |
45 | def get_themes(userhome):
46 | """Return a list of installed icon themes."""
47 | paths = ["/usr/share/icons/",
48 | "{}/.local/share/icons/".format(userhome),
49 | "{}/.icons/".format(userhome)]
50 | themes = []
51 | for icon_path in paths:
52 | try:
53 | sub_dirs = listdir(icon_path)
54 | for theme in sub_dirs:
55 | theme_path = path.join(icon_path, theme, "index.theme")
56 | if path.exists(theme_path) and theme not in themes:
57 | themes.append(theme)
58 | except FileNotFoundError:
59 | pass
60 | return sorted(themes)
61 |
--------------------------------------------------------------------------------
/LICENSE.BSD-3-Clause:
--------------------------------------------------------------------------------
1 | license/BSD
--------------------------------------------------------------------------------
/LICENSE.GPL-3.0:
--------------------------------------------------------------------------------
1 | license/GPL
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
1 | license/README.md
--------------------------------------------------------------------------------
/circle.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | jobs:
3 | build:
4 | docker:
5 | - image: fedora:latest
6 | working_directory: ~/Hardcode-Tray
7 | steps:
8 | - run: >
9 | dnf -y install
10 | gettext
11 | libffi
12 | gobject-introspection-devel
13 | gtk3-devel
14 | meson
15 | ninja-build
16 | pylint
17 | python-cffi
18 | python3-gobject
19 | python-pip
20 | - checkout
21 | - run: python3 -m pip install --user jsonschema
22 | - run: meson builddir
23 | - run: ninja -C builddir install
24 | - run: python3 ./tests/database/database.py
25 | # - run: sh ./tests/pylint.sh
26 |
--------------------------------------------------------------------------------
/const.py.in:
--------------------------------------------------------------------------------
1 | # pylint: skip-file
2 | """
3 | Fixes Hardcoded tray icons in Linux.
4 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
5 | Contributors : Andreas Angerer, Joshua Fogg
6 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
7 | Licence : The script is released under GPL, uses a modified script
8 | form Chromium project released under BSD license
9 | This file is part of Hardcode-Tray.
10 | Hardcode-Tray is free software: you can redistribute it and/or
11 | modify it under the terms of the GNU General Public License as published
12 | by the Free Software Foundation, either version 3 of the License, or
13 | (at your option) any later version.
14 | Hardcode-Tray is distributed in the hope that it will be useful,
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 | GNU General Public License for more details.
18 | You should have received a copy of the GNU General Public License
19 | along with Hardcode-Tray. If not, see .
20 | """
21 | from os import getenv, path
22 | from platform import machine
23 |
24 | from HardcodeTray.tools import detect_de, get_themes
25 |
26 | DB_FOLDER = path.join("@DATA_DIR@", "database", "")
27 | USERNAME = getenv("SUDO_USER") or getenv("USER")
28 | USERHOME = path.expanduser("~" + USERNAME)
29 | BACKUP_FOLDER = path.join(USERHOME, ".config", "Hardcode-Tray", "")
30 | CONFIG_FILE = path.join(USERHOME, ".config", "hardcode-tray.json")
31 | KDE_CONFIG_FILE = path.join(USERHOME, ".config",
32 | "plasma-org.kde.plasma.desktop-appletsrc")
33 | BACKUP_FILE_FORMAT = "%Y-%m-%d %H:%M:%S"
34 | LOG_FILE_FORMAT = "%Y-%m-%d %H:%M:%S"
35 | ARCH = machine()
36 | THEMES_LIST = get_themes(USERHOME)
37 | DE = ["i3", "cinnamon", "budgie", "deepin", "pantheon",
38 | "gnome", "kde", "unity", "mate", "xfce"]
39 | DESKTOP_ENV = detect_de(DE)
40 | ICONS_SIZE = [16, 22, 24]
41 |
--------------------------------------------------------------------------------
/data/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "blacklist": ["telegram", "hangouts"],
3 | "icons": {
4 | "theme": "Numix",
5 | "size": 24
6 | },
7 | "conversion_tool": "CairoSVG",
8 | "backup_ignore": true,
9 | "nwjs": "/home/myusername/Tools/nwjs/",
10 | "scaling_factor": 1
11 | }
12 |
--------------------------------------------------------------------------------
/data/database/1password.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "1Password",
3 | "app_path": [
4 | "/opt/1Password/"
5 | ],
6 | "icons_path": [
7 | "/opt/1Password/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray-unlocked": {
13 | "original": "images/tray_unlocked.png",
14 | "theme": "1password-panel"
15 | },
16 | "tray-locked": {
17 | "original": "images/tray_locked.png",
18 | "theme": "1password-panel-locked"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/acestream.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AceStream Engine",
3 | "app_path": [
4 | "/opt/acestream/"
5 | ],
6 | "icons_path": [
7 | "/opt/acestream/data/images/"
8 | ],
9 | "icons": {
10 | "tray16": {
11 | "original": "acestream16.png",
12 | "theme": "acestream-tray"
13 | },
14 | "tray32": {
15 | "original": "acestream32.png",
16 | "theme": "acestream-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/anatine.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Anatine",
3 | "app_path": [
4 | "/usr/share/anatine/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/anatine/resources/app/media/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "IconTray.png",
12 | "theme": "anatine-indicator"
13 | },
14 | "indicator@2x": {
15 | "original": "IconTray@2x.png",
16 | "theme": "anatine-indicator"
17 | },
18 | "notification": {
19 | "original": "IconTrayUnread.png",
20 | "theme": "anatine-notification"
21 | },
22 | "notification@2x": {
23 | "original": "IconTrayUnread@2x.png",
24 | "theme": "anatine-notification"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/data/database/android-messages-desktop.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Android Messages Desktop",
3 | "app_path": [
4 | "/opt/Android Messages/",
5 | "/usr/lib/android-messages-desktop"
6 | ],
7 | "icons_path": [
8 | "/opt/Android Messages/resources/",
9 | "/usr/lib/android-messages-desktop/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "resources/tray/icon.png",
16 | "theme": "android-messages-desktop-tray"
17 | },
18 | "tray-unread": {
19 | "original": "resources/tray/unread_icon.png",
20 | "theme": "android-messages-desktop-tray-unread"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/ao.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ao",
3 | "app_path": [
4 | "/opt/Ao/"
5 | ],
6 | "icons_path": [
7 | "/opt/Ao/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "static/IconTray.png",
14 | "theme": "ao-app-tray"
15 | },
16 | "tray@2x": {
17 | "original": "static/IconTray@2x.png",
18 | "theme": "ao-app-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/bauh.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Bauh",
3 | "app_path": [
4 | "/usr/lib/python3.10/site-packages/bauh/",
5 | "/usr/lib/python3.9/site-packages/bauh/",
6 | "/usr/lib/python3.8/site-packages/bauh/",
7 | "/usr/lib/python3.7/site-packages/bauh/",
8 | "/usr/lib/python3.6/site-packages/bauh/",
9 | "/usr/local/lib/python3.10/dist-packages/bauh/",
10 | "/usr/local/lib/python3.9/dist-packages/bauh/",
11 | "/usr/local/lib/python3.8/dist-packages/bauh/",
12 | "/usr/local/lib/python3.7/dist-packages/bauh/",
13 | "/usr/local/lib/python3.6/dist-packages/bauh/"
14 | ],
15 | "icons_path": [
16 | "/usr/lib/python3.10/site-packages/bauh/view/resources/img/",
17 | "/usr/lib/python3.9/site-packages/bauh/view/resources/img/",
18 | "/usr/lib/python3.8/site-packages/bauh/view/resources/img/",
19 | "/usr/lib/python3.7/site-packages/bauh/view/resources/img/",
20 | "/usr/lib/python3.6/site-packages/bauh/view/resources/img/",
21 | "/usr/local/lib/python3.10/dist-packages/bauh/view/resources/img/",
22 | "/usr/local/lib/python3.9/dist-packages/bauh/view/resources/img/",
23 | "/usr/local/lib/python3.8/dist-packages/bauh/view/resources/img/",
24 | "/usr/local/lib/python3.7/dist-packages/bauh/view/resources/img/",
25 | "/usr/local/lib/python3.6/dist-packages/bauh/view/resources/img/"
26 | ],
27 | "icons": {
28 | "tray": {
29 | "original": "logo.svg",
30 | "theme": "bauh-tray"
31 | },
32 | "tray-update": {
33 | "original": "logo_update.svg",
34 | "theme": "bauh-update-tray"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/bitwarden.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Bitwarden",
3 | "app_path": [
4 | "/opt/Bitwarden/",
5 | "/usr/lib/bitwarden/",
6 | "/var/lib/flatpak/app/com.bitwarden.desktop/"
7 | ],
8 | "icons_path": [
9 | "/opt/Bitwarden/resources/",
10 | "/usr/lib/bitwarden/resources/",
11 | "/var/lib/flatpak/app/com.bitwarden.desktop/current/active/files/Bitwarden/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "images/icon.png",
18 | "theme": "bitwarden-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/bluemail.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "BlueMail",
3 | "app_path": [
4 | "/opt/BlueMail/",
5 | "/opt/bluemail/"
6 | ],
7 | "icons_path": [
8 | "/opt/BlueMail/resources/",
9 | "/opt/bluemail/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "icon.png",
16 | "theme": "bluemail-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/brave.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Brave",
3 | "app_path": [
4 | "/opt/brave.com/brave/",
5 | "/opt/brave.com/brave-dev/",
6 | "/opt/brave.com/brave-nightly/",
7 | "/opt/brave.com/brave-beta/",
8 | "/usr/lib/brave-bin/",
9 | "/usr/lib/brave-dev-bin/",
10 | "/usr/lib/brave-beta-bin/",
11 | "/usr/lib/brave-nightly-bin/",
12 | "/usr/lib/brave/"
13 | ],
14 | "icons_path": [
15 | "/opt/brave.com/brave/",
16 | "/opt/brave.com/brave-dev/",
17 | "/opt/brave.com/brave-nightly/",
18 | "/opt/brave.com/brave-beta/",
19 | "/usr/lib/brave-bin/",
20 | "/usr/lib/brave-dev-bin/",
21 | "/usr/lib/brave-beta-bin/",
22 | "/usr/lib/brave-nightly-bin/",
23 | "/usr/lib/brave/"
24 |
25 | ],
26 | "script": "pak",
27 | "binary": "resources.pak",
28 | "icons": {
29 | "tray-1.9": {
30 | "original": "9151",
31 | "theme": "brave-tray"
32 | },
33 | "tray-1.12": {
34 | "original": "10151",
35 | "theme": "brave-tray"
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/data/database/calendar-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Calendar Indicator",
3 | "app_path": [
4 | "/opt/extras.ubuntu.com/calendar-indicator/"
5 | ],
6 | "icons_path": [
7 | "/opt/extras.ubuntu.com/calendar-indicator/share/calendar-indicator/icons/"
8 | ],
9 | "icons": [
10 | "{1-31}-dark-normal.svg",
11 | "{1-31}-dark-starred.svg",
12 | "{1-31}-light-normal.svg",
13 | "{1-31}-light-starred.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/caprine.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Caprine",
3 | "app_path": [
4 | "/usr/share/caprine/",
5 | "/usr/lib64/caprine/",
6 | "/opt/Caprine/",
7 | "/var/lib/flatpak/app/com.sindresorhus.Caprine"
8 | ],
9 | "icons_path": [
10 | "/usr/share/caprine/resources/",
11 | "/usr/lib64/caprine/resources/",
12 | "/opt/Caprine/resources/",
13 | "/var/lib/flatpak/app/com.sindresorhus.Caprine/current/active/files/main/resources/"
14 | ],
15 | "binary": "app.asar",
16 | "script": "electron",
17 | "icons": {
18 | "static-tray": {
19 | "original": "static/IconTray.png",
20 | "theme": "messenger-indicator"
21 | },
22 | "static-tray@2x": {
23 | "original": "static/IconTray@2x.png",
24 | "theme": "messenger-indicator"
25 | },
26 | "tray": {
27 | "original": "media/IconTray.png",
28 | "theme": "messenger-indicator"
29 | },
30 | "tray@2x": {
31 | "original": "media/IconTray@2x.png",
32 | "theme": "messenger-indicator"
33 | },
34 | "tray@4x": {
35 | "original": "media/IconTray@4x.png",
36 | "theme": "messenger-indicator"
37 | },
38 | "trayUnread": {
39 | "original": "media/IconTrayUnread.png",
40 | "theme": "messenger-notification"
41 | },
42 | "trayUnread@2x": {
43 | "original": "media/IconTrayUnread@2x.png",
44 | "theme": "messenger-notification"
45 | },
46 | "trayUnread-static": {
47 | "original": "static/IconTrayUnread.png",
48 | "theme": "messenger-notification"
49 | },
50 | "trayUnread@2x-static": {
51 | "original": "static/IconTrayUnread@2x.png",
52 | "theme": "messenger-notification"
53 | },
54 | "trayUnread@4x": {
55 | "original": "media/IconTrayUnread@4x.png",
56 | "theme": "messenger-notification"
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/data/database/caprine.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Caprine",
3 | "app_path": [
4 | "/usr/lib/caprine/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/caprine/static/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "IconTray.png",
12 | "theme": "messenger-indicator"
13 | },
14 | "tray@2x": {
15 | "original": "IconTray@2x.png",
16 | "theme": "messenger-indicator"
17 | },
18 | "tray@4x": {
19 | "original": "IconTray@4x.png",
20 | "theme": "messenger-indicator"
21 | },
22 | "trayUnread": {
23 | "original": "IconTrayUnread.png",
24 | "theme": "messenger-notification"
25 | },
26 | "trayUnread@2x": {
27 | "original": "IconTrayUnread@2x.png",
28 | "theme": "messenger-notification"
29 | },
30 | "trayUnread@4x": {
31 | "original": "IconTrayUnread@4x.png",
32 | "theme": "messenger-notification"
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/data/database/catch-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Catch Indicator",
3 | "app_path": [
4 | "/usr/share/catch-indicator/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/catch-indicator/icons/"
8 | ],
9 | "icons": [
10 | "catch-indicator-dark-starred.svg",
11 | "catch-indicator-dark-normal.svg",
12 | "catch-indicator-light-starred.svg",
13 | "catch-indicator-light-normal.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/china-weather.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "China Weather",
3 | "app_path": [
4 | "/usr/share/indicator/china/weather/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/indicator/china/weather/data/media/"
8 | ],
9 | "icons": {
10 | "clear": {
11 | "original": "icon_china_weather.png",
12 | "theme": "weather-clear"
13 | },
14 | "server-alert": {
15 | "original": "icon_connection_error.png",
16 | "theme": "weather-server-alert"
17 | },
18 | "none-available": {
19 | "original": "icon_unknown_condition.png",
20 | "theme": "weather-none-available"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/chromium.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Chromium",
3 | "app_path": [
4 | "/usr/lib/chromium-browser/",
5 | "/usr/lib64/chromium-browser/",
6 | "/usr/lib/chromium-dev/",
7 | "/usr/lib/chromium/",
8 | "/var/lib/flatpak/app/org.chromium.Chromium/"
9 | ],
10 | "icons_path": [
11 | "/usr/lib/chromium-browser/",
12 | "/usr/lib64/chromium-browser/",
13 | "/usr/lib/chromium-dev/",
14 | "/usr/lib/chromium/",
15 | "/var/lib/flatpak/app/org.chromium.Chromium/current/active/files/chromium/"
16 | ],
17 | "script": "pak",
18 | "binary": "resources.pak",
19 | "icons": {
20 | "tray": {
21 | "original": "8003",
22 | "theme": "google-chrome-tray"
23 | },
24 | "tray-56": {
25 | "original": "10153",
26 | "theme": "google-chrome-tray"
27 | },
28 | "tray-60-dev": {
29 | "original": "10154",
30 | "theme": "google-chrome-tray"
31 | },
32 | "tray-64": {
33 | "original": "10156",
34 | "theme": "google-chrome-tray"
35 | },
36 | "tray-68": {
37 | "original": "10158",
38 | "theme": "google-chrome-tray"
39 | },
40 | "tray-77": {
41 | "original": "10151",
42 | "theme": "google-chrome-tray"
43 | },
44 | "tray-80": {
45 | "original": "9151",
46 | "theme": "google-chrome-tray"
47 | },
48 | "tray-93": {
49 | "original": "11151",
50 | "theme": "google-chrome-tray"
51 | },
52 | "tray-105": {
53 | "original": "12151",
54 | "theme": "google-chrome-tray"
55 | },
56 | "tray-106": {
57 | "original": "13151",
58 | "theme": "google-chrome-tray"
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/data/database/cisco-anyconnect.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Cisco AnyConnect",
3 | "app_path": [
4 | "/opt/cisco/anyconnect/bin/vpnui"
5 | ],
6 | "icons_path": [
7 | "/opt/cisco/anyconnect/pixmaps/"
8 | ],
9 | "icons": {
10 | "connected": {
11 | "original": "systray_connected.png",
12 | "theme": "cisco-tray-connected"
13 | },
14 | "notconnected": {
15 | "original": "systray_notconnected.png",
16 | "theme": "cisco-tray-notconnected"
17 | },
18 | "disconnecting": {
19 | "original": "systray_disconnecting.png",
20 | "theme": "cisco-tray-disconnecting"
21 | },
22 | "reconnecting": {
23 | "original": "systray_reconnecting.png",
24 | "theme": "cisco-tray-reconnecting"
25 | },
26 | "quarantined": {
27 | "original": "systray_quarantined.png",
28 | "theme": "cisco-tray-quarantined"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/data/database/clockify.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Clockify",
3 | "app_path": [
4 | "/opt/Clockify/"
5 | ],
6 | "icons_path": [
7 | "/opt/Clockify/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray-unlocked": {
13 | "original": "assets/icons/blue.png",
14 | "theme": "clockify-blue"
15 | },
16 | "tray-locked": {
17 | "original": "assets/icons/white.png",
18 | "theme": "clockify-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/cpod.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "CPod",
3 | "app_path": [
4 | "/opt/CPod/",
5 | "/usr/share/cpod/",
6 | "/var/lib/flatpak/app/com.github.z.Cumulonimbus/"
7 | ],
8 | "icons_path": [
9 | "/opt/CPod/resources/",
10 | "/usr/share/cpod/resources/",
11 | "/var/lib/flatpak/app/com.github.z.Cumulonimbus/current/active/files/bin/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "build/icon.png",
18 | "theme": "cpod-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/cryptfolder-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Cryptfolder Indicator",
3 | "app_path": [
4 | "/opt/extras.ubuntu.com/cryptfolder-indicator/"
5 | ],
6 | "icons_path": [
7 | "/opt/extras.ubuntu.com/cryptfolder-indicator/share/cryptfolder-indicator/icons/"
8 | ],
9 | "icons": [
10 | "cryptfolder-closed-dark.svg",
11 | "cryptfolder-indicator-dark.svg",
12 | "cryptfolder-indicator-light.svg",
13 | "cryptfolder-open-light.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/deltachat.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "DeltaChat",
3 | "app_path": [
4 | "/opt/DeltaChat/"
5 | ],
6 | "icons_path": [
7 | "/opt/DeltaChat/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "images/deltachat.png",
14 | "theme": "deltachat-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/deltachat.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "DeltaChat",
3 | "app_path": [
4 | "/opt/DeltaChat/",
5 | "/var/lib/flatpak/app/chat.delta.desktop/"
6 | ],
7 | "icons_path": [
8 | "/opt/DeltaChat/electron_app/images/",
9 | "/var/lib/flatpak/app/chat.delta.desktop/current/active/files/delta/resources/app/images/"
10 | ],
11 | "icons": {
12 | "tray": {
13 | "original": "deltachat.png",
14 | "theme": "deltachat-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/devhub.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "DevHub",
3 | "app_path": [
4 | "/opt/devhub/"
5 | ],
6 | "icons_path": [
7 | "/opt/devhub/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "assets/icons/trayIconWhite.png",
14 | "theme": "devhub-tray"
15 | },
16 | "notification": {
17 | "original": "assets/icons/trayIconWhiteWithBadge.png",
18 | "theme": "devhub-notification"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/discord-canary.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Discord Canary",
3 | "app_path": [
4 | "{userhome}/.config/discordcanary"
5 | ],
6 | "icons_path": [
7 | "{userhome}/.config/discordcanary/{discord}/modules/discord_desktop_core/"
8 | ],
9 | "binary": "core.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "app/images/systemtray/linux/tray.png",
14 | "theme": "discord-tray"
15 | },
16 | "tray-unread": {
17 | "original": "app/images/systemtray/linux/tray-unread.png",
18 | "theme": "discord-tray-unread"
19 | },
20 | "tray-connected": {
21 | "original": "app/images/systemtray/linux/tray-connected.png",
22 | "theme": "discord-tray-connected"
23 | },
24 | "tray-deafended": {
25 | "original": "app/images/systemtray/linux/tray-deafened.png",
26 | "theme": "discord-tray-deafened"
27 | },
28 | "tray-muted": {
29 | "original": "app/images/systemtray/linux/tray-muted.png",
30 | "theme": "discord-tray-muted"
31 | },
32 | "tray-speaking": {
33 | "original": "app/images/systemtray/linux/tray-speaking.png",
34 | "theme": "discord-tray-speaking"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/discord.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Discord",
3 | "app_path": [
4 | "{userhome}/.config/discord",
5 | "{userhome}/.var/app/com.discordapp.Discord"
6 | ],
7 | "icons_path": [
8 | "{userhome}/.config/discord/{discord}/modules/discord_desktop_core/",
9 | "{userhome}/.var/app/com.discordapp.Discord/config/discord/{discord}/modules/discord_desktop_core/"
10 | ],
11 | "binary": "core.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "app/images/systemtray/linux/tray.png",
16 | "theme": "discord-tray"
17 | },
18 | "tray-unread": {
19 | "original": "app/images/systemtray/linux/tray-unread.png",
20 | "theme": "discord-tray-unread"
21 | },
22 | "tray-connected": {
23 | "original": "app/images/systemtray/linux/tray-connected.png",
24 | "theme": "discord-tray-connected"
25 | },
26 | "tray-deafended": {
27 | "original": "app/images/systemtray/linux/tray-deafened.png",
28 | "theme": "discord-tray-deafened"
29 | },
30 | "tray-muted": {
31 | "original": "app/images/systemtray/linux/tray-muted.png",
32 | "theme": "discord-tray-muted"
33 | },
34 | "tray-speaking": {
35 | "original": "app/images/systemtray/linux/tray-speaking.png",
36 | "theme": "discord-tray-speaking"
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/data/database/disper-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Disper Indicator",
3 | "app_path" : [
4 | "/usr/lib/disper-indicator/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/pixmaps/disper-indicator/"
8 | ],
9 | "icons": {
10 | "panel": {
11 | "original": "disper.svg",
12 | "theme": "disper-panel"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/dropbox-flatpak.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Dropbox flatpak",
3 | "app_path": [
4 | "/var/lib/flatpak/app/com.dropbox.Client"
5 | ],
6 | "icons_path": [
7 | "/var/lib/flatpak/app/com.dropbox.Client/current/active/files/extra/.dropbox-dist/{dropbox}/images/hicolor/16x16/status"
8 | ],
9 | "icons": [
10 | "dropboxstatus-blank.png",
11 | "dropboxstatus-busy.png",
12 | "dropboxstatus-busy2.png",
13 | "dropboxstatus-idle.png",
14 | "dropboxstatus-logo.png",
15 | "dropboxstatus-x.png"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/dropbox.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Dropbox",
3 | "app_path": [
4 | "/opt/dropbox/",
5 | "{userhome}/.dropbox-dist/"
6 | ],
7 | "icons_path": [
8 | "/opt/dropbox/images/hicolor/16x16/status/",
9 | "{userhome}/.dropbox-dist/{dropbox}/images/hicolor/16x16/status/"
10 | ],
11 | "icons": [
12 | "dropboxstatus-blank.png",
13 | "dropboxstatus-busy.png",
14 | "dropboxstatus-busy2.png",
15 | "dropboxstatus-idle.png",
16 | "dropboxstatus-logo.png",
17 | "dropboxstatus-x.png"
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/electron-mail.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ElectronMail",
3 | "app_path": [
4 | "/opt/ElectronMail/",
5 | "/var/lib/flatpak/app/com.github.vladimiry.ElectronMail/"
6 | ],
7 | "icons_path": [
8 | "/opt/ElectronMail/resources/",
9 | "/var/lib/flatpak/app/com.github.vladimiry.ElectronMail/current/active/files/ElectronMail/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "app/assets/icons/icon.png",
16 | "theme": "electron-mail-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/element.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Element Desktop",
3 | "app_path": [
4 | "/opt/Element/",
5 | "/opt/Element-Nightly/",
6 | "/usr/lib/element/",
7 | "/var/lib/flatpak/app/im.riot.Riot"
8 | ],
9 | "icons_path": [
10 | "/opt/Element/resources/img/",
11 | "/opt/Element-Nightly/resources/img/",
12 | "/usr/lib/element/img/",
13 | "/var/lib/flatpak/app/im.riot.Riot/current/active/files/Element/resources/img/"
14 | ],
15 | "icons": {
16 | "tray": {
17 | "original": "element.png",
18 | "theme": "element-desktop-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/evernote.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Evernote",
3 | "app_path": [
4 | "/usr/lib/evernote-client/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/evernote-client/resources/static/linux/icons/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "icon.png",
12 | "theme": "everpad-mono"
13 | },
14 | "tray512": {
15 | "original": "512x512.png",
16 | "theme": "everpad-mono"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/ferdi.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ferdi",
3 | "app_path": [
4 | "/opt/Ferdi/",
5 | "/opt/ferdi/",
6 | "/var/lib/flatpak/app/com.getferdi.Ferdi/"
7 | ],
8 | "icons_path": [
9 | "/opt/Ferdi/resources/",
10 | "/opt/ferdi/resources/",
11 | "/var/lib/flatpak/app/com.getferdi.Ferdi/current/active/files/Ferdi/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "assets/images/tray/linux/tray.png",
18 | "theme": "ferdi-tray"
19 | },
20 | "tray@2x": {
21 | "original": "assets/images/tray/linux/tray@2x.png",
22 | "theme": "ferdi-tray"
23 | },
24 | "tray-indirect": {
25 | "original": "assets/images/tray/linux/tray-indirect.png",
26 | "theme": "ferdi-indirect"
27 | },
28 | "tray-indirect@2x": {
29 | "original": "assets/images/tray/linux/tray-indirect@2x.png",
30 | "theme": "ferdi-indirect"
31 | },
32 | "tray-unread": {
33 | "original": "assets/images/tray/linux/tray-unread.png",
34 | "theme": "ferdi-unread"
35 | },
36 | "tray-unread@2x": {
37 | "original": "assets/images/tray/linux/tray-unread@2x.png",
38 | "theme": "ferdi-unread"
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/data/database/ferdium.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ferdium",
3 | "app_path": [
4 | "/opt/Ferdium/",
5 | "/opt/ferdium/",
6 | "/opt/ferdium-bin/",
7 | "/var/lib/flatpak/app/org.ferdium.Ferdium/"
8 | ],
9 | "icons_path": [
10 | "/opt/Ferdium/resources/",
11 | "/opt/ferdium/resources/",
12 | "/opt/ferdium-bin/resources/",
13 | "/var/lib/flatpak/app/org.ferdium.Ferdium/current/active/files/Ferdium/resources/"
14 | ],
15 | "binary": "app.asar",
16 | "script": "electron",
17 | "icons": {
18 | "tray": {
19 | "original": "assets/images/tray/linux/tray.png",
20 | "theme": "ferdium-tray"
21 | },
22 | "tray@2x": {
23 | "original": "assets/images/tray/linux/tray@2x.png",
24 | "theme": "ferdium-tray"
25 | },
26 | "tray-indirect": {
27 | "original": "assets/images/tray/linux/tray-indirect.png",
28 | "theme": "ferdium-indirect"
29 | },
30 | "tray-indirect@2x": {
31 | "original": "assets/images/tray/linux/tray-indirect@2x.png",
32 | "theme": "ferdium-indirect"
33 | },
34 | "tray-unread": {
35 | "original": "assets/images/tray/linux/tray-unread.png",
36 | "theme": "ferdium-unread"
37 | },
38 | "tray-unread@2x": {
39 | "original": "assets/images/tray/linux/tray-unread@2x.png",
40 | "theme": "ferdium-unread"
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/data/database/franz.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Franz",
3 | "app_path": [
4 | "/opt/franz/",
5 | "/opt/Franz/",
6 | "/opt/franz-bin/",
7 | "/usr/lib/franz/",
8 | "/var/lib/flatpak/app/com.meetfranz.Franz/"
9 | ],
10 | "icons_path": [
11 | "/opt/franz/resources/",
12 | "/opt/Franz/resources/",
13 | "/opt/franz-bin/resources/",
14 | "/usr/lib/franz/resources/",
15 | "/var/lib/flatpak/app/com.meetfranz.Franz/current/active/files/Franz/resources/"
16 | ],
17 | "script": "electron",
18 | "binary": "app.asar",
19 | "icons": {
20 | "tray": {
21 | "original": "assets/images/tray/linux/tray.png",
22 | "theme": "franz-panel"
23 | },
24 | "tray@2x": {
25 | "original": "assets/images/tray/linux/tray@2x.png",
26 | "theme": "franz-panel"
27 | },
28 | "tray-unread": {
29 | "original": "assets/images/tray/linux/tray-unread.png",
30 | "theme": "franz-attention-panel"
31 | },
32 | "tray-unread@2x": {
33 | "original": "assets/images/tray/linux/tray-unread@2x.png",
34 | "theme": "franz-attention-panel"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/freezer.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Freezer",
3 | "app_path": [
4 | "/opt/Freezer/"
5 | ],
6 | "icons_path": [
7 | "/opt/Freezer/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray-black": {
13 | "original": "assets/icon-taskbar-black.png",
14 | "theme": "freezer-panel"
15 | },
16 | "tray-white": {
17 | "original": "assets/icon-taskbar-white.png",
18 | "theme": "freezer-panel"
19 | },
20 | "tray": {
21 | "original": "assets/icon-taskbar.png",
22 | "theme": "freezer-panel"
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/data/database/gdlauncher.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "GDLauncher",
3 | "app_path": [
4 | "/opt/GDLauncher/",
5 | "/opt/gdlauncher/",
6 | "/opt/gdlauncher-appimage/",
7 | "/opt/gdlauncher-bin/",
8 | "/usr/lib/gdlauncher/",
9 | "/var/lib/flatpak/app/io.gdevs.GDLauncher"
10 | ],
11 | "icons_path": [
12 | "/opt/GDLauncher/resources/",
13 | "/opt/gdlauncher/resources/",
14 | "/opt/gdlauncher-appimage/resources/",
15 | "/opt/gdlauncher-bin/resources/",
16 | "/usr/lib/gdlauncher/resources/",
17 | "/var/lib/flatpak/app/io.gdevs.GDLauncher/current/active/files/bin/gdlauncher/resources/"
18 | ],
19 | "binary": "app.asar",
20 | "script": "electron",
21 | "icons": {
22 | "tray": {
23 | "original": "build/logo_32x32.png",
24 | "theme": "gdlauncher-tray"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/data/database/ghetto_skype.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ghetto Skype",
3 | "app_path": [
4 | "/opt/Ghetto Skype/"
5 | ],
6 | "icons_path": [
7 | "/opt/Ghetto Skype/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "assets/skype24.png",
14 | "theme": "skype-indicator"
15 | },
16 | "tray-notification": {
17 | "original": "assets/skype24-1.png",
18 | "theme": "skype-status-connected-notification"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/ghetto_skype.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ghetto Skype",
3 | "app_path": [
4 | "/opt/ghetto-skype/"
5 | ],
6 | "icons_path": [
7 | "/opt/ghetto-skype/assets/tray/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "skype24.png",
12 | "theme": "skype-indicator"
13 | },
14 | "tray-notification": {
15 | "original": "skype24-1.png",
16 | "theme": "skype-status-connected-notification"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/gitify.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Gitify",
3 | "app_path": [
4 | "/opt/Gitify/"
5 | ],
6 | "icons_path": [
7 | "/opt/Gitify/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "assets/images/tray-idleTemplate.png",
14 | "theme": "gitify-tray"
15 | },
16 | "tray@2x": {
17 | "original": "assets/images/tray-idleTemplate@2x.png",
18 | "theme": "gitify-tray"
19 | },
20 | "tray-active": {
21 | "original": "assets/images/tray-active.png",
22 | "theme": "gitify-tray-active"
23 | },
24 | "tray-active@2x": {
25 | "original": "assets/images/tray-active@2x.png",
26 | "theme": "gitify-tray-active"
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/data/database/gitter.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Gitter",
3 | "app_path": [
4 | "/usr/bin/gitter",
5 | "/var/lib/flatpak/app/im.gitter.Gitter"
6 | ],
7 | "icons_path": [
8 | "/opt/Gitter/linux64/",
9 | "/var/lib/flatpak/app/im.gitter.Gitter/current/active/files/bin/"
10 | ],
11 | "binary": "Gitter",
12 | "script": "nwjs",
13 | "icons": {
14 | "disconnected": {
15 | "original": "img/linux-icon-logo-disconnected.png",
16 | "theme": "gitter-indicator-disconnected"
17 | },
18 | "unread": {
19 | "original": "img/linux-icon-logo-connected-unread.png",
20 | "theme": "gitter-indicator-notification"
21 | },
22 | "connected": {
23 | "original": "img/linux-icon-logo-connected.png",
24 | "theme": "gitter-indicator"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/data/database/gmail-desktop.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Gmail Desktop",
3 | "app_path": [
4 | "/opt/Gmail Desktop/"
5 | ],
6 | "icons_path": [
7 | "/opt/Gmail Desktop/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "static/tray-icon.png",
14 | "theme": "gmail-tray"
15 | },
16 | "tray-unread": {
17 | "original": "static/tray-icon-unread.png",
18 | "theme": "gmail-tray-unread"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/google-chat-linux.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Google Chat Linux",
3 | "app_path": [
4 | "/opt/google-chat-linux/"
5 | ],
6 | "icons_path": [
7 | "/opt/google-chat-linux/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "badge48": {
13 | "original": "assets/icon/badge-48.png",
14 | "theme": "google-chat-badge"
15 | },
16 | "badge64": {
17 | "original": "assets/icon/badge-64.png",
18 | "theme": "google-chat-badge"
19 | },
20 | "badge256": {
21 | "original": "assets/icon/badge-256.png",
22 | "theme": "google-chat-badge"
23 | },
24 | "offline48": {
25 | "original": "assets/icon/offline-48.png",
26 | "theme": "google-chat-offline"
27 | },
28 | "offline64": {
29 | "original": "assets/icon/offline-64.png",
30 | "theme": "google-chat-offline"
31 | },
32 | "offline256": {
33 | "original": "assets/icon/offline-256.png",
34 | "theme": "google-chat-offline"
35 | },
36 | "tray48": {
37 | "original": "assets/icon/normal-48.png",
38 | "theme": "google-chat-tray"
39 | },
40 | "tray64": {
41 | "original": "assets/icon/normal-64.png",
42 | "theme": "google-chat-tray"
43 | },
44 | "tray256": {
45 | "original": "assets/icon/normal-256.png",
46 | "theme": "google-chat-tray"
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/data/database/google-chrome.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Google Chrome",
3 | "app_path": [
4 | "/opt/google/chrome/",
5 | "/opt/google/chrome-unstable/",
6 | "/opt/google/chrome-beta/"
7 | ],
8 | "icons_path": [
9 | "/opt/google/chrome/",
10 | "/opt/google/chrome-unstable/",
11 | "/opt/google/chrome-beta/"
12 | ],
13 | "script": "pak",
14 | "binary": "resources.pak",
15 | "icons": {
16 | "tray": {
17 | "original": "8003",
18 | "theme": "google-chrome-tray"
19 | },
20 | "tray-56": {
21 | "original": "10153",
22 | "theme": "google-chrome-tray"
23 | },
24 | "tray-60-dev": {
25 | "original": "10154",
26 | "theme": "google-chrome-tray"
27 | },
28 | "tray-64": {
29 | "original": "10156",
30 | "theme": "google-chrome-tray"
31 | },
32 | "tray-68": {
33 | "original": "10158",
34 | "theme": "google-chrome-tray"
35 | },
36 | "tray-77": {
37 | "original": "10151",
38 | "theme": "google-chrome-tray"
39 | },
40 | "tray-80": {
41 | "original": "9151",
42 | "theme": "google-chrome-tray"
43 | },
44 | "tray-93": {
45 | "original": "11151",
46 | "theme": "google-chrome-tray"
47 | },
48 | "tray-105": {
49 | "original": "12151",
50 | "theme": "google-chrome-tray"
51 | },
52 | "tray-106": {
53 | "original": "13151",
54 | "theme": "google-chrome-tray"
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/data/database/google-tasks-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Google Tasks Indicator",
3 | "app_path": [
4 | "/usr/share/google-tasks-indicator/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/google-tasks-indicator/icons/"
8 | ],
9 | "icons": [
10 | "google-tasks-indicator-dark-normal.svg",
11 | "google-tasks-indicator-dark-starred.svg",
12 | "google-tasks-indicator-light-normal.svg",
13 | "google-tasks-indicator-light-starred.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/gpmdp.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Google Play Music Desktop Player",
3 | "app_path": [
4 | "/usr/share/google-play-music-desktop-player/",
5 | "/usr/share/gpmdp/",
6 | "/var/lib/flatpak/app/com.googleplaymusicdesktopplayer.GPMDP"
7 | ],
8 | "icons_path": [
9 | "/usr/share/google-play-music-desktop-player/resources/",
10 | "/usr/share/gpmdp/resources/",
11 | "/var/lib/flatpak/app/com.googleplaymusicdesktopplayer.GPMDP/current/active/files/share/google-play-music-desktop-player/resources/"
12 | ],
13 | "script": "electron",
14 | "binary": "app.asar",
15 | "icons": {
16 | "normal-light": {
17 | "original": "build/assets/img/main_tray_white_s.png",
18 | "theme": "gpmdp-tray"
19 | },
20 | "play-light": {
21 | "original": "build/assets/img/playing/main_tray_white_s.png",
22 | "theme": "gpmdp-tray-play"
23 | },
24 | "pause-light": {
25 | "original": "build/assets/img/paused/main_tray_white_s.png",
26 | "theme": "gpmdp-tray-pause"
27 | },
28 | "normal-dark": {
29 | "original": "build/assets/img/main_tray_black_s.png",
30 | "theme": "gpmdp-tray"
31 | },
32 | "play-dark": {
33 | "original": "build/assets/img/playing/main_tray_black_s.png",
34 | "theme": "gpmdp-tray-play"
35 | },
36 | "pause-dark": {
37 | "original": "build/assets/img/paused/main_tray_black_s.png",
38 | "theme": "gpmdp-tray-pause"
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/data/database/grive-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Grive Tools",
3 | "app_path": [
4 | "/opt/thefanclub/grive-tools/"
5 | ],
6 | "icons_path": [
7 | "/opt/thefanclub/grive-tools/icons/dark/",
8 | "/opt/thefanclub/grive-tools/icons/light/"
9 | ],
10 | "icons": [
11 | "grive-app-ind.svg",
12 | "grive-app-ind-con-{1-3}.svg",
13 | "grive-app-ind-sleep.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/guake.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Guake",
3 | "app_path": [
4 | "/usr/bin/guake"
5 | ],
6 | "icons_path": [
7 | "/usr/share/pixmaps/guake/"
8 | ],
9 | "icons": {
10 | "tray-png": {
11 | "original": "guake-tray.png",
12 | "theme": "guake-tray"
13 | },
14 | "tray-svg": {
15 | "original": "guake-tray.svg",
16 | "theme": "guake-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/guitarix.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Guitarix",
3 | "app_path": [
4 | "/usr/share/gx_head/",
5 | "/var/lib/flatpak/app/org.guitarix.Guitarix"
6 | ],
7 | "icons_path": [
8 | "/usr/share/pixmaps/",
9 | "/var/lib/flatpak/app/org.guitarix.Guitarix/current/active/files/share/pixmaps/"
10 | ],
11 | "icons": {
12 | "tray": {
13 | "original": "gx_head.png",
14 | "theme": "guitarix-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/hamsket.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Hamsket",
3 | "app_path": [
4 | "/opt/Rambox-OS/",
5 | "/opt/hamsket/",
6 | "/opt/Hamsket/"
7 | ],
8 | "icons_path": [
9 | "/opt/Rambox-OS/resources/",
10 | "/opt/hamsket/resources/",
11 | "/opt/Hamsket/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "resources/IconTray.png",
18 | "theme": "rambox-indicator"
19 | },
20 | "tray@2x": {
21 | "original": "resources/IconTray@2x.png",
22 | "theme": "rambox-indicator"
23 | },
24 | "tray@4x": {
25 | "original": "resources/IconTray@4x.png",
26 | "theme": "rambox-indicator"
27 | },
28 | "trayUnread": {
29 | "original": "resources/IconTrayUnread.png",
30 | "theme": "rambox-notification"
31 | },
32 | "trayUnread@2x": {
33 | "original": "resources/IconTrayUnread@2x.png",
34 | "theme": "rambox-notification"
35 | },
36 | "trayUnread@4x": {
37 | "original": "resources/IconTrayUnread@4x.png",
38 | "theme": "rambox-notification"
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/data/database/harmony.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Harmony",
3 | "app_path": [
4 | "/opt/Harmony/harmony"
5 | ],
6 | "icons_path": [
7 | "/opt/Harmony/resources/app/icons/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "icon.png",
12 | "theme": "harmony-tray"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/heroic.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Heroic",
3 | "app_path": [
4 | "/opt/Heroic/"
5 | ],
6 | "icons_path": [
7 | "/opt/Heroic/resources/app.asar.unpacked/build/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "icon-light.png",
12 | "theme": "heroic-tray"
13 | },
14 | "tray-dark": {
15 | "original": "icon-dark.png",
16 | "theme": "heroic-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/hexchat.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Hexchat",
3 | "app_path": [
4 | "/usr/bin/hexchat"
5 | ],
6 | "icons_path": [
7 | "{userhome}/.config/hexchat/icons/"
8 | ],
9 | "force_create_folder": true,
10 | "backup_ignore": true,
11 | "icons": {
12 | "fileoffer": {
13 | "original": "tray_fileoffer.png",
14 | "theme": "hexchat-fileoffer"
15 | },
16 | "highlight": {
17 | "original": "tray_highlight.png",
18 | "theme": "hexchat-highlight"
19 | },
20 | "message": {
21 | "original": "tray_message.png",
22 | "theme": "hexchat-message"
23 | },
24 | "indicator": {
25 | "original": "tray_normal.png",
26 | "theme": "hexchat-indicator",
27 | "symlinks": [
28 | "hexchat.png"
29 | ]
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/data/database/hp-printing.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "HP Printer",
3 | "app_path": [
4 | "/usr/bin/hp-systray"
5 | ],
6 | "icons_path": [
7 | "/usr/share/hplip/data/images/16x16",
8 | "/usr/share/hplip/data/images/32x32"
9 | ],
10 | "icons": {
11 | "tray": {
12 | "original": "hp_logo.png",
13 | "theme": "hp-indicator"
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/data/database/hp-printing.qt.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "HP Printer",
3 | "app_path": [
4 | "/usr/bin/hp-systray"
5 | ],
6 | "icons_path": [
7 | "{userhome}/.local/share/sni-qt/icons/python2.7/{size}/",
8 | "{userhome}/.local/share/sni-qt/icons/python3.5/{size}/"
9 | ],
10 | "is_qt": true,
11 | "force_create_folder": true,
12 | "backup_ignore": true,
13 | "icons": {
14 | "indicator": {
15 | "original": "2f282c85ef0c788eb09624bc3decd0b5",
16 | "theme": "hp-indicator",
17 | "symlinks": [
18 | "39d31fe8b825d025a4c20a155aba616f"
19 | ]
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/data/database/ibus-anthy.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ibus Anthy",
3 | "app_path": [
4 | "/usr/share/ibus-anthy/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/ibus-anthy/icons/"
8 | ],
9 | "icons": [
10 | "ibus-anthy.png"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/data/database/ibus-mozc.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ibus Mozc",
3 | "app_path": [
4 | "/usr/share/ibus-mozc/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/ibus-mozc/"
8 | ],
9 | "icons": {
10 | "full": {
11 | "original": "alpha_full.png",
12 | "theme": "ibus-mozc-alpha_full"
13 | },
14 | "half": {
15 | "original": "alpha_half.png",
16 | "theme": "ibus-mozc-alpha_half"
17 | },
18 | "direct": {
19 | "original": "direct.png",
20 | "theme": "ibus-mozc-direct"
21 | },
22 | "directory": {
23 | "original": "directory.png",
24 | "theme": "ibus-mozc-directory"
25 | },
26 | "hiragana": {
27 | "original": "hiragana.png",
28 | "theme": "ibus-mozc-hiragana"
29 | },
30 | "katakana_full": {
31 | "original": "katakana_full.png",
32 | "theme": "ibus-mozc-katakana_full"
33 | },
34 | "katakana_half": {
35 | "original": "katakana_half.png",
36 | "theme": "ibus-mozc-katakana_half"
37 | },
38 | "product": {
39 | "original": "product_icon.png",
40 | "theme": "ibus-mozc-product_icon"
41 | },
42 | "properties": {
43 | "original": "properties.png",
44 | "theme": "ibus-mozc-properties"
45 | },
46 | "tools": {
47 | "original": "tools.png",
48 | "theme": "ibus-mozc-tool"
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/data/database/indicator-weather.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Indicator Weather",
3 | "app_path": [
4 | "/usr/share/indicator-weather/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/indicator-weather/media/"
8 | ],
9 | "icons": {
10 | "clear": {
11 | "original": "icon.png",
12 | "theme": "weather-clear"
13 | },
14 | "server-alert": {
15 | "original": "icon_connection_error.png",
16 | "theme": "weather-server-alert"
17 | },
18 | "none-available": {
19 | "original": "icon_unknown_condition.png",
20 | "theme": "weather-none-available"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/insync.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Insync",
3 | "app_path": [
4 | "/usr/bin/insync",
5 | "/usr/lib/insync/"
6 | ],
7 | "icons_path": [
8 | "/usr/share/icons/hicolor/scalable/status/"
9 | ],
10 | "icons": [
11 | "insync-alert.svg",
12 | "insync-normal.svg",
13 | "insync-offline.svg",
14 | "insync-paused.svg",
15 | "insync-synced.svg",
16 | "insync-syncing.svg"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/data/database/internxt-drive.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Internxt Drive",
3 | "app_path": [
4 | "/opt/Internxt Drive/",
5 | "/opt/internxt-drive/"
6 | ],
7 | "icons_path": [
8 | "/opt/Internxt Drive/resources/assets/tray/",
9 | "/opt/internxt-drive/resources/assets/tray/"
10 | ],
11 | "icons": {
12 | "standby@2x": {
13 | "original": "standby@2x.png",
14 | "theme": "internxt-drive-standby"
15 | },
16 | "issues@2x": {
17 | "original": "issues@2x.png",
18 | "theme": "internxt-drive-issues"
19 | },
20 | "syncing@2x": {
21 | "original": "syncing@2x.png",
22 | "theme": "internxt-drive-syncing"
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/data/database/irccloud.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "IRCCloud",
3 | "app_path": [
4 | "/opt/IRCCloud/",
5 | "/var/lib/flatpak/app/com.irccloud.desktop"
6 | ],
7 | "icons_path": [
8 | "/opt/IRCCloud/resources/",
9 | "/var/lib/flatpak/app/com.irccloud.desktop/current/active/files/irccloud/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "app/tray-icon.png",
16 | "theme": "irccloud-desktop-tray"
17 | },
18 | "tray@2x": {
19 | "original": "app/tray-icon@2x.png",
20 | "theme": "irccloud-desktop-tray"
21 | },
22 | "tray@4x": {
23 | "original": "app/tray-icon@4x.png",
24 | "theme": "irccloud-desktop-tray"
25 | },
26 | "tray@8x": {
27 | "original": "app/tray-icon@8x.png",
28 | "theme": "irccloud-desktop-tray"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/data/database/jdownloader.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "JDownloader",
3 | "app_path": [
4 | "/usr/bin/jdownloader",
5 | "/var/lib/flatpak/app/org.jdownloader.JDownloader/"
6 | ],
7 | "icons_path": [
8 | "{userhome}/.jd2/themes/standard/org/jdownloader/images/logo/",
9 | "{userhome}/.jd/themes/standard/org/jdownloader/images/logo/",
10 | "{userhome}/.var/app/org.jdownloader.JDownloader/data/jdownloader/themes/standard/org/jdownloader/images/logo/"
11 | ],
12 | "icons": {
13 | "indicator": {
14 | "original": "jd_logo_128_128.png",
15 | "theme": "jdownloader-indicator"
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/data/database/joplin.json:
--------------------------------------------------------------------------------
1 |
2 | {
3 | "name": "Joplin",
4 | "app_path": [
5 | "/usr/lib/joplin/",
6 | "/usr/lib/joplin-desktop/",
7 | "/usr/share/joplin/",
8 | "/usr/share/joplin-desktop/",
9 | "/var/lib/flatpak/app/net.cozic.joplin_desktop/"
10 | ],
11 | "icons_path": [
12 | "/usr/lib/joplin/resources/app/build/icons/",
13 | "/usr/lib/joplin-desktop/build/icons/",
14 | "/usr/share/joplin/resources/build/icons/",
15 | "/usr/share/joplin/desktop/resources/build/icons/",
16 | "/usr/share/joplin-desktop/resources/build/icons/",
17 | "/var/lib/flatpak/app/net.cozic.joplin_desktop/current/active/files/joplin-desktop/resources/build/icons/"
18 | ],
19 | "icons": {
20 | "icon16": {
21 | "original": "16x16.png",
22 | "theme": "joplin-tray"
23 | },
24 | "icon16@2x": {
25 | "original": "16x16@2x.png",
26 | "theme": "joplin-tray"
27 | },
28 | "icon16@3x": {
29 | "original": "16x16@3x.png",
30 | "theme": "joplin-tray"
31 | },
32 | "icon24": {
33 | "original": "24x24.png",
34 | "theme": "joplin-tray"
35 | },
36 | "icon32": {
37 | "original": "32x32.png",
38 | "theme": "joplin-tray"
39 | },
40 | "icon32@3": {
41 | "original": "32x32@3.png",
42 | "theme": "joplin-tray"
43 | },
44 | "icon48": {
45 | "original": "48x48.png",
46 | "theme": "joplin-tray"
47 | },
48 | "icon72": {
49 | "original": "72x72.png",
50 | "theme": "joplin-tray"
51 | },
52 | "icon96": {
53 | "original": "96x96.png",
54 | "theme": "joplin-tray"
55 | },
56 | "icon128": {
57 | "original": "128x128.png",
58 | "theme": "joplin-tray"
59 | },
60 | "icon144": {
61 | "original": "144x144.png",
62 | "theme": "joplin-tray"
63 | },
64 | "icon256": {
65 | "original": "256x256.png",
66 | "theme": "joplin-tray"
67 | },
68 | "icon512": {
69 | "original": "512x512.png",
70 | "theme": "joplin-tray"
71 | },
72 | "icon1024": {
73 | "original": "1024x1024.png",
74 | "theme": "joplin-tray"
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/data/database/kaku.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Kaku",
3 | "app_path": [
4 | "/opt/Kaku/"
5 | ],
6 | "icons_path": [
7 | "/opt/Kaku/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "src/public/images/icons/tray/default.png",
14 | "theme": "kaku-tray"
15 | },
16 | "tray@2x": {
17 | "original": "src/public/images/icons/tray/default@2x.png",
18 | "theme": "kaku-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/keepass.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "KeePass",
3 | "app_path": [
4 | "/usr/share/keepass/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/icons/hicolor/256x256/apps/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "keepass2-locked.png",
12 | "theme": "keepassx-locked"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/keepassx.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Keepassx",
3 | "app_path": [
4 | "/usr/share/keepassx/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/keepassx/icons/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "keepassx.png",
12 | "theme": "keepassx-indicator"
13 | },
14 | "locked": {
15 | "original": "keepassx_locked.png",
16 | "theme": "keepassx-locked"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/keybase.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Keybase",
3 | "app_path": [
4 | "/opt/keybase/",
5 | "/usr/share/keybase-app/"
6 | ],
7 | "icons_path": [
8 | "/opt/keybase/resources/app/images/menubarIcon/",
9 | "/usr/share/keybase-app/images/menubarIcon/"
10 | ],
11 | "icons": {
12 | "regular": {
13 | "original": "icon-keybase-menubar-regular-white-22.png",
14 | "theme": "keybase-tray"
15 | },
16 | "regular@2x": {
17 | "original": "icon-keybase-menubar-regular-white-22@2x.png",
18 | "theme": "keybase-tray"
19 | },
20 | "regular@3x": {
21 | "original": "icon-keybase-menubar-regular-white-22@3x.png",
22 | "theme": "keybase-tray"
23 | },
24 | "error": {
25 | "original": "icon-keybase-menubar-error-white-22.png",
26 | "theme": "keybase-error"
27 | },
28 | "error@2x": {
29 | "original": "icon-keybase-menubar-error-white-22@2x.png",
30 | "theme": "keybase-error"
31 | },
32 | "error@3x": {
33 | "original": "icon-keybase-menubar-error-white-22@3x.png",
34 | "theme": "keybase-error"
35 | },
36 | "badged": {
37 | "original": "icon-keybase-menubar-badged-regular-white-22.png",
38 | "theme": "keybase-badged"
39 | },
40 | "badged@2x": {
41 | "original": "icon-keybase-menubar-badged-regular-white-22@2x.png",
42 | "theme": "keybase-badged"
43 | },
44 | "badged@3x": {
45 | "original": "icon-keybase-menubar-badged-regular-white-22@3x.png",
46 | "theme": "keybase-badged"
47 | },
48 | "badged-error": {
49 | "original": "icon-keybase-menubar-badged-error-white-22.png",
50 | "theme": "keybase-badged-error"
51 | },
52 | "badged-error@2x": {
53 | "original": "icon-keybase-menubar-badged-error-white-22@2x.png",
54 | "theme": "keybase-badged-error"
55 | },
56 | "badged-error@3x": {
57 | "original": "icon-keybase-menubar-badged-error-white-22@3x.png",
58 | "theme": "keybase-badged-error"
59 | },
60 | "badged-uploading": {
61 | "original": "icon-keybase-menubar-badged-uploading-white-22.png",
62 | "theme": "keybase-badged-uploading"
63 | },
64 | "badged-uploading@2x": {
65 | "original": "icon-keybase-menubar-badged-uploading-white-22@2x.png",
66 | "theme": "keybase-badged-uploading"
67 | },
68 | "badged-uploading@3x": {
69 | "original": "icon-keybase-menubar-badged-uploading-white-22@3x.png",
70 | "theme": "keybase-badged-uploading"
71 | },
72 | "update": {
73 | "original": "icon-keybase-menubar-update-white-22.png",
74 | "theme": "keybase-update"
75 | },
76 | "update@2x": {
77 | "original": "icon-keybase-menubar-update-white-22@2x.png",
78 | "theme": "keybase-update"
79 | },
80 | "update@3x": {
81 | "original": "icon-keybase-menubar-update-white-22@3x.png",
82 | "theme": "keybase-update"
83 | },
84 | "uploading": {
85 | "original": "icon-keybase-menubar-uploading-white-22.png",
86 | "theme": "keybase-uploading"
87 | },
88 | "uploading@2x": {
89 | "original": "icon-keybase-menubar-uploading-white-22@2x.png",
90 | "theme": "keybase-uploading"
91 | },
92 | "uploading@3x": {
93 | "original": "icon-keybase-menubar-uploading-white-22@3x.png",
94 | "theme": "keybase-uploading"
95 | }
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/data/database/kuro.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Kuro",
3 | "app_path": [
4 | "/opt/Kuro/"
5 | ],
6 | "icons_path": [
7 | "/opt/Kuro/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "static/IconTray.png",
14 | "theme": "kuro-tray"
15 | },
16 | "tray@2x": {
17 | "original": "static/IconTray@2x.png",
18 | "theme": "kuro-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/laditools.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "LADI Tools",
3 | "app_path": [
4 | "/usr/bin/laditray"
5 | ],
6 | "icons_path": [
7 | "/usr/share/laditools/data/"
8 | ],
9 | "icons": {
10 | "started": {
11 | "original": "started.svg",
12 | "theme": "ladi-started"
13 | },
14 | "starting": {
15 | "original": "starting.svg",
16 | "theme": "ladi-starting"
17 | },
18 | "stopped": {
19 | "original": "stopped.svg",
20 | "theme": "ladi-stopped"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/liferea.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Liferea",
3 | "app_path": [
4 | "/usr/bin/liferea"
5 | ],
6 | "icons_path": [
7 | "/usr/share/pixmaps/",
8 | "/usr/share/liferea/pixmaps/"
9 | ],
10 | "icons": {
11 | "unread": {
12 | "original": "unread.png",
13 | "theme": "liferea-unread"
14 | },
15 | "available": {
16 | "original": "available.png",
17 | "theme": "liferea-available"
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/data/database/lightcord.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Lightcord",
3 | "app_path": [
4 | "/opt/lightcord/"
5 | ],
6 | "icons_path": [
7 | "/opt/lightcord/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "modules/discord_desktop_core/core/app/images/systemtray/linux/tray.png",
14 | "theme": "discord-tray"
15 | },
16 | "tray-unread": {
17 | "original": "modules/discord_desktop_core/core/app/images/systemtray/linux/tray-unread.png",
18 | "theme": "discord-tray-unread"
19 | },
20 | "tray-connected": {
21 | "original": "modules/discord_desktop_core/core/app/images/systemtray/linux/tray-connected.png",
22 | "theme": "discord-tray-connected"
23 | },
24 | "tray-deafended": {
25 | "original": "modules/discord_desktop_core/core/app/images/systemtray/linux/tray-deafened.png",
26 | "theme": "discord-tray-deafened"
27 | },
28 | "tray-muted": {
29 | "original": "modules/discord_desktop_core/core/app/images/systemtray/linux/tray-muted.png",
30 | "theme": "discord-tray-muted"
31 | },
32 | "tray-speaking": {
33 | "original": "modules/discord_desktop_core/core/app/images/systemtray/linux/tray-speaking.png",
34 | "theme": "discord-tray-speaking"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/listen-moe.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "LISTEN.moe",
3 | "app_path": [
4 | "/usr/lib/listen-moe-desktop/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/listen-moe-desktop/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "logo-trans.png",
14 | "theme": "listen.moe-desktop-app-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/lyricfier.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Lyricfier",
3 | "app_path": [
4 | "/opt/lyricfier/"
5 | ],
6 | "icons_path": [
7 | "/opt/lyricfier/resources/app/render/img/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "icon.png",
12 | "theme": "lyricfier-tray"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/mailspring.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Mailspring",
3 | "app_path": [
4 | "/usr/share/mailspring/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/mailspring/resources/"
8 | ],
9 | "script": "electron",
10 | "binary": "app.asar",
11 | "icons": {
12 | "empty@2x": {
13 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Zero@2x.png",
14 | "theme": "mailspring-tray-empty"
15 | },
16 | "full@2x": {
17 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Full@2x.png",
18 | "theme": "mailspring-tray-full"
19 | },
20 | "newitems@2x": {
21 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Full-NewItems@2x.png",
22 | "theme": "mailspring-tray-full-newitems"
23 | },
24 | "empty": {
25 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Zero.png",
26 | "theme": "mailspring-tray-empty"
27 | },
28 | "full": {
29 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Full.png",
30 | "theme": "mailspring-tray-full"
31 | },
32 | "newitems": {
33 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Full-NewItems.png",
34 | "theme": "mailspring-tray-full-newitems"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/mate-sensors-applet.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MATE Sensors Applet",
3 | "app_path": [
4 | "/usr/lib/mate-sensors-applet/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/pixmaps/mate-sensors-applet/"
8 | ],
9 | "icons": {
10 | "very-low-temp-icon": {
11 | "original": "very-low-temp-icon.png",
12 | "theme": "very-low-temp-icon"
13 | },
14 | "low-temp-icon": {
15 | "original": "low-temp-icon.png",
16 | "theme": "low-temp-icon"
17 | },
18 | "normal-temp-icon": {
19 | "original": "normal-temp-icon.png",
20 | "theme": "normal-temp-icon"
21 | },
22 | "high-temp-icon": {
23 | "original": "high-temp-icon.png",
24 | "theme": "high-temp-icon"
25 | },
26 | "very-high-temp-icon": {
27 | "original": "very-high-temp-icon.png",
28 | "theme": "very-high-temp-icon"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/data/database/mattermost.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Mattermost",
3 | "app_path": [
4 | "/opt/Mattermost/",
5 | "/usr/lib/mattermost/",
6 | "/var/lib/flatpak/app/com.mattermost.Desktop/"
7 | ],
8 | "icons_path": [
9 | "/opt/Mattermost/resources/",
10 | "/usr/lib/mattermost/resources/",
11 | "/var/lib/flatpak/app/com.mattermost.Desktop/current/active/files/main/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray-light": {
17 | "original": "assets/linux/top_bar_light_16.png",
18 | "theme": "mattermost-tray"
19 | },
20 | "tray-light-unread": {
21 | "original": "assets/linux/top_bar_light_unread_16.png",
22 | "theme": "mattermost-unread"
23 | },
24 | "tray-light-mention": {
25 | "original": "assets/linux/top_bar_light_mention_16.png",
26 | "theme": "mattermost-mention"
27 | },
28 | "tray-light@2x": {
29 | "original": "assets/linux/top_bar_light_16@2x.png",
30 | "theme": "mattermost-tray"
31 | },
32 | "tray-light@2x-unread": {
33 | "original": "assets/linux/top_bar_light_unread_16@2x.png",
34 | "theme": "mattermost-unread"
35 | },
36 | "tray-light@2x-mention": {
37 | "original": "assets/linux/top_bar_light_mention_16@2x.png",
38 | "theme": "mattermost-mention"
39 | },
40 | "tray-dark": {
41 | "original": "assets/linux/top_bar_dark_16.png",
42 | "theme": "mattermost-tray"
43 | },
44 | "tray-dark-unread": {
45 | "original": "assets/linux/top_bar_dark_unread_16.png",
46 | "theme": "mattermost-unread"
47 | },
48 | "tray-dark-mention": {
49 | "original": "assets/linux/top_bar_dark_mention_16.png",
50 | "theme": "mattermost-mention"
51 | },
52 | "tray-dark@2x": {
53 | "original": "assets/linux/top_bar_dark_16@2x.png",
54 | "theme": "mattermost-tray"
55 | },
56 | "tray-dark@2x-unread": {
57 | "original": "assets/linux/top_bar_dark_unread_16@2x.png",
58 | "theme": "mattermost-unread"
59 | },
60 | "tray-dark@2x-mention": {
61 | "original": "assets/linux/top_bar_dark_mention_16@2x.png",
62 | "theme": "mattermost-mention"
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/data/database/megasync.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Megasync",
3 | "app_path": [
4 | "/usr/bin/megasync",
5 | "/var/lib/flatpak/app/nz.mega.MEGAsync/"
6 | ],
7 | "icons_path": [
8 | "/usr/share/icons/hicolor/scalable/status/",
9 | "/var/lib/flatpak/app/nz.mega.MEGAsync/current/active/files/share/icons/hicolor/scalable/status/"
10 | ],
11 | "icons": {
12 | "paused": {
13 | "original": "megapaused.svg",
14 | "theme": "megapaused"
15 | },
16 | "synching": {
17 | "original": "megasynching.svg",
18 | "theme": "megasynching"
19 | },
20 | "logging": {
21 | "original": "megalogging.svg",
22 | "theme": "megalogging"
23 | },
24 | "warning": {
25 | "original": "megawarning.svg",
26 | "theme": "megawarning"
27 | },
28 | "ok": {
29 | "original": "megauptodate.svg",
30 | "theme": "megauptodate"
31 | },
32 | "alert": {
33 | "original": "megaalert.svg",
34 | "theme": "megaalert"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/messenger.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Messenger",
3 | "app_path": [
4 | "/opt/messengerfordesktop/"
5 | ],
6 | "icons_path": [
7 | "/opt/messengerfordesktop/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "images/tray.png",
14 | "theme": "messenger-indicator"
15 | },
16 | "tray@2x": {
17 | "original": "images/tray@2x.png",
18 | "theme": "messenger-indicator"
19 | },
20 | "tray@3x": {
21 | "original": "images/tray@3x.png",
22 | "theme": "messenger-indicator"
23 | },
24 | "trayAlert": {
25 | "original": "images/trayAlert.png",
26 | "theme": "messenger-notification"
27 | },
28 | "trayAlert@2x": {
29 | "original": "images/trayAlert@2x.png",
30 | "theme": "messenger-notification"
31 | },
32 | "trayAlert@3x": {
33 | "original": "images/trayAlert@3x.png",
34 | "theme": "messenger-notification"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/messengerfordesktop.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MessengerForDesktop",
3 | "app_path": [
4 | "/usr/lib/messengerfordesktop/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/messengerfordesktop/images/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "tray.png",
12 | "theme": "messenger-indicator"
13 | },
14 | "indicator@2x": {
15 | "original": "tray@2x.png",
16 | "theme": "messenger-indicator"
17 | },
18 | "indicator@3x": {
19 | "original": "tray@3x.png",
20 | "theme": "messenger-indicator"
21 | },
22 | "notification": {
23 | "original": "trayAlert.png",
24 | "theme": "messenger-notification"
25 | },
26 | "notification@2x": {
27 | "original": "trayAlert@2x.png",
28 | "theme": "messenger-notification"
29 | },
30 | "notification@3x": {
31 | "original": "trayAlert@2x.png",
32 | "theme": "messenger-notification"
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/data/database/messengerfordesktop.nwjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MessengerForDesktop",
3 | "app_path": [
4 | "/opt/MessengerForDesktop/"
5 | ],
6 | "icons_path": [
7 | "/opt/MessengerForDesktop/"
8 | ],
9 | "binary": "Messenger",
10 | "script": "nwjs",
11 | "icons": {
12 | "tray": {
13 | "original": "images/icon_tray.png",
14 | "theme": "messenger-indicator"
15 | },
16 | "unread": {
17 | "original": "images/icon_tray_alert.png",
18 | "theme": "messenger-notification"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/minetime.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MineTime",
3 | "app_path": [
4 | "/opt/MineTime/"
5 | ],
6 | "icons_path": [
7 | "/opt/MineTime/resources/app.asar.unpacked/assets/tray/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "icon_tray.png",
12 | "theme": "minetime-tray"
13 | },
14 | "tray@2x": {
15 | "original": "icon_tray@2x.png",
16 | "theme": "minetime-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/mintupdate.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Mint Update Manager",
3 | "app_path": [
4 | "/usr/lib/linuxmint/mintUpdate/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/linuxmint/mintUpdate/icons/"
8 | ],
9 | "icons": {
10 | "apply": {
11 | "original": "original-apply.svg",
12 | "theme": "mintupdate-indicator-apply"
13 | },
14 | "error": {
15 | "original": "original-error2.svg,",
16 | "theme": "mintupdate-indicator-error"
17 | },
18 | "working": {
19 | "original": "original-exec.svg",
20 | "theme": "mintupdate-indicator-working"
21 | },
22 | "info": {
23 | "original": "original-info.svg",
24 | "theme": "mintupdate-indicator-info"
25 | },
26 | "indicator": {
27 | "original": "original.svg",
28 | "theme": "mintupdate-indicator"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/data/database/moderndeck.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ModernDeck",
3 | "app_path": [
4 | "/opt/moderndeck/",
5 | "/var/lib/flatpak/app/com.dangeredwolf.ModernDeck/"
6 | ],
7 | "icons_path": [
8 | "/opt/moderndeck/resources/",
9 | "/var/lib/flatpak/app/com.dangeredwolf.ModernDeck/current/active/files/bin/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "common/resources/img/app/Tray.png",
16 | "theme": "moderndeck-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/morgen.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Morgen",
3 | "app_path": [
4 | "/opt/Morgen/"
5 | ],
6 | "icons_path": [
7 | "/opt/Morgen/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "static/icons/icon.png",
14 | "theme": "morgen-tray"
15 | },
16 | "tray@2x": {
17 | "original": "static/icons/icon@2x.png",
18 | "theme": "morgen-tray"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/motrix-git.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Motrix Git",
3 | "app_path": [
4 | "/usr/lib/motrix/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/motrix/app/electron/static/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "mo-tray-colorful-normal.png",
12 | "theme": "motrix-tray"
13 | },
14 | "tray@1x": {
15 | "original": "mo-tray-dark-normal@1x.png",
16 | "theme": "motrix-tray"
17 | },
18 | "tray@2x": {
19 | "original": "mo-tray-dark-normal@2x.png",
20 | "theme": "motrix-tray"
21 | },
22 | "tray-active": {
23 | "original": "mo-tray-colorful-active.png",
24 | "theme": "motrix-tray-active"
25 | },
26 | "tray-active@1x": {
27 | "original": "mo-tray-dark-active@1x.png",
28 | "theme": "motrix-tray-active"
29 | },
30 | "tray-active@2x": {
31 | "original": "mo-tray-dark-active@2x.png",
32 | "theme": "motrix-tray-active"
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/data/database/motrix.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Motrix",
3 | "app_path": [
4 | "/opt/Motrix/",
5 | "/opt/motrix/",
6 | "/var/lib/flatpak/app/net.agalwood.Motrix"
7 | ],
8 | "icons_path": [
9 | "/opt/Motrix/resources/",
10 | "/opt/motrix/resources/",
11 | "/var/lib/flatpak/app/net.agalwood.Motrix/current/active/files/motrix/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "dist/electron/static/mo-tray-colorful-normal.png",
18 | "theme": "motrix-tray"
19 | },
20 | "tray@1x": {
21 | "original": "dist/electron/static/mo-tray-dark-normal@1x.png",
22 | "theme": "motrix-tray"
23 | },
24 | "tray@2x": {
25 | "original": "dist/electron/static/mo-tray-dark-normal@2x.png",
26 | "theme": "motrix-tray"
27 | },
28 | "tray-active": {
29 | "original": "dist/electron/static/mo-tray-colorful-active.png",
30 | "theme": "motrix-tray-active"
31 | },
32 | "tray-active@1x": {
33 | "original": "dist/electron/static/mo-tray-dark-active@1x.png",
34 | "theme": "motrix-tray-active"
35 | },
36 | "tray-active@2x": {
37 | "original": "dist/electron/static/mo-tray-dark-active@2x.png",
38 | "theme": "motrix-tray-active"
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/data/database/mullvad.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MullvadVPN",
3 | "app_path": [
4 | "/opt/Mullvad VPN/",
5 | "/opt/mullvad-vpn/"
6 | ],
7 | "icons_path": [
8 | "/opt/Mullvad VPN/resources/",
9 | "/opt/mullvad-vpn/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray1": {
15 | "original": "build/assets/images/menubar icons/linux/lock-1.png",
16 | "theme": "mullvad-tray-1"
17 | },
18 | "tray2": {
19 | "original": "build/assets/images/menubar icons/linux/lock-2.png",
20 | "theme": "mullvad-tray-2"
21 | },
22 | "tray3": {
23 | "original": "build/assets/images/menubar icons/linux/lock-3.png",
24 | "theme": "mullvad-tray-3"
25 | },
26 | "tray4": {
27 | "original": "build/assets/images/menubar icons/linux/lock-4.png",
28 | "theme": "mullvad-tray-4"
29 | },
30 | "tray5": {
31 | "original": "build/assets/images/menubar icons/linux/lock-5.png",
32 | "theme": "mullvad-tray-5"
33 | },
34 | "tray6": {
35 | "original": "build/assets/images/menubar icons/linux/lock-6.png",
36 | "theme": "mullvad-tray-6"
37 | },
38 | "tray7": {
39 | "original": "build/assets/images/menubar icons/linux/lock-7.png",
40 | "theme": "mullvad-tray-7"
41 | },
42 | "tray8": {
43 | "original": "build/assets/images/menubar icons/linux/lock-8.png",
44 | "theme": "mullvad-tray-8"
45 | },
46 | "tray9": {
47 | "original": "build/assets/images/menubar icons/linux/lock-9.png",
48 | "theme": "mullvad-tray-9"
49 | },
50 | "tray10": {
51 | "original": "build/assets/images/menubar icons/linux/lock-10.png",
52 | "theme": "mullvad-tray-10"
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/data/database/museeks.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Museeks",
3 | "app_path": [
4 | "/opt/Museeks/"
5 | ],
6 | "icons_path": [
7 | "/opt/Museeks/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "src/images/logos/museeks-tray.png",
14 | "theme": "museeks-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/mx-updater.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "MX Updater",
3 | "app_path": [
4 | "/usr/share/apt-notifier/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/icons/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "mnotify-none-wireframe.png",
12 | "theme": "mnotify-none-wireframe"
13 | },
14 | "tray-update": {
15 | "original": "mnotify-some-wireframe.png",
16 | "theme": "mnotify-some-wireframe"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/nomachine.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "No Machine",
3 | "app_path": [
4 | "/usr/NX/"
5 | ],
6 | "icons_path": [
7 | "/usr/NX/share/images/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "tray-archlinux.png",
12 | "theme": "nomachine-indicator",
13 | "symlinks": [
14 | "tray-archilinux.png",
15 | "tray-centos.png",
16 | "tray-debian.png",
17 | "tray-fedora.png",
18 | "tray-freebsd.png",
19 | "tray-linux.png",
20 | "tray-mageia.png",
21 | "tray-mint.png",
22 | "tray-pclinux.png",
23 | "tray-slackwave.png",
24 | "tray-suse.png",
25 | "tray-ubuntu.png",
26 | "tray-ubuntu-dark.png",
27 | "tray-ubuntu-light.png"
28 | ]
29 | },
30 | "disabled": {
31 | "original": "tray-archlinux-faded.png",
32 | "theme": "nomachine-disabled",
33 | "symlinks": [
34 | "tray-centos-faded.png",
35 | "tray-debian-faded.png",
36 | "tray-fedora-faded.png",
37 | "tray-freebsd-faded.png",
38 | "tray-linux-faded.png",
39 | "tray-mageia-faded.png",
40 | "tray-mint-faded.png",
41 | "tray-pclinux-faded.png",
42 | "tray-slackwave-faded.png",
43 | "tray-suse-faded.png",
44 | "tray-ubuntu-faded.png"
45 | ]
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/data/database/nutstore.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Nutstore",
3 | "app_path": [
4 | "{userhome}/.nutstore/dist/bin/",
5 | "/opt/nutstore/bin/"
6 | ],
7 | "icons_path": [
8 | "{userhome}/.nutstore/dist/bin/resource/tray_pics/",
9 | "/opt/nutstore/bin/resource/tray_pics/"
10 | ],
11 | "icons": {
12 | "panel": {
13 | "original": "nutstore.png",
14 | "theme": "nutstore-panel"
15 | },
16 | "offline": {
17 | "original": "offline.png",
18 | "theme": "nutstore-offline-panel"
19 | },
20 | "oops": {
21 | "original": "oops.png",
22 | "theme": "nutstore-oops-panel"
23 | },
24 | "paused": {
25 | "original": "paused.png",
26 | "theme": "nutstore-paused-panel"
27 | },
28 | "synchronized": {
29 | "original": "synchronized.png",
30 | "theme": "nutstore-synchronized-panel"
31 | },
32 | "synchronizing": {
33 | "original": "synchronizing.png",
34 | "theme": "nutstore-synchronizing-panel"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/nylas.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Nylas N1(Mail)",
3 | "app_path": [
4 | "/usr/share/nylas-mail/",
5 | "/usr/share/nylas/"
6 | ],
7 | "icons_path": [
8 | "/usr/share/nylas-mail/resources/",
9 | "/usr/share/nylas/resources/"
10 | ],
11 | "script": "electron",
12 | "binary": "app.asar",
13 | "icons": {
14 | "empty": {
15 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Zero@2x.png",
16 | "theme": "nylas-tray-empty"
17 | },
18 | "full": {
19 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Full@2x.png",
20 | "theme": "nylas-tray-full"
21 | },
22 | "newitems": {
23 | "original": "internal_packages/system-tray/assets/linux/MenuItem-Inbox-Full-NewItems@2x.png",
24 | "theme": "nylas-tray-full-newitems"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/data/database/odrive.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ODrive",
3 | "app_path": [
4 | "/opt/OpenDrive/",
5 | "/var/lib/flatpak/app/io.github.liberodark.OpenDrive/"
6 | ],
7 | "icons_path": [
8 | "/opt/OpenDrive/resources/",
9 | "/var/lib/flatpak/app/io.github.liberodark.OpenDrive/current/active/files/OpenDrive/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "public/images/logo.png",
16 | "theme": "odrive-tray"
17 | },
18 | "grey": {
19 | "original": "public/images/logo-grey.png",
20 | "theme": "odrive-tray-grey"
21 | },
22 | "sync": {
23 | "original": "public/images/logo-sync.png",
24 | "theme": "odrive-tray-sync"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/data/database/openbazaar2client.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "OpenBazaar 2.0 Desktop Client",
3 | "app_path": [
4 | "/usr/lib/openbazaar2client"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/openbazaar2client/resources/app/imgs/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "openbazaar-system-tray.png",
12 | "theme": "openbazaar-system-tray"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/opensnitch.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Opensnitch",
3 | "app_path": [
4 | "/usr/bin/opensnitch-ui"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/python3/dist-packages/opensnitch/res/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "icon-white.svg",
12 | "theme": "opensnitch-tray"
13 | },
14 | "tray-pause": {
15 | "original": "icon-pause.png",
16 | "theme": "opensnitch-tray-pause"
17 | },
18 | "tray-off": {
19 | "original": "icon-off.png",
20 | "theme": "opensnitch-tray-off"
21 | },
22 | "tray-alert": {
23 | "original": "icon-alert.png",
24 | "theme": "opensnitch-tray-alert"
25 | },
26 | "tray-red": {
27 | "original": "icon-red.png",
28 | "theme": "opensnitch-tray-red"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/data/database/overgrive.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "overGrive",
3 | "app_path": [
4 | "/opt/thefanclub/overgrive/"
5 | ],
6 | "icons_path": [
7 | "/opt/thefanclub/overgrive/icons/dark/",
8 | "/opt/thefanclub/overgrive/icons/light/"
9 | ],
10 | "icons": [
11 | "overgrive-app-ind.svg",
12 | "overgrive-app-ind-con-{1-3}.svg",
13 | "overgrive-app-ind-sleep.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/pb-for-desktop.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PB for Desktop",
3 | "app_path": [
4 | "/opt/PB for Desktop/"
5 | ],
6 | "icons_path": [
7 | "/opt/PB for Desktop/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "app/images/linux-tray-icon-default.png",
14 | "theme": "pushbullet-indicator"
15 | },
16 | "paused": {
17 | "original": "app/images/linux-tray-icon-pause.png",
18 | "theme": "pushbullet-indicator-paused"
19 | },
20 | "transparent": {
21 | "original": "app/images/linux-tray-icon-transparent.png",
22 | "theme": "pushbullet-indicator-transparent"
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/data/database/pcloud-drive.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pCloud Drive",
3 | "app_path": [
4 | "/opt/pcloud/"
5 | ],
6 | "icons_path": [
7 | "/opt/pcloud/resources/app/app/img/tray/"
8 | ],
9 | "icons": {
10 | "offline": {
11 | "original": "offline.png",
12 | "theme": "pcloud-offline"
13 | },
14 | "ok": {
15 | "original": "ok.png",
16 | "theme": "pcloud-ok"
17 | },
18 | "pause": {
19 | "original": "pause.png",
20 | "theme": "pcloud-pause"
21 | },
22 | "sync": {
23 | "original": "sync.png",
24 | "theme": "pcloud-sync"
25 | },
26 | "warning": {
27 | "original": "warning.png",
28 | "theme": "pcloud-warning"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/data/database/pocket-casts.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Pocket Casts",
3 | "app_path": [
4 | "/opt/Pocket Casts/",
5 | "/var/lib/flatpak/app/tech.feliciano.pocket-casts/"
6 | ],
7 | "icons_path": [
8 | "/opt/Pocket Casts/resources/",
9 | "/var/lib/flatpak/app/tech.feliciano.pocket-casts/current/active/files/lib/pocket-casts/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "tray-icon.png",
16 | "theme": "pocket-casts-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/pomodoneapp.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PomoDoneApp",
3 | "app_path": [
4 | "/opt/PomoDoneApp/"
5 | ],
6 | "icons_path": [
7 | "/opt/PomoDoneApp/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "tray_iconTemplate.png",
14 | "theme": "pomodoneapp-indicator"
15 | },
16 | "started": {
17 | "original": "icon_timerTemplate.png",
18 | "theme": "pomodoneapp-started"
19 | },
20 | "paused": {
21 | "original": "icon_pauseTemplate.png",
22 | "theme": "pomodoneapp-paused"
23 | },
24 | "break": {
25 | "original": "tray_iconBreakTemplate.png",
26 | "theme": "pomodoneapp-break"
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/data/database/pomodoro-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Pomodoro Indicator",
3 | "app_path": [
4 | "/opt/extras.ubuntu.com/pomodoro-indicator/"
5 | ],
6 | "icons_path": [
7 | "/opt/extras.ubuntu.com/pomodoro-indicator/share/pomodoro-indicator/icons/"
8 | ],
9 | "icons": [
10 | "pomodoro-indicator-all.svg",
11 | "pomodoro-indicator-dark-{00-36}.svg",
12 | "pomodoro-indicator-light-{00-36}.svg",
13 | "pomodoro-indicator-light.svg",
14 | "pomodoro-start-dark.svg",
15 | "pomodoro-start-light.svg",
16 | "pomodoro-stop-dark.svg",
17 | "pomodoro-stop-light.svg"
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/popcorntime.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PopcornTime CE",
3 | "app_path": [
4 | "/usr/share/popcorntime-ce/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/popcorntime-ce/"
8 | ],
9 | "binary": "Popcorn-Time-CE",
10 | "script": "nwjs",
11 | "icons": {
12 | "tray": {
13 | "original": "src/app/images/icon.png",
14 | "theme": "popcorntime-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/premid.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PreMiD",
3 | "app_path": [
4 | "/usr/lib/premid/",
5 | "/opt/PreMiD/"
6 | ],
7 | "icons_path": [
8 | "/usr/lib/premid/resources/",
9 | "/opt/PreMiD/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "assets/tray/icon.png",
16 | "theme": "premid-tray"
17 | },
18 | "tray@2x": {
19 | "original": "assets/tray/Icon@2x.png",
20 | "theme": "premid-tray"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/prime-indicator-plus.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Prime Indicator Plus",
3 | "app_path": [
4 | "/usr/lib/prime-indicator/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/prime-indicator/icons/"
8 | ],
9 | "icons": {
10 | "intel": {
11 | "original": "prime-indicator-intel.svg",
12 | "theme": "prime-intel"
13 | },
14 | "nividia": {
15 | "original": "prime-indicator-nvidia.svg",
16 | "theme": "prime-nvidia"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/primeindicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Prime Indicator",
3 | "app_path": [
4 | "/usr/lib/primeindicator/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/primeindicator/"
8 | ],
9 | "icons": {
10 | "intel": {
11 | "original": "intel.png",
12 | "theme": "prime-intel"
13 | },
14 | "nividia": {
15 | "original": "nividia.png",
16 | "theme": "prime-nvidia"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/protonmail.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ProtonMail",
3 | "app_path": [
4 | "/usr/lib/protonmail-desktop/",
5 | "/opt/Protonmail Desktop (unofficial)/"
6 | ],
7 | "icons_path": [
8 | "/usr/lib/protonmail-desktop/resources/",
9 | "/opt/Protonmail Desktop (unofficial)/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "app/images/IconTray.png",
16 | "theme": "protonmail-indicator"
17 | },
18 | "tray11": {
19 | "original": "app/images/IconTray11.png",
20 | "theme": "protonmail-indicator"
21 | },
22 | "tray@2x": {
23 | "original": "app/images/IconTray@2x.png",
24 | "theme": "protonmail-indicator"
25 | },
26 | "trayUnread": {
27 | "original": "app/images/IconTrayUnread.png",
28 | "theme": "protonmail-notification"
29 | },
30 | "trayUnread@2x": {
31 | "original": "app/images/IconTrayUnread@2x.png",
32 | "theme": "protonmail-notification"
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/data/database/protonvpn-gui.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ProtonVPN GUI",
3 | "app_path": [
4 | "/usr/lib/python3.10/site-packages/protonvpn_gui/",
5 | "/usr/lib/python3.9/site-packages/protonvpn_gui/",
6 | "/usr/lib/python3.8/site-packages/protonvpn_gui/",
7 | "/usr/lib/python3.7/site-packages/protonvpn_gui/",
8 | "/usr/lib/python3.6/site-packages/protonvpn_gui/",
9 | "{userhome}/.local/lib/python3.10/site-packages/protonvpn_gui/",
10 | "{userhome}/.local/lib/python3.9/site-packages/protonvpn_gui/",
11 | "{userhome}/.local/lib/python3.8/site-packages/protonvpn_gui/",
12 | "{userhome}/.local/lib/python3.7/site-packages/protonvpn_gui/",
13 | "{userhome}/.local/lib/python3.6/site-packages/protonvpn_gui/"
14 | ],
15 | "icons_path": [
16 | "/usr/lib/python3.10/site-packages/protonvpn_gui/assets/icons/",
17 | "/usr/lib/python3.9/site-packages/protonvpn_gui/assets/icons/",
18 | "/usr/lib/python3.8/site-packages/protonvpn_gui/assets/icons/",
19 | "/usr/lib/python3.7/site-packages/protonvpn_gui/assets/icons/",
20 | "/usr/lib/python3.6/site-packages/protonvpn_gui/assets/icons/",
21 | "{userhome}/.local/lib/python3.10/site-packages/protonvpn_gui/assets/icons/",
22 | "{userhome}/.local/lib/python3.9/site-packages/protonvpn_gui/assets/icons/",
23 | "{userhome}/.local/lib/python3.8/site-packages/protonvpn_gui/assets/icons/",
24 | "{userhome}/.local/lib/python3.7/site-packages/protonvpn_gui/assets/icons/",
25 | "{userhome}/.local/lib/python3.6/site-packages/protonvpn_gui/assets/icons/"
26 | ],
27 | "icons": {
28 | "connected": {
29 | "original": "vpn-connected.svg",
30 | "theme": "protonvpngui-connected"
31 | },
32 | "disconnected": {
33 | "original": "vpn-disconnected.svg",
34 | "theme": "protonvpngui-disconnected"
35 | },
36 | "no-network": {
37 | "original": "vpn-no-network.svg",
38 | "theme": "protonvpngui-no-network"
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/data/database/pushbullet-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Pushbullet Indicator",
3 | "app_path": [
4 | "/opt/extras.ubuntu.com/pushbullet-indicator/"
5 | ],
6 | "icons_path": [
7 | "/opt/extras.ubuntu.com/pushbullet-indicator/share/pushbullet-indicator/icons/"
8 | ],
9 | "icons": [
10 | "pushbullet-indicator-dark.svg",
11 | "pushbullet-indicator-light.svg",
12 | "pushbullet-indicator-sync{0-3}-dark.svg",
13 | "pushbullet-indicator-sync{0-3}-light.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/qjoypad.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "QJoyPad",
3 | "app_path": [
4 | "/usr/share/qjoypad/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/icons/hicolor/24x24/apps/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "qjoypad.png",
12 | "theme": "qjoypad-tray"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/qtwaw.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "QtWAW",
3 | "app_path": [
4 | "/usr/share/qtwaw/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/icons/hicolor/256x256/apps/"
8 | ],
9 | "icons": {
10 | "tray16": {
11 | "original": "eu.scarpetta.QtWAW.png",
12 | "theme": "eu.scarpetta.QtWAW-tray"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/radiotray.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "RadioTray",
3 | "app_path": [
4 | "/usr/share/radiotray/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/radiotray/images/"
8 | ],
9 | "icons": [
10 | "radiotray_connecting.svg",
11 | "radiotray_off.svg",
12 | "radiotray_on.svg"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/data/database/rambox.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Rambox",
3 | "app_path": [
4 | "/opt/rambox/",
5 | "/opt/Rambox/",
6 | "/usr/lib/rambox"
7 | ],
8 | "icons_path": [
9 | "/opt/rambox/resources/",
10 | "/opt/Rambox/resources/",
11 | "/usr/lib/rambox/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "tray/active.png",
18 | "theme": "rambox-indicator"
19 | },
20 | "tray@2x": {
21 | "original": "tray/active@2x.png",
22 | "theme": "rambox-indicator"
23 | },
24 | "unread": {
25 | "original": "tray/unread.png",
26 | "theme": "rambox-notification"
27 | },
28 | "unread@2x": {
29 | "original": "tray/unread@2x.png",
30 | "theme": "rambox-notification"
31 | },
32 | "inactive": {
33 | "original": "tray/inactive.png",
34 | "theme": "rambox-inactive"
35 | },
36 | "inactive@2x": {
37 | "original": "tray/inactive@2x.png",
38 | "theme": "rambox-inactive"
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/data/database/ramme.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ramme",
3 | "app_path": [
4 | "/opt/Ramme/"
5 | ],
6 | "icons_path": [
7 | "/opt/Ramme/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "dist/assets/icon-18x18.png",
14 | "theme": "ramme-indicator"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/rare.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Rare",
3 | "app_path": [
4 | "/usr/lib/python3.10/site-packages/rare/",
5 | "/usr/lib/python3.9/site-packages/rare/",
6 | "/usr/lib/python3.8/site-packages/rare/",
7 | "/usr/lib/python3.7/site-packages/rare/",
8 | "/usr/lib/python3.6/site-packages/rare/",
9 | "{userhome}/.local/lib/python3.10/site-packages/rare/",
10 | "{userhome}/.local/lib/python3.9/site-packages/rare/",
11 | "{userhome}/.local/lib/python3.8/site-packages/rare/",
12 | "{userhome}/.local/lib/python3.7/site-packages/rare/",
13 | "{userhome}/.local/lib/python3.6/site-packages/rare/"
14 | ],
15 | "icons_path": [
16 | "/usr/lib/python3.10/site-packages/rare/resources/images/",
17 | "/usr/lib/python3.9/site-packages/rare/resources/images/",
18 | "/usr/lib/python3.8/site-packages/rare/resources/images/",
19 | "/usr/lib/python3.7/site-packages/rare/resources/images/",
20 | "/usr/lib/python3.6/site-packages/rare/resources/images/",
21 | "{userhome}/.local/lib/python3.10/site-packages/rare/resources/images/",
22 | "{userhome}/.local/lib/python3.9/site-packages/rare/resources/images/",
23 | "{userhome}/.local/lib/python3.8/site-packages/rare/resources/images/",
24 | "{userhome}/.local/lib/python3.7/site-packages/rare/resources/images/",
25 | "{userhome}/.local/lib/python3.6/site-packages/rare/resources/images/"
26 | ],
27 | "icons": {
28 | "tray": {
29 | "original": "Rare.png",
30 | "theme": "rare-tray"
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/data/database/rclonetray.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "RCloneTray",
3 | "app_path": [
4 | "/opt/RcloneTray/"
5 | ],
6 | "icons_path": [
7 | "/opt/RcloneTray/resources/app.asar.unpacked/src/ui/icons/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "icon.png",
12 | "theme": "rclonetray-tray"
13 | },
14 | "tray-connected": {
15 | "original": "icon-connected.png",
16 | "theme": "rclonetray-connected-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/record-desktop.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Record Desktop",
3 | "app_path": [
4 | "/usr/bin/record-desktop"
5 | ],
6 | "icons_path": [
7 | "/usr/share/recored-desktop/resources/app/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "icon.png",
12 | "theme": "record-desktop-indicator"
13 | },
14 | "recording": {
15 | "original": "icon-recording.png",
16 | "theme": "record-desktop-indicator-recording"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/rememberthemilk.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Remember The Milk",
3 | "app_path": [
4 | "/opt/RememberTheMilk/",
5 | "/opt/rememberthemilk/"
6 | ],
7 | "icons_path": [
8 | "/opt/RememberTheMilk/resources/app.asar.unpacked/resources/",
9 | "/opt/rememberthemilk/resources/app.asar.unpacked/resources/"
10 | ],
11 | "icons": {
12 | "tray": {
13 | "original": "moo.png",
14 | "theme": "rememberthemilk-tray"
15 | },
16 | "tray-unseen": {
17 | "original": "moo-unseen-notification.png",
18 | "theme": "rememberthemilk-unseen-notification"
19 | },
20 | "tray-notification": {
21 | "original": "moo-notification.png",
22 | "theme": "rememberthemilk-notification"
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/data/database/rhythmbox.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Rhythmbox",
3 | "app_path": [
4 | "{userhome}/.local/share/rhythmbox/plugins/tray_icon.py"
5 | ],
6 | "icons_path": [
7 | "{userhome}/.local/share/rhythmbox/plugins/"
8 | ],
9 | "icons": {
10 | "playing": {
11 | "original": "tray_playing.png",
12 | "theme": "rhythmbox-playing"
13 | },
14 | "indicator": {
15 | "original": "tray_stopped.png",
16 | "theme": "rhythmbox-indicator"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/riot.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Riot Web",
3 | "app_path": [
4 | "/opt/Riot/"
5 | ],
6 | "icons_path": [
7 | "/opt/Riot/resources/app/img/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "riot.png",
12 | "theme": "riot-tray"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/rto-proxy.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "RuTracker Proxy",
3 | "app_path": [
4 | "/opt/rto-proxy/"
5 | ],
6 | "icons_path": [
7 | "/opt/rto-proxy/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "icons/icon.png",
14 | "theme": "rto-proxy-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/sendanywhere.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Send Anywhere",
3 | "app_path": [
4 | "/opt/SendAnywhere/",
5 | "/usr/lib/sendanywhere/"
6 | ],
7 | "icons_path": [
8 | "/opt/SendAnywhere/resources/",
9 | "/usr/lib/sendanywhere/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray32": {
15 | "original": "assets/app/32x32.png",
16 | "theme": "sendanywhere-tray"
17 | },
18 | "tray64": {
19 | "original": "assets/app/64x64.png",
20 | "theme": "sendanywhere-tray"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/session-desktop.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Session Desktop",
3 | "app_path": [
4 | "/opt/Session/"
5 | ],
6 | "icons_path": [
7 | "/opt/Session/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "images/session/session_icon.png",
14 | "theme": "session-desktop-tray"
15 | },
16 | "tray-16": {
17 | "original": "images/session/session_icon_16.png",
18 | "theme": "session-desktop-tray"
19 | },
20 | "tray-32": {
21 | "original": "images/session/session_icon_32.png",
22 | "theme": "session-desktop-tray"
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/data/database/sflphone.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Sflphone",
3 | "app_path": [
4 | "/usr/share/sflphone/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/sflphone/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "sflphone_small.svg",
12 | "theme": "sflphone-indicator"
13 | },
14 | "notif": {
15 | "original": "sflphone_notif.svg",
16 | "theme": "sflphone-notification"
17 | },
18 | "offline": {
19 | "original": "sflphone_offline.svg",
20 | "theme": "sflphone-offline"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/signal.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Signal",
3 | "app_path": [
4 | "/opt/Signal/",
5 | "/usr/lib/signal-desktop/",
6 | "/var/lib/flatpak/app/org.signal.Signal/"
7 | ],
8 | "icons_path": [
9 | "/opt/Signal/resources/",
10 | "/usr/lib/signal-desktop/resources/",
11 | "/var/lib/flatpak/app/org.signal.Signal/current/active/files/Signal/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "images/icon_256.png",
18 | "theme": "signal-tray"
19 | },
20 | "tray-unread-1": {
21 | "original": "images/alert/256/1.png",
22 | "theme": "signal-unread-1"
23 | },
24 | "tray-unread-2": {
25 | "original": "images/alert/256/2.png",
26 | "theme": "signal-unread-2"
27 | },
28 | "tray-unread-3": {
29 | "original": "images/alert/256/3.png",
30 | "theme": "signal-unread-3"
31 | },
32 | "tray-unread-4": {
33 | "original": "images/alert/256/4.png",
34 | "theme": "signal-unread-4"
35 | },
36 | "tray-unread-5": {
37 | "original": "images/alert/256/5.png",
38 | "theme": "signal-unread-5"
39 | },
40 | "tray-unread-6": {
41 | "original": "images/alert/256/6.png",
42 | "theme": "signal-unread-6"
43 | },
44 | "tray-unread-7": {
45 | "original": "images/alert/256/7.png",
46 | "theme": "signal-unread-7"
47 | },
48 | "tray-unread-8": {
49 | "original": "images/alert/256/8.png",
50 | "theme": "signal-unread-8"
51 | },
52 | "tray-unread-9": {
53 | "original": "images/alert/256/9.png",
54 | "theme": "signal-unread-9"
55 | },
56 | "tray-10": {
57 | "original": "images/alert/256/10.png",
58 | "theme": "signal-unread-10"
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/data/database/slimbookamdcontroller.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Slimbook AMD Controller",
3 | "app_path": [
4 | "/usr/share/slimbookamdcontroller/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/slimbookamdcontroller/src/"
8 | ],
9 | "icons": {
10 | "bajo": {
11 | "original": "amd-1.png",
12 | "theme": "amd-bajo"
13 | },
14 | "medio": {
15 | "original": "amd-2.png",
16 | "theme": "amd-medio"
17 | },
18 | "alto": {
19 | "original": "amd-3.png",
20 | "theme": "amd-alto"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/solaar.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Solaar",
3 | "app_path": [
4 | "/usr/share/solaar/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/solaar/icons/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "solaar-init.svg",
12 | "theme": "solaar-indicator"
13 | },
14 | "attention": {
15 | "original": "solaar-attention.svg",
16 | "theme": "solaar-attention"
17 | },
18 | "000": {
19 | "original": "light_000.png",
20 | "theme": "battery-000"
21 | },
22 | "020": {
23 | "original": "light_020.png",
24 | "theme": "battery-020"
25 | },
26 | "040": {
27 | "original": "light_040.png",
28 | "theme": "battery-040"
29 | },
30 | "060": {
31 | "original": "light_060.png",
32 | "theme": "battery-060"
33 | },
34 | "080": {
35 | "original": "light_080.png",
36 | "theme": "battery-080"
37 | },
38 | "100": {
39 | "original": "light_100.png",
40 | "theme": "battery-100"
41 | },
42 | "unknown": {
43 | "original": "light_unknown.png",
44 | "theme": "battery-missing"
45 | }
46 |
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/data/database/spotifywebplayer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Spotify Web Player",
3 | "app_path": [
4 | "/usr/bin/spotifywebplayer"
5 | ],
6 | "icons_path": [
7 | "/usr/bin/spotifywebplayer/icons/"
8 | ],
9 | "icons": {
10 | "spotify_small": {
11 | "original": "spotify-ico-small.png",
12 | "theme": "spotify-indicator"
13 | },
14 | "spotify_small_black": {
15 | "original": "spotify-ico-small-black.png",
16 | "theme": "spotify-indicator"
17 | },
18 | "spotify_small_green": {
19 | "original": "spotify-ico-small-green.png",
20 | "theme": "spotify-indicator"
21 | },
22 | "spotify_small_lime": {
23 | "original": "spotify-ico-small-lime.png",
24 | "theme": "spotify-indicator"
25 | },
26 | "spotify_small_old": {
27 | "original": "spotify-ico-small-old.png",
28 | "theme": "spotify-indicator"
29 | },
30 | "spotify_small_white": {
31 | "original": "spotify-ico-small-white.png",
32 | "theme": "spotify-indicator"
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/data/database/steam.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Steam",
3 | "app_path": [
4 | "{userhome}/.steam/",
5 | "/var/lib/flatpak/app/com.valvesoftware.Steam/"
6 | ],
7 | "icons_path": [
8 | "/usr/share/pixmaps/",
9 | "/var/lib/flatpak/app/com.valvesoftware.Steam/current/active/files/share/pixmaps/"
10 | ],
11 | "icons": {
12 | "indicator": {
13 | "original": "steam_tray_mono.png",
14 | "theme": "steam_tray_mono"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/tartube.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tartube",
3 | "app_path": [
4 | "/usr/share/tartube/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/tartube/icons/status/"
8 | ],
9 | "icons": {
10 | "default": {
11 | "original": "status_default_icon_64.png",
12 | "theme": "tartube-tray"
13 | },
14 | "check": {
15 | "original": "status_check_icon_64.png",
16 | "theme": "tartube-check-tray"
17 | },
18 | "download": {
19 | "original": "status_download_icon_64.png",
20 | "theme": "tartube-download-tray"
21 | },
22 | "info": {
23 | "original": "status_info_icon_64.png",
24 | "theme": "tartube-info-tray"
25 | },
26 | "refresh": {
27 | "original": "status_refresh_icon_64.png",
28 | "theme": "tartube-refresh-tray"
29 | },
30 | "tidy": {
31 | "original": "status_tidy_icon_64.png",
32 | "theme": "tartube-tidy-tray"
33 | },
34 | "update": {
35 | "original": "status_update_icon_64.png",
36 | "theme": "tartube-update-tray"
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/data/database/teams-for-linux.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Teams for Linux",
3 | "app_path": [
4 | "/opt/teams-for-linux/",
5 | "/var/lib/flatpak/app/com.github.IsmaelMartinez.teams_for_linux/"
6 | ],
7 | "icons_path": [
8 | "/opt/teams-for-linux/resources/",
9 | "/var/lib/flatpak/app/com.github.IsmaelMartinez.teams_for_linux/current/active/files/teams-for-linux/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "app/assets/icons/icon-96x96.png",
16 | "theme": "teams-for-linux-tray.svg"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/teams.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Microsoft Teams",
3 | "app_path": [
4 | "/usr/share/teams-insiders/",
5 | "/usr/share/teams/",
6 | "/var/lib/flatpak/app/com.microsoft.Teams/"
7 | ],
8 | "icons_path": [
9 | "/usr/share/teams-insiders/resources/assets/",
10 | "/usr/share/teams/resources/assets/",
11 | "/var/lib/flatpak/app/com.microsoft.Teams/current/active/files/extra/teams/resources/assets/"
12 | ],
13 | "icons": {
14 | "tray-error": {
15 | "original": "Error-Systray16x16@2x.png",
16 | "theme": "teams-tray-error"
17 | },
18 | "tray-dnd": {
19 | "original": "Presence-DnD-Systray16x16@2x.png",
20 | "theme": "teams-tray-dnd"
21 | },
22 | "tray-away": {
23 | "original": "Presence-Away-Systray16x16@2x.png",
24 | "theme": "teams-tray-away"
25 | },
26 | "tray-busy": {
27 | "original": "Presence-Busy-Systray16x16@2x.png",
28 | "theme": "teams-tray-busy"
29 | },
30 | "tray-offline": {
31 | "original": "Presence-Offline-Systray16x16@2x.png",
32 | "theme": "teams-tray-offline"
33 | },
34 | "tray-onshift": {
35 | "original": "Presence-OnShift-Systray16x16@2x.png",
36 | "theme": "teams-tray-onshift"
37 | },
38 | "tray-activity": {
39 | "original": "Presence-Activity-Systray16x16@2x.png",
40 | "theme": "teams-tray-activity"
41 | },
42 | "tray-offshift": {
43 | "original": "Presence-OffShift-Systray16x16@2x.png",
44 | "theme": "teams-tray-offshift"
45 | },
46 | "tray-available": {
47 | "original": "Presence-Available-Systray16x16@2x.png",
48 | "theme": "teams-tray-available"
49 | },
50 | "tray-noactivity": {
51 | "original": "Presence-NoActivity-Systray16x16@2x.png",
52 | "theme": "teams-tray-noactivity"
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/data/database/ticktick.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "TickTick",
3 | "app_path": [
4 | "/opt/TickTick/",
5 | "/var/lib/flatpak/app/com.ticktick.TickTick/"
6 | ],
7 | "icons_path": [
8 | "/opt/TickTick/resources/",
9 | "/var/lib/flatpak/app/com.ticktick.TickTick/current/active/files/extra/opt/TickTick/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "assets/linux/tray/tray.png",
16 | "theme": "ticktick-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/todoist.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Todoist",
3 | "app_path": [
4 | "/opt/Todoist/",
5 | "/var/lib/flatpak/app/com.todoist.Todoist/"
6 | ],
7 | "icons_path": [
8 | "/opt/Todoist/resources/",
9 | "/var/lib/flatpak/app/com.todoist.Todoist/current/active/files/extra/todoist/resources/"
10 | ],
11 | "binary": "app.asar",
12 | "script": "electron",
13 | "icons": {
14 | "tray": {
15 | "original": "icons/icon.png",
16 | "theme": "todoist-tray"
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/touchpad-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Touchpad Indicator",
3 | "app_path": [
4 | "/opt/extras.ubuntu.com/touchpad-indicator/"
5 | ],
6 | "icons_path": [
7 | "/opt/extras.ubuntu.com/touchpad-indicator/share/touchpad-indicator/icons/"
8 | ],
9 | "icons": [
10 | "touchpad-indicator-dark-disabled.svg",
11 | "touchpad-indicator-dark-enabled.svg",
12 | "touchpad-indicator-dark.svg",
13 | "touchpad-indicator-light-enabled.svg",
14 | "touchpad-indicator-light-disabled.svg",
15 | "touchpad-indicator-light.svg",
16 | "touchpad-indicator-normal-disabled.svg",
17 | "touchpad-indicator-normal-enabled.svg",
18 | "touchpad-indicator-normal.svg"
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/data/database/trimage.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Trimage",
3 | "app_path": [
4 | "/usr/lib/python2.7/site-packages/trimage/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/python2.7/site-packages/trimage/pixmaps/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "trimage-icon.png",
12 | "theme": "trimage-indicator"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/tusk.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tusk",
3 | "app_path": [
4 | "/opt/Tusk/"
5 | ],
6 | "icons_path": [
7 | "/opt/Tusk/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "static/IconTray.png",
14 | "theme": "tusk-indicator"
15 | },
16 | "tray@2x": {
17 | "original": "static/IconTray@2x.png",
18 | "theme": "tusk-indicator"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/tutanota-desktop.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tutanota Desktop",
3 | "app_path": [
4 | "/opt/tutanota-desktop/",
5 | "/var/lib/flatpak/app/com.tutanota.Tutanota/"
6 | ],
7 | "icons_path": [
8 | "/opt/tutanota-desktop/resources/icons/",
9 | "/var/lib/flatpak/app/com.tutanota.Tutanota/current/active/files/lib/tutanota/resources/icons/"
10 | ],
11 | "icons": {
12 | "tray": {
13 | "original": "logo-solo-red.png",
14 | "theme": "tutanota-desktop-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/tweet-tray.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tweet Tray",
3 | "app_path": [
4 | "/opt/Tweet Tray/"
5 | ],
6 | "icons_path": [
7 | "/opt/Tweet Tray/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "includes/icons/tray.png",
14 | "theme": "tweet-tray-panel"
15 | },
16 | "tray@2x": {
17 | "original": "includes/icons/tray@2x.png",
18 | "theme": "tweet-tray-panel"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/twitch-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Twitch Indicator",
3 | "app_path": [
4 | "/usr/lib/twitch-indicator/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/twitch-indicator/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "indicator_ubuntu.png",
12 | "theme": "twitch-indicator",
13 | "symlinks": [
14 | "indicator_elementary.png"
15 | ]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/data/database/utools.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "uTools",
3 | "app_path": [
4 | "/opt/uTools/"
5 | ],
6 | "icons_path": [
7 | "/opt/uTools/resources/"
8 | ],
9 | "script": "electron",
10 | "binary": "app.asar",
11 | "icons": {
12 | "tray": {
13 | "original": "dist/res/icon@2x.png",
14 | "theme": "utools-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/variety.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Variety",
3 | "app_path": [
4 | "/opt/extras.ubuntu.com/variety/"
5 | ],
6 | "icons_path": [
7 | "/opt/extras.ubuntu.com/variety/share/variety/media/"
8 | ],
9 | "icons": [
10 | "variety-indicator.png",
11 | "variety-indicator-dark.png",
12 | "variety-indicator.svg",
13 | "variety-indicator-dark.svg"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/vivaldi.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Vivaldi",
3 | "app_path": [
4 | "/opt/vivaldi/",
5 | "/opt/vivaldi-beta/",
6 | "/opt/vivaldi-snapshot/"
7 | ],
8 | "icons_path": [
9 | "/opt/vivaldi/",
10 | "/opt/vivaldi-beta/",
11 | "/opt/vivaldi-snapshot/"
12 | ],
13 | "script": "pak",
14 | "binary": "resources.pak",
15 | "icons": {
16 | "tray": {
17 | "original": "8038",
18 | "theme": "vivaldi-tray"
19 | },
20 | "tray1.15": {
21 | "original": "10190",
22 | "theme": "vivaldi-tray"
23 | },
24 | "tray4.2.2406.40": {
25 | "original": "11151",
26 | "theme": "vivaldi-tray"
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/data/database/vk.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "VK Messenger",
3 | "app_path": [
4 | "/usr/lib/vk/",
5 | "/usr/share/vk/"
6 | ],
7 | "icons_path": [
8 | "/usr/lib/vk/",
9 | "/usr/share/vk/"
10 | ],
11 | "icons": {
12 | "tray": {
13 | "original": "icon24.png",
14 | "theme": "vk-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/vorta.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Vorta",
3 | "app_path": [
4 | "/usr/lib/python3/dist-packages/vorta/",
5 | "/var/lib/flatpak/app/com.borgbase.Vorta/"
6 | ],
7 | "icons_path": [
8 | "/usr/lib/python3/dist-packages/vorta/assets/icons/",
9 | "/var/lib/flatpak/app/com.borgbase.Vorta/current/active/files/lib/python3.7/site-packages/vorta/assets/icons/"
10 | ],
11 | "icons": {
12 | "tray": {
13 | "original": "hdd-o.png",
14 | "theme": "vorta-tray"
15 | },
16 | "tray-active": {
17 | "original": "hdd-o-active.png",
18 | "theme": "vorta-tray-active"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/wazzapp.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "WazzApp",
3 | "app_path": [
4 | "/opt/wazzapp/"
5 | ],
6 | "icons_path": [
7 | "/opt/wazzapp/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "electron-build/src/icon/tray-icon-off.png",
14 | "theme": "whatsapp-tray"
15 | },
16 | "tray@2x": {
17 | "original": "electron-build/src/icon/tray-icon-off2.png",
18 | "theme": "whatsapp-tray"
19 | },
20 | "tray@3x": {
21 | "original": "electron-build/src/icon/tray-icon-off3.png",
22 | "theme": "whatsapp-tray"
23 | },
24 | "tray-msg": {
25 | "original": "electron-build/src/icon/tray-icon-on.png",
26 | "theme": "whatsapp-msg"
27 | },
28 | "tray-msg@2x": {
29 | "original": "electron-build/src/icon/tray-icon-on2.png",
30 | "theme": "whatsapp-msg"
31 | },
32 | "tray-msg@3x": {
33 | "original": "electron-build/src/icon/tray-icon-on3.png",
34 | "theme": "whatsapp-msg"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/webtorrent-desktop.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "WebTorrent Desktop",
3 | "app_path": [
4 | "/usr/lib/webtorrent-desktop/",
5 | "/opt/webtorrent-desktop/",
6 | "/usr/share/webtorrent-desktop/",
7 | "/var/lib/flatpak/app/io.webtorrent.WebTorrent/"
8 | ],
9 | "icons_path": [
10 | "/usr/lib/webtorrent-desktop/resources/app.asar.unpacked/static/",
11 | "/opt/webtorrent-desktop/resources/app.asar.unpacked/static/",
12 | "/usr/share/webtorrent-desktop/resources/app.asar.unpacked/static/",
13 | "/var/lib/flatpak/app/io.webtorrent.WebTorrent/current/active/files/lib/webtorrent-desktop/resources/app.asar.unpacked/static/"
14 | ],
15 | "icons": {
16 | "tray": {
17 | "original": "WebTorrent.png",
18 | "theme": "webtorrent-desktop-panel"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/wechat.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Electronic WeChat",
3 | "app_path": [
4 | "/usr/lib/electronic-wechat/"
5 | ],
6 | "icons_path": [
7 | "/usr/lib/electronic-wechat/assets/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "status_bar_linux.png",
12 | "theme": "wechat-tray"
13 | },
14 | "tray-black": {
15 | "original": "tray_black.png",
16 | "theme": "wechat-tray"
17 | },
18 | "tray-white": {
19 | "original": "tray_white.png.png",
20 | "theme": "wechat-tray"
21 | },
22 | "unread-white": {
23 | "original": "tray_unread_white.png",
24 | "theme": "wechat-tray-unread"
25 | },
26 | "unread-black": {
27 | "original": "tray_unread_black.png",
28 | "theme": "wechat-tray-unread"
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/data/database/whatsapp-nativefier.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Whatsapp Nativefier",
3 | "app_path": [
4 | "/opt/whatsapp-nativefier/"
5 | ],
6 | "icons_path": [
7 | "/opt/whatsapp-nativefier/resources/app/"
8 | ],
9 | "icons": {
10 | "tray16": {
11 | "original": "icon.png",
12 | "theme": "whatsapp-tray"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/whatsapp.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "WhatsApp Desktop",
3 | "app_path": [
4 | "/opt/Whatsapp/",
5 | "/opt/whatsapp-desktop/"
6 | ],
7 | "icons_path": [
8 | "/opt/Whatsapp/resources/app/assets/img/",
9 | "/opt/Whatsapp/resources/app/assets/icon/",
10 | "/opt/whatsapp-desktop/resources/app/assets/icon/",
11 | "/opt/whatsapp-desktop/resources/app/assets/img/"
12 | ],
13 | "icons": {
14 | "tray": {
15 | "original": "trayTemplate.png",
16 | "theme": "whatsapp-tray"
17 | },
18 | "tray@2x": {
19 | "original": "trayTemplate@2x.png",
20 | "theme": "whatsapp-tray"
21 | },
22 | "icon": {
23 | "original": "icon.png",
24 | "theme": "whatsapp-tray"
25 | },
26 | "icon@1.25x": {
27 | "original": "icon@1.25x.png",
28 | "theme": "whatsapp-tray"
29 | },
30 | "icon@1.5x": {
31 | "original": "icon@1.5.png",
32 | "theme": "whatsapp-tray",
33 | "symlinks": [
34 | "icon@1.5x.png"
35 | ]
36 | },
37 | "icon@2x": {
38 | "original": "icon@2x.png",
39 | "theme": "whatsapp-tray"
40 | },
41 | "tray-warning": {
42 | "original": "iconWarning.png",
43 | "theme": "whatsapp-warning"
44 | },
45 | "tray-warning-msg": {
46 | "original": "iconWarningWithMsg.png",
47 | "theme": "whatsapp-warning-msg"
48 | },
49 | "tray-msg": {
50 | "original": "iconWithMsg.png",
51 | "theme": "whatsapp-msg"
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/data/database/whatsdesk.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "WhatsDesk",
3 | "app_path": [
4 | "/opt/whatsdesk/"
5 | ],
6 | "icons_path": [
7 | "/opt/whatsdesk/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "src/icon/tray-icon-off.png",
14 | "theme": "whatsapp-tray"
15 | },
16 | "tray@2x": {
17 | "original": "src/icon/tray-icon-off2.png",
18 | "theme": "whatsapp-tray"
19 | },
20 | "tray-msg": {
21 | "original": "src/icon/tray-icon-on.png",
22 | "theme": "whatsapp-msg"
23 | },
24 | "tray-msg@2x": {
25 | "original": "src/icon/tray-icon-on2.png",
26 | "theme": "whatsapp-msg"
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/data/database/whatsie.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Whatsie",
3 | "app_path": [
4 | "/opt/whatsie/"
5 | ],
6 | "icons_path": [
7 | "/opt/whatsie/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "images/tray.png",
14 | "theme": "whatsie-tray"
15 | },
16 | "notification": {
17 | "original": "images/trayAlert.png",
18 | "theme": "whatsie-tray-attention"
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/data/database/wire.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Wire",
3 | "app_path": [
4 | "/opt/Wire/",
5 | "/opt/wire-desktop/",
6 | "/usr/lib/wire-desktop/",
7 | "/usr/share/wire/"
8 | ],
9 | "icons_path": [
10 | "/opt/Wire/resources/",
11 | "/opt/wire-desktop/resources/",
12 | "/usr/lib/wire-desktop/resources/",
13 | "/usr/share/wire/resources/"
14 | ],
15 | "binary": "electron.asar",
16 | "script": "electron",
17 | "icons": {
18 | "tray": {
19 | "original": "app/img/tray-icon/tray/tray.png",
20 | "theme": "wire-tray"
21 | },
22 | "notification": {
23 | "original": "app/img/tray-icon/tray-with-badge/tray.badge.png",
24 | "theme": "wire-tray-attention"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/data/database/workrave.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Workrave",
3 | "app_path": [
4 | "/usr/share/workrave/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/workrave/images/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "workrave-icon-medium.png",
12 | "theme": "workrave-indicator"
13 | },
14 | "quiet": {
15 | "original": "workrave-quiet-icon-medium.png",
16 | "theme": "workrave-indicator-quiet"
17 | },
18 | "suspended": {
19 | "original": "workrave-suspended-icon-medium.png",
20 | "theme": "workrave-indicator-suspended"
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/data/database/x-tile.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "X Tile",
3 | "app_path": [
4 | "/usr/share/x-tile/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/x-tile/glade/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "tile-quad.svg",
12 | "theme": "x-tile-panel"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/xkbmod-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Xkbmod Indicator",
3 | "app_path": [
4 | "/usr/share/indicator-xkbmod/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/indicator-xkbmod/icons/"
8 | ],
9 | "icons": {
10 | "indicator": {
11 | "original": "icon.png",
12 | "theme": "xkbmod-indicator"
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/data/database/yakyak.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Yakyak",
3 | "app_path": [
4 | "/usr/share/yakyak/",
5 | "/opt/yakyak/"
6 | ],
7 | "icons_path": [
8 | "/usr/share/yakyak/app/icons/",
9 | "/opt/yakyak/resources/app/icons/"
10 | ],
11 | "icons": {
12 | "indicator": {
13 | "original": "icon-read.png",
14 | "theme": "hangouts-available"
15 | },
16 | "indicator@2x": {
17 | "original": "icon-read@2x.png",
18 | "theme": "hangouts-available"
19 | },
20 | "indicator@8x": {
21 | "original": "icon-read@8x.png",
22 | "theme": "hangouts-available"
23 | },
24 | "indicator@20": {
25 | "original": "icon-read@20.png",
26 | "theme": "hangouts-available"
27 | },
28 | "notification": {
29 | "original": "icon-unread.png",
30 | "theme": "hangouts-notification",
31 | "symlinks": [
32 | "icon.png"
33 | ]
34 | },
35 | "notification@2x": {
36 | "original": "icon-unread@2x.png",
37 | "theme": "hangouts-notification",
38 | "symlinks": [
39 | "icon@2x.png"
40 | ]
41 | },
42 | "notification@8x": {
43 | "original": "icon-unread@8x.png",
44 | "theme": "hangouts-notification",
45 | "symlinks": [
46 | "icon@8x.png"
47 | ]
48 | },
49 | "notification@20": {
50 | "original": "icon-unread@20.png",
51 | "theme": "hangouts-notification",
52 | "symlinks": [
53 | "icon@20.png"
54 | ]
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/data/database/yamusic.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "YaMusic.app",
3 | "app_path": [
4 | "/opt/YaMusic.app/"
5 | ],
6 | "icons_path": [
7 | "/opt/YaMusic.app/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "img/icons/16x16.png",
14 | "theme": "yaradio-yamusic-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/yate.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Yate",
3 | "app_path": [
4 | "/usr/bin/yate-qt4"
5 | ],
6 | "icons_path": [
7 | "/usr/share/yate/skins/default/",
8 | "/usr/local/share/yate/skins/default/"
9 | ],
10 | "icons": {
11 | "tray": {
12 | "original": "null_team-32.png",
13 | "theme": "yate-tray"
14 | },
15 | "tray-incomingcall": {
16 | "original": "tray_incomingcall.png",
17 | "theme": "yate-tray-incomingcall"
18 | },
19 | "tray-incomingchat": {
20 | "original": "tray_incomingchat.png",
21 | "theme": "yate-tray-incomingchat"
22 | },
23 | "tray-notification": {
24 | "original": "tray_notification.png",
25 | "theme": "yate-tray-notification"
26 | },
27 | "tray-info": {
28 | "original": "tray_info.png",
29 | "theme": "yate-tray-info"
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/data/database/yd-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Yandex Tools",
3 | "app_path": [
4 | "/usr/share/yd-tools/"
5 | ],
6 | "icons_path": [
7 | "/usr/share/yd-tools/icons/dark/"
8 | ],
9 | "icons": {
10 | "tray": {
11 | "original": "yd-ind-idle.png",
12 | "theme": "yd-ind-idle"
13 | },
14 | "tray-pause": {
15 | "original": "yd-ind-pause.png",
16 | "theme": "yd-ind-pause"
17 | },
18 | "tray-error": {
19 | "original": "yd-ind-error.png",
20 | "theme": "yd-ind-error"
21 | },
22 | "tray-busy1": {
23 | "original": "yd-busy1.png",
24 | "theme": "yd-busy1"
25 | },
26 | "tray-busy2": {
27 | "original": "yd-busy2.png",
28 | "theme": "yd-busy2"
29 | },
30 | "tray-busy3": {
31 | "original": "yd-busy3.png",
32 | "theme": "yd-busy3"
33 | },
34 | "tray-busy4": {
35 | "original": "yd-busy4.png",
36 | "theme": "yd-busy4"
37 | },
38 | "tray-busy5": {
39 | "original": "yd-busy5.png",
40 | "theme": "yd-busy5"
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/data/database/youtube-indicator.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Youtube Indicator",
3 | "app_path": [
4 | "/opt/extras.ubuntu.com/youtube-indicator/"
5 | ],
6 | "icons_path": [
7 | "/opt/extras.ubuntu.com/youtube-indicator/share/youtube-indicator/icons/"
8 | ],
9 | "icons": [
10 | "youtube-indicator-downloading-dark.svg",
11 | "youtube-indicator-dark-disabled.svg",
12 | "youtube-indicator-dark-sync{0-9}.svg",
13 | "youtube-indicator-dark.svg",
14 | "youtube-indicator-downloading-light.svg",
15 | "youtube-indicator-light-disabled.svg",
16 | "youtube-indicator-light-sync{0-9}.svg",
17 | "youtube-indicator-light.svg"
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/data/database/youtube-music.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "YouTube Music",
3 | "app_path": [
4 | "/opt/YouTube Music/"
5 | ],
6 | "icons_path": [
7 | "/opt/YouTube Music/resources/"
8 | ],
9 | "binary": "app.asar",
10 | "script": "electron",
11 | "icons": {
12 | "tray": {
13 | "original": "assets/youtube-music-tray.png",
14 | "theme": "youtube-music-tray"
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/data/database/ytmdesktop.electron.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "YouTube Music Desktop",
3 | "app_path": [
4 | "/opt/ytmdesktop/",
5 | "/usr/lib/ytmdesktop",
6 | "/var/lib/flatpak/app/app.ytmdesktop.ytmdesktop/"
7 | ],
8 | "icons_path": [
9 | "/opt/ytmdesktop/resources/",
10 | "/usr/lib/ytmdesktop/resources/",
11 | "/var/lib/flatpak/app/app.ytmdesktop.ytmdesktop/current/active/files/ytmdesktop/resources/"
12 | ],
13 | "binary": "app.asar",
14 | "script": "electron",
15 | "icons": {
16 | "tray": {
17 | "original": "src/assets/favicon.png",
18 | "theme": "youtube-music-desktop-app-tray"
19 | },
20 | "trayT": {
21 | "original": "src/assets/trayTemplate.png",
22 | "theme": "youtube-music-desktop-app-tray"
23 | },
24 | "trayT@2x": {
25 | "original": "src/assets/trayTemplate@2x.png",
26 | "theme": "youtube-music-desktop-app-tray"
27 | },
28 | "tray-play": {
29 | "original": "src/assets/favicon_play.png",
30 | "theme": "youtube-music-desktop-app-tray-play"
31 | },
32 | "tray-pause": {
33 | "original": "src/assets/favicon_pause.png",
34 | "theme": "youtube-music-desktop-app-tray-pause"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/data/database/yum-extender-dnf.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Yum Extender",
3 | "app_path": [
4 | "/usr/share/pixmaps/yumex/",
5 | "/usr/share/yumex-dnf/gfx/"
6 | ],
7 | "icons_path": [
8 | "/usr/share/pixmaps/yumex/",
9 | "/usr/share/yumex-dnf/gfx/"
10 | ],
11 | "icons": {
12 | "error": {
13 | "original": "tray-error.png",
14 | "theme": "yum-indicator-error"
15 | },
16 | "info": {
17 | "original": "tray-info.png",
18 | "theme": "yum-indicator-info"
19 | },
20 | "no-updates": {
21 | "original": "tray-no-updates.png",
22 | "theme": "yum-indicator-no-updates"
23 | },
24 | "updates": {
25 | "original": "tray-updates.png",
26 | "theme": "yum-indicator-updates"
27 | },
28 | "working": {
29 | "original": "tray-working.png",
30 | "theme": "yum-indicator-working"
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/data/man/hardcode-tray.1:
--------------------------------------------------------------------------------
1 | .Dd August 9, 2017
2 | .Dt HARDCODE-TRAY 1
3 | .Os
4 | .Sh NAME
5 | .Nm hardcode-tray
6 | .Nd Fixes hardcoded tray icons
7 | .Sh SYNOPSIS
8 | .Nm
9 | .Ar --apply
10 | .Op --change-color Ar ``#COLOR #NEWCOLOR'' ...
11 | .Op --conversion-tool Ar TOOL
12 | .Op --theme Ar THEME
13 | .Op --light-theme Ar THEME Ar --dark-theme Ar THEME
14 | .Op --only Ar APP, ... Op --path Ar PATH
15 | .Op --size Ar SIZE
16 | .Nm
17 | .Ar --revert
18 | .Nm
19 | .Ar --version
20 | .Nm
21 | .Ar --clear-cache
22 | .Sh DESCRIPTION
23 | .Nm
24 | is a python utility that fetches theme icons for application tray icons and replace the hardcoded ones, usually packaged with Qt or Electron applications. The script will automatically detect your default theme, the correct icon size, the hard-coded applications, the correct icons for each indicator and fix them. All that with the possibility to revert to the original icons.
25 | .Sh OPTIONS
26 | .Bl -tag -width Ds
27 | .It --apply
28 | Applies the selected THEME onto tray icons, instead of launching in interactive mode.
29 | .It --revert
30 | Reverts the original icons from backup instead of launching in interactive mode.
31 | .It --change-color Ar ''#COLOR #NEWCOLOR'' ...
32 | In THEME icon, change #COLOR to #NEWCOLOR.
33 | .It --clear-cache
34 | Clears the backup cache folder.
35 | .It --conversion-tool Ar TOOL
36 | By default, the conversion tool is detected form installed applications. The user can choose to override this by providing a tool, where TOOL is one of {Inkscape, CairoSVG, RSVGConvert, ImageMagick, SVGExport}.
37 | .It --dark-theme Ar THEME Ar --light-theme Ar THEME
38 | Useful for applications with different sets of icons for light and dark themes. THEME is respectively set as the dark and light theme. Supersedes \fI--theme\fR.
39 | .It --only Ar APP, ...
40 | Choose to only apply given applications instead of all of them.
41 | .It --path Ar PATH
42 | Give an alternate application path. Use with \fI--only\fR.
43 | .It --size SIZE
44 | Force
45 | .Nm
46 | to use a certain icon size, where SIZE is one of {16,22,24}.
47 | .It --version
48 | Prints the version of
49 | .Nm
50 | .Sh FILES
51 | .Nm
52 | uses a JSON configuration file at \fI~/.config/hardcode-tray.json\fR, is it exists. The file supports the following options:
53 | .Bl -tag -width Ds
54 | .It blacklist
55 | List applications whose tray icons will never be patched.
56 | .It conversion_tool
57 | Default tool to be used. Supersedes autodetection.
58 | .It icons
59 | Object containing the \fItheme\fR and \fIsize\fR of the icon to be used.
60 | .It backup_ignore
61 | Boolean setting whether to ignore backing up the original icon.
62 | .It scaling_factor
63 | Widgets scaling factor, autodetected in GNOME, KDE and Cinnamon.
64 |
--------------------------------------------------------------------------------
/data/meson.build:
--------------------------------------------------------------------------------
1 | install_subdir(
2 | 'database',
3 | install_dir: DATA_DIR
4 | )
5 |
6 | install_man(
7 | 'man/hardcode-tray.1'
8 | )
9 |
--------------------------------------------------------------------------------
/license/BSD:
--------------------------------------------------------------------------------
1 | Copyright (c) The Chromium Authors.
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without modification,
5 | are permitted provided that the following conditions are met:
6 |
7 | 1. Redistributions of source code must retain the above copyright notice,
8 | this list of conditions and the following disclaimer.
9 |
10 | 2. Redistributions in binary form must reproduce the above copyright
11 | notice, this list of conditions and the following disclaimer in the
12 | documentation and/or other materials provided with the distribution.
13 |
14 | 3. Neither the name of Django nor the names of its contributors may be used
15 | to endorse or promote products derived from this software without
16 | specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
25 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
29 |
--------------------------------------------------------------------------------
/license/README.md:
--------------------------------------------------------------------------------
1 | # Licenses
2 | This project is dual licensed. The details of this aswell as the licenses themselves can be found here.
3 |
4 | The main body of the script is licensed under the [GPL-3.0](GPL). By submitting a pull request you agree to have your work also licensed as such.
5 |
6 | The [`data_pack.py`](https://github.com/bil-elmoussaoui/Hardcode-Tray/blob/master/HardcodeTray/modules/applications/helpers/data_pack.py) is released under a [BSD license](BSD) as it was originally created by the Chromium developers.
7 |
--------------------------------------------------------------------------------
/meson.build:
--------------------------------------------------------------------------------
1 | project('hardcode-tray',
2 | version: '4.3',
3 | meson_version: '>= 0.40.0',
4 | license: 'GPL-3.0',
5 | default_options: ['prefix=/usr']
6 | )
7 |
8 | dependency('gobject-introspection-1.0')
9 | dependency('gtk+-3.0')
10 |
11 | i18n = import('i18n')
12 | python = import('python3')
13 |
14 | PYTHON_DIR = join_paths(get_option('prefix'), python.sysconfig_path('purelib'))
15 | DATA_DIR = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
16 | LOCALE_DIR = join_paths(get_option('prefix'), get_option('localedir'))
17 |
18 | # Configuration params
19 | conf = configuration_data()
20 | conf.set('DATA_DIR', DATA_DIR)
21 | conf.set('LOCALE_DIR', LOCALE_DIR)
22 | conf.set('PYTHON_DIR', PYTHON_DIR)
23 | conf.set('PACKAGE', meson.project_name())
24 | conf.set('VERSION', meson.project_version())
25 |
26 | subdir('data')
27 | subdir('po')
28 |
29 | install_subdir(
30 | 'HardcodeTray',
31 | install_dir: PYTHON_DIR
32 | )
33 |
34 | configure_file(
35 | input: 'const.py.in',
36 | output: 'const.py',
37 | configuration: conf,
38 | install_dir: join_paths(PYTHON_DIR, 'HardcodeTray')
39 | )
40 |
41 | install_subdir(
42 | 'license',
43 | install_dir: DATA_DIR
44 | )
45 |
46 | configure_file(
47 | input: meson.project_name() + '.py.in',
48 | output: meson.project_name(),
49 | configuration: conf,
50 | install_dir: join_paths(get_option('prefix'), get_option('bindir'))
51 | )
52 |
--------------------------------------------------------------------------------
/po/LINGUAS:
--------------------------------------------------------------------------------
1 | ru
2 | de
3 | nl_NL
4 |
--------------------------------------------------------------------------------
/po/POTFILES:
--------------------------------------------------------------------------------
1 | hardcode-tray.py.in
2 | HardcodeTray/app.py
3 | HardcodeTray/modules/applications/application.py
4 | HardcodeTray/modules/backup.py
5 | HardcodeTray/modules/config/system.py
6 | HardcodeTray/modules/svg/svg.py
7 | HardcodeTray/modules/theme.py
8 | HardcodeTray/utils.py
9 |
--------------------------------------------------------------------------------
/po/meson.build:
--------------------------------------------------------------------------------
1 | i18n.gettext(meson.project_name(), preset: 'glib')
2 |
--------------------------------------------------------------------------------
/screenshots/numix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bilelmoussaoui/Hardcode-Tray/1d52b2c634936404c171d2f14f15ed4b1953e88e/screenshots/numix.png
--------------------------------------------------------------------------------
/screenshots/papirus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bilelmoussaoui/Hardcode-Tray/1d52b2c634936404c171d2f14f15ed4b1953e88e/screenshots/papirus.png
--------------------------------------------------------------------------------
/tests/database/database.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | """
3 | Fixes Hardcoded tray icons in Linux.
4 |
5 | Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
6 | Contributors : Andreas Angerer, Joshua Fogg
7 | Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
8 | Licence : The script is released under GPL, uses a modified script
9 | form Chromium project released under BSD license
10 | This file is part of Hardcode-Tray.
11 | Hardcode-Tray is free software: you can redistribute it and/or
12 | modify it under the terms of the GNU General Public License as published
13 | by the Free Software Foundation, either version 3 of the License, or
14 | (at your option) any later version.
15 | Hardcode-Tray is distributed in the hope that it will be useful,
16 | but WITHOUT ANY WARRANTY; without even the implied warranty of
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 | GNU General Public License for more details.
19 | You should have received a copy of the GNU General Public License
20 | along with Hardcode-Tray. If not, see .
21 | """
22 | import json
23 | from glob import glob
24 | from os import path
25 |
26 | from jsonschema import validate, ValidationError
27 |
28 | DB_FOLDER = path.join(path.dirname(path.abspath(__file__)),
29 | "../../data/database")
30 | DB_FILES = sorted(glob("{}/*.json".format(DB_FOLDER)))
31 | SCHEMA_FILE = path.join(path.dirname(path.abspath(__file__)), 'schema.json')
32 |
33 | with open(SCHEMA_FILE, 'r') as schema_obj:
34 | SCHEMA = json.load(schema_obj)
35 |
36 | has_errors = False
37 | for data_file in DB_FILES:
38 | filename = path.basename(data_file)
39 | with open(data_file, 'r') as file_obj:
40 | try:
41 | validate(json.load(file_obj), SCHEMA)
42 | except (ValidationError, json.decoder.JSONDecodeError) as error:
43 | has_errors = True
44 | print("\033[91m File invalid: {}\033[0m".format(filename))
45 | print("\033[91m {}\033[0m".format(error))
46 | else:
47 | print("\033[92m File Valid: {}\033[0m".format(filename))
48 | exit(int(has_errors))
49 |
--------------------------------------------------------------------------------
/tests/database/schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "properties": {
4 | "name": {
5 | "type": "string"
6 | },
7 | "app_path": {
8 | "type": "array",
9 | "items": {
10 | "type": "string"
11 | },
12 | "minItems": 1,
13 | "uniqueItems": true
14 | },
15 | "icons_path": {
16 | "type": "array",
17 | "items": {
18 | "type": "string"
19 | },
20 | "minItems": 1,
21 | "uniqueItems": true
22 | },
23 | "icons": {
24 | "anyOf": [
25 | {
26 | "type": "object",
27 | "items": {
28 | "type": "object",
29 | "items": {
30 | "theme": {"type": "string"},
31 | "original": {"type": "string"}
32 | },
33 | "required": ["theme", "original"]
34 | }
35 | },
36 | {
37 | "type": "array",
38 | "items": {
39 | "type": "string"
40 | }
41 | }
42 | ]
43 | },
44 | "is_qt": {
45 | "type": "boolean"
46 | },
47 | "force_create_folder": {
48 | "type": "boolean"
49 | },
50 | "backup_ignore": {
51 | "type": "boolean"
52 | },
53 | "binary": {
54 | "type": "string"
55 | },
56 | "script": {
57 | "type": "string",
58 | "enum": [
59 | "b64electron",
60 | "electron",
61 | "nwjs",
62 | "zip",
63 | "pak"
64 | ]
65 | }
66 | },
67 | "required": [
68 | "name",
69 | "app_path",
70 | "icons_path",
71 | "icons"
72 | ]
73 | }
74 |
--------------------------------------------------------------------------------
/tests/pylint.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | SITE_PACKAGES=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
3 | find "$SITE_PACKAGES"/HardcodeTray/ -name '*.py' | xargs pylint --rcfile=.pylintrc $1
4 |
--------------------------------------------------------------------------------