Skip to content

Instantly share code, notes, and snippets.

@dmitryTsatsarin
Forked from anonymous/gist:23448361fac0512688f2
Last active August 29, 2015 14:23
Show Gist options
  • Save dmitryTsatsarin/3c77ef20b6245cbc99a9 to your computer and use it in GitHub Desktop.
Save dmitryTsatsarin/3c77ef20b6245cbc99a9 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import subprocess
import os.path
import re
import sys
#Requires dconf tool - available in Mint as dconf-cli
#run with -r argument to remove created shortcuts
home = os.path.expanduser("~")
personal = home + "/.local/share/applications/"
common = "/usr/share/applications/"
cinnamon = home + "/.cinnamon/panel-launchers/"
baseKey = "/org/cinnamon"
quickLaunch = "/panel-launchers"
keybinds = "/keybindings"
customKeybinds = "/custom-keybindings"
shortcutBase = "/custom00000000"
bind = "/binding"
cmd = "/command"
name = "/name"
customKeybindsList = "/custom-list"
executable = "dconf"
def strip(item):
item = re.sub('[\[\]\"\'\n]', "", item)
item = re.sub(', ', ",", item)
item = item.split(",")
return item
def getExec(file):
handle = open(file, 'r')
for line in handle:
match = re.match('(?:Exec=)(.*)\n', line)
if match:
match = re.sub('( )+%[a-zA-Z]( )*$', "", match.group(1))
return strip(match)
handle.close()
def addShortcutKey(num, prog):
subprocess.call([executable, "write", baseKey + keybinds + customKeybinds + shortcutBase + num + name, " \"ql" + num + "\""])
subprocess.call([executable, "write", baseKey + keybinds + customKeybinds + shortcutBase + num + cmd, " \"" + "".join(prog) + "\""])
subprocess.call([executable, "write", baseKey + keybinds + customKeybinds + shortcutBase + num + bind, " \"<Super>" + num + "\""])
def addShortcutToIndex(nameList):
proc = subprocess.Popen([executable, "read", baseKey + keybinds + customKeybindsList], stdout=subprocess.PIPE)
end = strip(proc.communicate()[0])
end = [x for x in end if not x[:-1] == shortcutBase[1:] and not x == '']
[end.append(name) for name in nameList]
subprocess.call([executable, "write", baseKey + keybinds + customKeybindsList, " " + str(end)])
def mainAdd():
proc = subprocess.Popen([executable, "read", baseKey + quickLaunch], stdout=subprocess.PIPE)
qList = proc.communicate()[0]
qList = strip(qList)
addList = []
for i, item in enumerate(qList, start=1):
if i < 11:
if os.path.isfile(common + item):
ex = getExec(common + item)
elif os.path.isfile(personal + item):
ex = getExec(personal + item)
elif os.path.isfile(cinnamon + item):
ex = getExec(cinnamon + item)
else:
continue
addShortcutKey(str(i)[-1], ex)
addList.append(shortcutBase[1:] + str(i)[-1])
addShortcutToIndex(addList)
def mainRemove():
for num in range(0,10):
subprocess.call([executable, "reset", "-f", baseKey + keybinds + customKeybinds + shortcutBase + str(num) + "/"])
proc = subprocess.Popen([executable, "read", baseKey + keybinds + customKeybindsList], stdout=subprocess.PIPE)
remList = strip(proc.communicate()[0])
try:
remList = [x for x in remList if not x[:-1] == shortcutBase[1:] and not x == '']
except:
remList = []
subprocess.call([executable, "write", baseKey + keybinds + customKeybindsList, " " + str(remList)])
if "-r" in sys.argv:
mainRemove()
else:
mainAdd()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment