39 lines
1.3 KiB
Bash
39 lines
1.3 KiB
Bash
#!/bin/bash
|
|||
|
|
if [ $# -lt 3 ]; then
|
||
|
|
echo "Usage <new_name> <new_cmd> <key_combo>"
|
||
|
|
exit 1;
|
||
|
|
fi
|
||
|
|
counter=0;
|
||
|
|
list="["
|
||
|
|
num=0
|
||
|
|
while read -r line; do
|
||
|
|
list="$list$(echo $line | sed 's/\]//g' | sed 's/\[//g'), "
|
||
|
|
ret="$(printf "%s\n" "$line" | grep "custom$counter")"
|
||
|
|
if [ "$ret" == "" ]; then
|
||
|
|
num=$counter
|
||
|
|
break;
|
||
|
|
else
|
||
|
|
(( counter++ ))
|
||
|
|
num=$counter;
|
||
|
|
fi
|
||
|
|
done < <(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | sed 's/, /\n/g')
|
||
|
|
key="org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:"
|
||
|
|
custom="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$num/"
|
||
|
|
if [[ $list = *"@as"* ]]; then
|
||
|
|
list="['$custom']"
|
||
|
|
else
|
||
|
|
list="$list'$custom']"
|
||
|
|
fi
|
||
|
|
echo $list
|
||
|
|
new_name=$1
|
||
|
|
new_cmd=$2
|
||
|
|
key_combo=$3
|
||
|
|
echo "$key$custom $new_name $new_cmd $key_combo"
|
||
|
|
|
||
|
|
#key_str="$(xev)"
|
||
|
|
#echo $key_str | sed 's/KeyRelease/\nKeyRelease/g' | sed 's/KeyPress/\nKeyPress/g' | grep KeyPress | sed 's/keysym/\nkeysym/g'| sed 's/same_screen/\nsame_screen/g' | grep keysym | grep -o -P '(?<=, ).*(?=\),)' | sed 's/_L//g' | sed 's/_R//g'
|
||
|
|
#exit
|
||
|
|
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$list"
|
||
|
|
gsettings set $key$custom name "$new_name"
|
||
|
|
gsettings set $key$custom command "$new_cmd"
|
||
|
|
gsettings set $key$custom binding "$key_combo"
|