Сделайте tmux блок, пока программа не завершится

Ваши клавиатурные привязки не работают, потому что Ваша клавиатура больше не имеет те keysyms.

Если Вы хотите иметь, например, Alt+F делают что-то, то Вам нужен "F" в некотором ключе. Но если Вы загружаете один только "рутений", затем нет никакого "F" вообще (ни никакая латинская буква).

Я думаю, особенно когда необходимо обработать несколько разметок, что намного лучше позволить X11 (через setxkbmap), делают задание для Вас; путем менеджеры окон делают это намного более ограничено, поскольку Вы обнаружили.

Можно также попробовать, поскольку ужасный виджет, кажется, называет setxkbmap, изменяет "рутений" с "рутением, нас", например:

kbdcfg.layout = { { "us", "" }, { "ru,us", "phonetic" } }

тем путем "мы", расположение будет сложено сверху того "рутения" при загрузке, и keysysms "нас" расположение, в то время как все еще не непосредственно typeable будут замечены уровнем X11, который обрабатывает привязки клавиш.

8
16.06.2014, 19:24
1 ответ

tmux 1.8 введена команда wait-for, которая может помочь сделать то, что вы хотите:

time tmux new-window -t p12346 'echo foo;sleep 10;tmux wait-for -S p12346-neww-done' \; \
          wait-for p12346-neww-done

Имя "канала" (p12346-neww-done в примере выше) может быть чем угодно (при условии, что оно одинаково в обоих местах; если вы предполагаете несколько потенциально одновременных вызовов, то вы, вероятно, также захотите использовать уникальное значение для каждого вызова). Важной частью является то, что вы "ждете" сигнала после команды new-window (как часть одной и той же команды tmux, таким образом, экранированная точка с запятой: tmux должен обрабатывать ее, а не оболочку). и посылать сигнал в качестве последнего шага команды окна.

Если вам нужно быть немного более устойчивым к прерыванию последовательности команд уродливым или неудобным способом, то вы можете попробовать использовать оболочку-ловушку для посылки сигнала (переупорядочить бит для удобочитаемости(?)):

time \
tmux new-window -t p12346 '
       trap "tmux wait-for -S p12346-neww-done" 0
       echo foo
       sleep 10
       ' \; wait-for p12346-neww-done
8
27.01.2020, 20:12

Теги

Похожие вопросы