> а) не переключаться в системную консоль. Единственное зачем мне это > бывает нужно делать, это если какая-нибудь графическая программа > (например файрфокс) начинает не просто тормозить, а блокировать весь > X-сервер, тогда зайти и прибить.
А она прямо все Иксы блокирует, или просто захватывает на себя ввод? Во втором случае, вероятно, ее совершенно ни к чему было бы прибивать, когда можно просто освободиться от захвата. Для этого даже сочетание клавиш назначено из коробки: <C-A-kp-divide>, где <kp-divide> — это косая черта, которая на цифровой клавиатурке. Только сам механизм по-умолчанию отключен, ибо именно на захвате ввода работают иксовые блокировщики экрана. Но его можно временно включить, а потом как-нибудь выключить. Например, таким костылем:
#!/bin/bash # xkb-ungrab --- release keyboard block # Force ungrab is mapped to <C-A-kp-divide> by default, while killing # grabbing client - to <C-A-kp-multiply>. Yet they have no use until # underlying machinery is explicitly allowed by turning on # 'grab:break_actions' option. It must not be turned on however, # since it allows to trespass screen lockers with ease (most of them) # or at least to crash user session (SDDM). hash setxkbmap xdotool xkbcomp fgrep || exit 1 xkbmap-save () { declare -g -A xkbmap while IFS+=':' read key value; do xkbmap[$key]=$value done < \ <(setxkbmap -query) } xkbmap-restore () { local -a opts for o in rules model layout variant; do opts+=("-$o" "${xkbmap[$o]}") done opts+=(-option '' -option "${xkbmap[options]}") setxkbmap "${opts[@]}" } [[ $DISPLAY ]] || DISPLAY=':0' export DISPLAY xkbmap-save setxkbmap -option 'grab:break_actions' xdotool key 'XF86Ungrab' # 'XF86ClearGrab' to kill client that grabbed kbd xkbmap-restore if [[ -f "$HOME/.xkb" && -d "$HOME/.xkb.d/" ]]; then xkbcomp -I"$HOME/.xkb.d" "$HOME/.xkb" "$DISPLAY" fi fgrep -q 'xfree86(grab_break)' < <(xkbcomp "$DISPLAY" -) \ && printf >&2 $"Something went wrong: FORCE UNGRAB IS STILL ALLOWED\n"
Оно хотя и редко бывает нужно, но узнать, нет ли более чистого решения, было бы весьма интересно. Таким мог быть, к примеру, вызов блокировщика экрана через тот же механизм, что и снятие захвата.