初始化dotfiles

This commit is contained in:
2026-06-18 11:36:12 +08:00
commit f4305709a5
37 changed files with 1540 additions and 0 deletions

40
hypr/scripts/keymap Executable file
View File

@ -0,0 +1,40 @@
#!/bin/sh
# 快捷键速查 - 动态从 hyprctl binds 读取
modmask_to_str() {
local mask=$1
local mods=""
# bit 0: SHIFT (1), bit 2: CTRL (4), bit 3: ALT (8), bit 6: SUPER (64)
[ $((mask & 64)) -ne 0 ] && mods="${mods}Super+"
[ $((mask & 1)) -ne 0 ] && mods="${mods}Shift+"
[ $((mask & 4)) -ne 0 ] && mods="${mods}Ctrl+"
[ $((mask & 8)) -ne 0 ] && mods="${mods}Alt+"
[ $((mask & 16)) -ne 0 ] && mods="${mods}Mod2+"
[ $((mask & 32)) -ne 0 ] && mods="${mods}Mod3+"
[ $((mask & 128)) -ne 0 ] && mods="${mods}Mod5+"
echo "${mods%+}"
}
hyprctl binds 2>/dev/null | awk -v RS='' -F'\n' '
/^bindd/ {
key=""; desc=""; mask=""; submap=""
for (i=2; i<=NF; i++) {
split($i, kv, ": ")
if (kv[1] ~ /^[[:space:]]*modmask$/) mask=kv[2]
if (kv[1] ~ /^[[:space:]]*key$/) key=kv[2]
if (kv[1] ~ /^[[:space:]]*description$/) desc=kv[2]
if (kv[1] ~ /^[[:space:]]*submap$/) submap=kv[2]
}
# 跳过鼠标绑定和无描述的
if (key ~ /^mouse/ || desc == "") next
if (submap != "") next
print mask "\t" key "\t" desc
}
' | while IFS=$'\t' read -r mask key desc; do
mod_str=$(modmask_to_str "$mask")
if [ -n "$mod_str" ]; then
printf " %-28s %s\n" "${mod_str}+${key}" "${desc}"
else
printf " %-28s %s\n" "${key}" "${desc}"
fi
done | fzf --prompt " 快捷键速查 > " --reverse --no-sort --bind 'esc:abort'