arr_contains() {
local arr="$1"
local item="$2"
local script=$(cat <<EOF
import sys, json, ast
arr = ast.literal_eval(sys.stdin.read())
status = 0 if "$item" in arr else 1
sys.exit(status)
EOF
)
echo "$arr" | python -c "$script"
}
arr_append() {
local arr="$1"
local item="$2"
local script=$(cat <<EOF
import sys, json, ast
arr = ast.literal_eval(sys.stdin.read())
print(json.dumps(arr + ["$2"]))
EOF
)
echo "$arr" | python -c "$script"
}
add_gnome_keybinding() {
local id="$1"; local name="$2"; local keybinding="$3"; local command="$4"
local id_key="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/$1/"
local keybindings=$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings)
if ! arr_contains "$keybindings" "$id_key"; then
local new_keybindings=$(arr_append "$keybindings" "$id_key")
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$new_keybindings"
fi
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$id_key name "$name"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$id_key binding "$keybinding"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:$id_key command "$command"
}
如为托盘添加开关快捷键(Super+T):
mkdir -p $HOME/.local/script
cat << EOF > $HOME/.local/script/toggle_extension
#!/usr/bin/env bash
extension="\$1"
if [ "\$extension" = "" ]; then
exit 1
fi
if LC_ALL=C gnome-extensions show "\$extension" | grep -q "Enabled: No"; then
gnome-extensions enable "\$extension"
else
gnome-extensions disable "\$extension"
fi
EOF
chmod +x $HOME/.local/script/toggle_extension
add_gnome_keybinding toggle_tray toggle_tray "<Super>t" "$HOME/.local/script/toggle_extension appindicatorsupport@rgcjonas.gmail.com"