Add functions to disable Chrome notifications

This commit is contained in:
2Shirt 2021-09-27 18:41:34 -06:00
parent b61f243cc8
commit cb3ec42b92
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C
2 changed files with 49 additions and 1 deletions

View file

@ -120,7 +120,7 @@ BASE_MENUS = {
MenuEntry('Software Bundle', 'auto_install_software_bundle'),
),
'Configure System': (
MenuEntry('Chrome Notifications', no_op),
MenuEntry('Chrome Notifications', 'auto_disable_chrome_notifications'),
#MenuEntry('O&O ShutUp 10', no_op),
MenuEntry('Open Shell', 'auto_config_open_shell'),
MenuEntry('uBlock Origin', 'auto_enable_ublock_origin'),

View file

@ -409,6 +409,11 @@ def auto_config_open_shell():
TRY_PRINT.run('Open Shell...', reg_write_settings, REG_OPEN_SHELL_SETTINGS)
def auto_disable_chrome_notifications():
"""Disable notifications in Google Chrome."""
TRY_PRINT.run('Chrome Notifications...', disable_chrome_notifications)
def auto_enable_ublock_origin():
"""Enable uBlock Origin in supported browsers."""
prompt = ' Press Enter to continue...'
@ -452,6 +457,49 @@ def auto_install_vcredists():
# Configure Functions
def disable_chrome_notifications():
"""Disable notifications in Google Chrome."""
defaults_key = 'default_content_setting_values'
profiles = []
search_path = case_insensitive_path(
f'{os.environ.get("LOCALAPPDATA")}/Google/Chrome/User Data',
)
# Bail early
if not search_path:
raise GenericWarning('No profiles detected.')
# Close any running instances of Chrome
kill_procs('chrome.exe', force=True)
# Build list of profiles
for item in search_path.iterdir():
if not item.is_dir():
continue
if re.match(r'^(Default|Profile).*', item.name, re.IGNORECASE):
profiles.append(item)
# Bail if no profiles were detected
if not profiles:
raise GenericWarning('No profiles detected.')
# Set notifications preference
for profile in profiles:
pref_file = profile.joinpath('Preferences')
if not pref_file.exists():
continue
# Update config
pref_data = json.loads(pref_file.read_text())
if defaults_key not in pref_data['profile']:
pref_data['profile'][defaults_key] = {}
pref_data['profile'][defaults_key]['notifications'] = 2
# Save file
pref_file.write_text(json.dumps(pref_data, separators=(',', ':')))
def enable_ublock_origin():
"""Enable uBlock Origin in supported browsers."""
base_paths = [