-
Notifications
You must be signed in to change notification settings - Fork 61
/
hardcode-tray.py.in
executable file
·123 lines (113 loc) · 5.45 KB
/
hardcode-tray.py.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/env python3
"""
Fixes Hardcoded tray icons in Linux.
Author : Bilal Elmoussaoui (bil.elmoussaoui@gmail.com)
Contributors : Andreas Angerer, Joshua Fogg
Website : https://github.com/bil-elmoussaoui/Hardcode-Tray
Licence : The script is released under GPL, uses a modified script
form Chromium project released under BSD license
This file is part of Hardcode-Tray.
Hardcode-Tray is free software: you can redistribute it and/or
modify it under the terms of the GNU General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Hardcode-Tray is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Hardcode-Tray. If not, see <http://www.gnu.org/licenses/>.
"""
__version__ = "@VERSION@"
from argparse import ArgumentParser
from gettext import bindtextdomain, textdomain, gettext as _
from locale import bindtextdomain as locale_bindtextdomain
from locale import textdomain as locale_textdomain
from os import geteuid
from sys import path as sys_path
from gi import require_version
require_version("Gtk", "3.0")
from gi.repository import Gtk
locale_bindtextdomain("@PACKAGE@", '@LOCALE_DIR@')
locale_textdomain("@PACKAGE@")
bindtextdomain("@PACKAGE@", '@LOCALE_DIR@')
textdomain("@PACKAGE@")
sys_path.insert(0, "@PYTHON_DIR@")
from HardcodeTray.app import App
from HardcodeTray.const import DESKTOP_ENV, ICONS_SIZE, THEMES_LIST
from HardcodeTray.enum import Action, ConversionTools
if geteuid() != 0:
print(_("You need to have root privileges to run the script."))
exit(_("Please try again, this time using 'sudo'. Exiting."))
parser = ArgumentParser(prog="@PACKAGE@")
parser.add_argument("--apply", "-a", action='store_true',
help=_("Fix hardcoded tray icons"))
parser.add_argument('--change-color', "-cc", type=str, nargs='+',
help=_("Replace a color with an other one, "
"works only with SVG."))
parser.add_argument("--clear-cache", action="store_true",
help=_("Clear backup files"))
parser.add_argument("--conversion-tool", "-ct",
help=_("Which of conversion tool to use"),
type=str, choices=ConversionTools.choices())
parser.add_argument("--dark-theme", "-dt",
help=_("Use a specified theme for the dark icons."
"Can't be used with --theme"
"Works only with --light-theme."),
type=str)
parser.add_argument("--light-theme", "-lt",
help=_("Use a specified theme for the light icons."
" Can't be used with --theme."
"Works only with --dark-theme."),
type=str)
parser.add_argument("--only", "-o",
help=_("Fix only one application or more, linked by a ','.\n"
"example : --only dropbox,telegram"),
type=str)
parser.add_argument("--path", "-p",
help=_("Use a different icon path for a single application."),
type=str)
parser.add_argument("--revert", "-r", action='store_true',
help=_("Revert fixed hardcoded tray icons"))
parser.add_argument("--size", "-s", help=_("Use a different icon size instead "
"of the default one."),
type=int, choices=ICONS_SIZE)
parser.add_argument("--theme",
help=_("Use a different icon theme instead "
"of the default one."),
type=str, choices=THEMES_LIST)
parser.add_argument("--version", "-v", action='store_true',
help=_("Print the version number of Hardcode-Tray."))
args = parser.parse_args()
App.set_args(args)
if (not DESKTOP_ENV or DESKTOP_ENV == "other") and not App.icon_size():
exit(_("You need to run the script using 'sudo -E'.\nPlease try again"))
if args.version:
print("Hardcode-Tray: {}".format(__version__))
print("Gtk: {}.{}".format(Gtk.MAJOR_VERSION, Gtk.MINOR_VERSION))
else:
print(_("Welcome to Hardcode-Tray!"))
print(_("Hardcode-Tray replaces some icons on the binary files of some applications. \n"
"Please close all the running applications before running Hardcode-Tray script."))
print(_("Desktop Environment: {}").format(DESKTOP_ENV.title()))
print(_("Scaling Factor: {}").format(App.scaling_factor()))
print(_("Icon Size: {}").format(App.icon_size()))
if not isinstance(App.theme(), dict):
print(_("Icon Theme: {}").format(App.theme()))
else:
print(_("Dark Icon Theme: {}").format(App.theme("dark")))
print(_("Light Icon Theme: {}").format(App.theme("light")))
print(_("Conversion Tool: {}").format(App.svg()))
print(_("To Do: "), end="")
print(", ".join(map(lambda x: x.title(), App.get("only")))
if App.get("only") else _("All"))
action = App.get("action")
if action == Action.APPLY:
print(_("Applying now.."))
elif action == Action.REVERT:
print(_("Reverting now.."))
elif action == Action.CLEAR_CACHE:
print(_("Clearing cache..."))
print("\n")
App.execute()
print(_("\nDone, Thank you for using the Hardcode-Tray fixer!"))