[GNOME] 命令行添加快捷键

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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值