62 lines
1.9 KiB
Bash
62 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# A script to parse the Hyprland configuration to store keybindings in a table
|
|
|
|
[[ -f "./docs/scripts/install.sh" ]] || (
|
|
printf "\n\e[0;91mx \e[0m\e[1;77mNot in the project root directory\e[0m"
|
|
exit 1
|
|
)
|
|
|
|
KEYBINDINGS_FILE="./docs/KEYBINDINGS.md"
|
|
|
|
function getList() {
|
|
content=$1
|
|
name=$2
|
|
list_start=$(echo "$content" | sed "/$name = \[/!d;=;Q")
|
|
list=$(echo "$content" | tail +"$list_start")
|
|
list_end=$(echo "$list" | sed '/\]/!d;=;Q')
|
|
list=$(echo "$list" | head -n"$list_end")
|
|
|
|
echo "$list"
|
|
}
|
|
|
|
[[ -f "./home/system/hyprland/default.nix" ]] || (echo "File ./home/system/hyprland/default.nix not found" && exit 1)
|
|
|
|
config=$(cat "./home/system/hyprland/default.nix")
|
|
|
|
# Bind
|
|
bind=$(getList "$config" "bind")
|
|
# Bindm (mouse)
|
|
bindm=$(getList "$config" "bindm")
|
|
# Bindl (lock)
|
|
bindl=$(getList "$config" "bindl")
|
|
# Bindle (lock, repetition)
|
|
bindle=$(getList "$config" "bindle")
|
|
|
|
# Join the lists:
|
|
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"')
|
|
|
|
echo "# Keybindings" >"$KEYBINDINGS_FILE"
|
|
echo "" >>"$KEYBINDINGS_FILE"
|
|
echo "The list of the keybindings working on Hyprland:" >>"$KEYBINDINGS_FILE"
|
|
echo "" >>"$KEYBINDINGS_FILE"
|
|
|
|
echo "| Description | Keybinding | Command |" >>"$KEYBINDINGS_FILE"
|
|
echo "| -- | -- | -- |" >>"$KEYBINDINGS_FILE"
|
|
echo "| Switch Workspace | SUPER + {Number} | workspace {Number} |" >>"$KEYBINDINGS_FILE"
|
|
echo "| Move app to Workspace | SUPER SHIFT + {Number} | movetoworkspace {Number} |" >>"$KEYBINDINGS_FILE"
|
|
echo "$keybindings" | while read line; do
|
|
comment=$(echo "$line" | cut -d\# -f2)
|
|
line=$(echo "$line" | cut -d\# -f1)
|
|
line=${line:1:${#line}-3}
|
|
mod=$(echo "$line" | cut -d, -f1)
|
|
key=$(echo "$line" | cut -d, -f2)
|
|
dispatcher=$(echo "$line" | cut -d, -f3)
|
|
params=$(echo "$line" | cut -d, -f4)
|
|
|
|
[[ $mod == '$mod' ]] && mod="SUPER + "
|
|
[[ $mod == '$shiftMod' ]] && mod="SUPER SHIFT + "
|
|
|
|
echo "| $comment | $mod$key | $dispatcher $params |" >>"$KEYBINDINGS_FILE"
|
|
done
|