Skip to content

Instantly share code, notes, and snippets.

@5ec1cff
Last active April 3, 2023 11:35
Show Gist options
  • Save 5ec1cff/232c2626d34f55e4fe0a3b4b3001a2c0 to your computer and use it in GitHub Desktop.
Save 5ec1cff/232c2626d34f55e4fe0a3b4b3001a2c0 to your computer and use it in GitHub Desktop.
Generate windows registry of context menu of IDEs in JB ToolBox
import os
# find icons in %AppData%\Microsoft\Windows\Start Menu\Programs\JetBrains Toolbox
template_add = r'''Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\{prog_name}]
@="Open with {name}"
"Icon"="\"{current}\\icons\\{prog_name}.ico\""
[HKEY_CLASSES_ROOT\Directory\Background\shell\{prog_name}\command]
@="\"{home}\\AppData\\Local\\JetBrains\\Toolbox\\scripts\\{prog_name}.cmd\" \"%V\""
[HKEY_CLASSES_ROOT\Directory\shell\{prog_name}]
@="Open with {name}"
"Icon"="\"{current}\\icons\\{prog_name}.ico\""
[HKEY_CLASSES_ROOT\Directory\shell\{prog_name}\command]
@="\"{home}\\AppData\\Local\\JetBrains\\Toolbox\\scripts\\{prog_name}.cmd\" \"%V\""
'''
template_remove = '''Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\Directory\Background\shell\{prog_name}]
[-HKEY_CLASSES_ROOT\Directory\Background\shell\{prog_name}\command]
[-HKEY_CLASSES_ROOT\Directory\shell\{prog_name}]
[-HKEY_CLASSES_ROOT\Directory\shell\{prog_name}\command]
'''
def generate_reg(names):
with open('add.reg', 'w') as f:
for name in names:
if type(name) is tuple:
name, prog_name = name
else:
prog_name = name.lower()
f.write(
template_add.format(prog_name=prog_name, name=name, home=os.getenv("UserProfile").replace('\\', '\\\\'), current=os.getcwd().replace('\\', '\\\\'))
)
with open('rem.reg', 'w') as f:
for name in names:
if type(name) is tuple:
name, prog_name = name
else:
prog_name = name.lower()
f.write(
template_remove.format(prog_name=prog_name, name=name)
)
if __name__ == "__main__":
generate_reg(["CLion", "IDEA", "PyCharm", ("Android Studio", "studio")])
@5ec1cff
Copy link
Author

5ec1cff commented Mar 18, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment