Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save JuninhoFreitas/dd70d8fa3c5886d4023ede8d29052566 to your computer and use it in GitHub Desktop.

Select an option

Save JuninhoFreitas/dd70d8fa3c5886d4023ede8d29052566 to your computer and use it in GitHub Desktop.
WezTerm + Herdr: Alt+Enter e Shift+Enter para quebra de linha

WezTerm + Herdr: Alt+Enter e Shift+Enter para quebra de linha

Guia rápido para o Alt+Enter e o Shift+Enter funcionarem como nova linha no prompt do agente (harness / input do agente), em vez de fullscreen ou enviar mensagem.

Contexto

  • Alt+Enter no WezTerm, por padrão, aciona ToggleFullScreen; o emulador intercepta o atalho e o Herdr não recebe Enter com Alt.
  • Shift+Enter e Enter costumam chegar ao aplicativo como o mesmo byte \r (carriage return) no modo legado de teclado; o harness trata os dois como enviar.
  • O Herdr já pede keyboard enhancement no client (PushKeyboardEnhancementFlags), mas o WezTerm só honra o protocolo estilo Kitty se isso estiver habilitado na config.

1. Alt+Enter (desativar fullscreen do WezTerm)

Em ~/.wezterm.lua, desative o binding padrão de Alt+Enter e, opcionalmente, mapeie fullscreen para outra tecla (ex.: F11):

local wezterm = require 'wezterm'

local config = wezterm.config_builder()

config.keys = {
  {
    key = 'Enter',
    mods = 'ALT',
    action = wezterm.action.DisableDefaultAssignment,
  },
  -- opcional: fullscreen em outro lugar
  -- { key = 'F11', mods = '', action = wezterm.action.ToggleFullScreen },
}

return config

DisableDefaultAssignment faz o WezTerm repassar a combinação para a sessão/tab em vez de executar o ação padrão.


2. Shift+Enter distinto de Enter (enable_kitty_keyboard)

No mesmo ~/.wezterm.lua:

config.enable_kitty_keyboard = true

Com isso, após o Herdr ativar os flags de teclado no arranque, o WezTerm tende a enviar sequências distintas para teclas modificadas (por exemplo CSI u para Enter com modificadores). O stack do Herdr consegue ver Shift no evento e repassar ao PTY de forma que o harness possa tratar Shift+Enter como quebra de linha e Enter como enviar.

Use um WezTerm recente (a opção existe desde versões de 2022; prefira build atual).

Referências úteis:


3. Se ainda não funcionar

  • Teste WezTerm → Herdr direto, sem tmux no meio (o Herdr trata tmux com caminho diferente, p.ex. modifyOtherKeys).
  • Ctrl+J costuma inserir nova linha (\n) em vários prompts sem submeter.
  • Ctrl+Alt+Enter costuma ser outra combinação que o harness já interpreta como newline.

Se após enable_kitty_keyboard = true o Shift+Enter ainda submeter, pode ser limite do harness dentro do painel — vale anotar versões do WezTerm, do Herdr e da ferramenta do agente ao reportar issue.


Exemplo mínimo combinado (~/.wezterm.lua)

local wezterm = require 'wezterm'
local config = wezterm.config_builder()

config.enable_kitty_keyboard = true

config.keys = {
  {
    key = 'Enter',
    mods = 'ALT',
    action = wezterm.action.DisableDefaultAssignment,
  },
}

return config
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment