Created
October 24, 2019 01:17
-
-
Save maqp/f10dfa9c1b347732453e3bf84f44eaf0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import subprocess | |
import sys | |
# defining keys & strings to be used | |
key = "org.gnome.settings-daemon.plugins.media-keys custom-keybindings" | |
subkey1 = key.replace(" ", ".")[:-1]+":" | |
item_s = "/"+key.replace(" ", "/").replace(".", "/")+"/" | |
firstname = "custom" | |
# get the current list of custom shortcuts | |
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8") | |
array_str = get("gsettings get "+key) | |
# in case the array was empty, remove the annotation hints | |
command_result = array_str.lstrip("@as") | |
current = eval(command_result) | |
# make sure the additional keybinding mention is no duplicate | |
n = 1 | |
while True: | |
new = item_s+firstname+str(n)+"/" | |
if new in current: | |
n = n+1 | |
else: | |
break | |
# add the new keybinding to the list | |
current.append(new) | |
# create the shortcut, set the name, command and shortcut key | |
cmd0 = 'gsettings set '+key+' "'+str(current)+'"' | |
cmd1 = 'gsettings set '+subkey1+new+" name '"+sys.argv[1]+"'" | |
cmd2 = 'gsettings set '+subkey1+new+" command '"+sys.argv[2]+"'" | |
cmd3 = 'gsettings set '+subkey1+new+" binding '"+sys.argv[3]+"'" | |
for cmd in [cmd0, cmd1, cmd2, cmd3]: | |
subprocess.call(["/bin/bash", "-c", cmd]) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment