diff --git a/bash/debian-gnome/gestor-atajos.sh b/bash/debian-gnome/gestor-atajos.sh index 2d65a59..def9aae 100755 --- a/bash/debian-gnome/gestor-atajos.sh +++ b/bash/debian-gnome/gestor-atajos.sh @@ -1,20 +1,55 @@ #!/bin/bash -# Ruta del propio script SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" -BACKUP="$SCRIPT_DIR/gnome-shortcuts-backup.txt" +BACKUP="$SCRIPT_DIR/gnome-shortcuts-backup.dconf" + +SCHEMAS=( + "org.gnome.desktop.wm.keybindings" + "org.gnome.mutter.keybindings" + "org.gnome.mutter.wayland.keybindings" + "org.gnome.shell.keybindings" + "org.gnome.settings-daemon.plugins.media-keys" + "org.gnome.desktop.a11y.keyboard" +) + +backup_all() { + echo "Guardando todos los atajos en $BACKUP..." + > "$BACKUP" + for schema in "${SCHEMAS[@]}"; do + echo "# $schema" >> "$BACKUP" + dconf dump "/$(echo $schema | tr . /)/" >> "$BACKUP" + echo "" >> "$BACKUP" + done +} disable_all() { - echo "Guardando atajos actuales en $BACKUP..." - dconf dump /org/gnome/settings-daemon/plugins/media-keys/ > "$BACKUP" + backup_all - echo "Deshabilitando todos los atajos de GNOME..." - dconf reset -f /org/gnome/settings-daemon/plugins/media-keys/ + echo "Deshabilitando todos los atajos…" - echo "Deshabilitando la tecla Super para abrir Actividades..." + # Reset completo de los esquemas + for schema in "${SCHEMAS[@]}"; do + echo "→ Reset: $schema" + dconf reset -f "/$(echo $schema | tr . /)/" + done + + echo "→ Deshabilitando overlay-key (Super)…" gsettings set org.gnome.mutter overlay-key '' - echo "Todo deshabilitado." + echo "→ Forzando a vacío solo las claves que son listas…" + for schema in "${SCHEMAS[@]}"; do + for key in $(gsettings list-keys "$schema"); do + type=$(gsettings range "$schema" "$key" | head -n 1) + + # Solo modificar claves tipo array (listas de atajos) + if [[ "$type" == "array" ]]; then + echo " $schema.$key → []" + gsettings set "$schema" "$key" "[]" + fi + done + done + + echo "Todos los atajos deshabilitados." } enable_all() { @@ -23,13 +58,13 @@ enable_all() { exit 1 fi - echo "Restaurando atajos desde $BACKUP..." - dconf load /org/gnome/settings-daemon/plugins/media-keys/ < "$BACKUP" + echo "Restaurando atajos desde $BACKUP…" + dconf load / < "$BACKUP" - echo "Restaurando la tecla Super..." + echo "Restaurando overlay-key…" gsettings reset org.gnome.mutter overlay-key - echo "Todo restaurado." + echo "Atajos restaurados." } case "$1" in