├── .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 | --------------------------------------------------------------------------------