Files
scripts/bash/debian-gnome/gestor-atajos.sh
T

82 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
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() {
backup_all
echo "Deshabilitando todos los atajos…"
# 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 "→ 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() {
if [ ! -f "$BACKUP" ]; then
echo "No existe el archivo de backup: $BACKUP"
exit 1
fi
echo "Restaurando atajos desde $BACKUP"
dconf load / < "$BACKUP"
echo "Restaurando overlay-key…"
gsettings reset org.gnome.mutter overlay-key
echo "Atajos restaurados."
}
case "$1" in
disable)
disable_all
;;
enable)
enable_all
;;
*)
echo "Uso: $0 {disable|enable}"
exit 1
;;
esac