Сам нашел:
Проблема заключалась в том, что я добавил собственное сочетание клавиш для xfce4-terminal --drop-down
на клавишу§
(в нашей раскладке это клавиша «тильда» ), которая сохраняется в конфигурации как<property name="section" type="string" value="xfce4-terminal --drop-down"/>
Если я удалю этот ярлык (или отредактирую его на Super + §
), все будет работать как положено.
Я не могу придумать какой-либо функции в zsh, которая облегчила бы это, помимо средств обработки строк, предлагаемых расширением параметра .
Вот некоторый код, который анализирует строки KEY=VALUE в ассоциативный массив config
со следующими ограничениями:
#
), игнорируются. function parse_config {
emulate -LR zsh
setopt extended_glob
local n=0 line lines
local LC_ALL=C
lines=("${(@f)$(<$1)}")
for line in "${(@)lines}"; do
((++n))
line=${line##[$' \t']##}
if [[ -z $line || $line == \#* ]]; then
continue
elif [[ $line = *$'\0'* ]]; then
echo >&2 "$1:$n:Null character in configuration file"
config=()
return 1
elif [[ $line == [A-Z_a-z][0-9A-Z_a-z]#\=* ]]; then
config[${line%%=*}]=${line#*=}
else
echo >&2 "$1:$n:Syntax error in configuration file"
config=()
return 1
fi
done
}
Чтобы вызвать эту функцию:
set -e
typeset -A config
parse_config /path/to/config/file
echo "Configuration dump:"
for k in ${(ko)config}; do
print -lr "$k=$config[$k]"
done