· Serhii Siryk · Development  · 4 min de leitura

Alternar a Visibilidade do Terminal Ghostty com um Atalho Global no macOS



Alternar a Visibilidade do Terminal Ghostty com um Atalho Global no macOS

Se chegou aqui, provavelmente é um utilizador do Ghostty que adora ter um terminal a uma tecla de distância — e já bateu na mesma parede que eu.

O Problema do Atalho Global Integrado do Ghostty

O Ghostty suporta um atalho global nativo através do seu ficheiro de configuração. A sintaxe é assim:

keybind = global:ctrl+y=toggle_visibility

Funciona — até fechar a app. No próximo lançamento, o Ghostty espalha todos os separadores cuidadosamente arrumados em janelas separadas. Todas. As. Vezes.

Na versão 1.3.1 (build 15212), nenhuma das variações que experimentei funcionou de forma fiável — há várias issues abertas no tracker do Ghostty que confirmam que é um problema conhecido. Segui em frente e encontrei duas alternativas sólidas sem este inconveniente — e como bónus, ambas são genéricas o suficiente para funcionar com qualquer app, não apenas o Ghostty.


Opção 1: Hammerspoon (Recomendado)

Hammerspoon é uma ferramenta poderosa de automação do macOS que lhe permite escrever scripts em Lua para controlar praticamente tudo no seu sistema. Para o nosso caso de uso, é perfeita.

O que faz

  • Ao premir Ctrl + `, o Ghostty recebe foco se estiver em execução em segundo plano.
  • Se o Ghostty já for a app em primeiro plano, esconde-o (alternância estilo quake).
  • Se o Ghostty não estiver em execução, lança-o.

Configuração

1. Instale o Hammerspoon

Descarregue-o de hammerspoon.org ou instale via Homebrew:

brew install --cask hammerspoon

2. Edite a sua configuração do Hammerspoon

Abra (ou crie) ~/.hammerspoon/init.lua e adicione:

local bundleID = "com.mitchellh.ghostty"

hs.hotkey.bind({"ctrl"}, "`", function()
    local app = hs.application.get(bundleID)

    if not app then
        hs.application.launchOrFocusByBundleID(bundleID)
        return
    end

    if app:isFrontmost() then
        app:hide()
    else
        app:activate(true)
    end
end)

3. Recarregue o Hammerspoon

Clique no ícone do Hammerspoon na barra de menus e selecione Reload Config, ou prima Cmd + R dentro da consola do Hammerspoon.

4. Conceda a permissão de Acessibilidade

O macOS irá pedir-lhe para autorizar o Hammerspoon em:

System Settings → Privacy & Security → Accessibility

Adicione o Hammerspoon à lista e ative-o. Isto é necessário para o Hammerspoon enviar teclas e controlar outras aplicações.

É tudo — o seu atalho está ativo.


Opção 2: Automator do macOS (Sem Ferramentas Extras)

Se preferir não instalar o Hammerspoon, o macOS tem tudo o que precisa integrado. Esta abordagem usa um Automator Quick Action (anteriormente chamado Service) com um pequeno AppleScript.

O que faz

O mesmo comportamento da versão Hammerspoon:

  • Dá foco ao Ghostty ou esconde-o se estiver em execução.
  • Lança o Ghostty se não estiver.

Configuração

1. Abra o Automator

Lance o Automator a partir do Spotlight (Cmd + Space, escreva “Automator”).

2. Crie um novo Quick Action

Escolha File → New e selecione Quick Action como tipo de documento.

3. Adicione uma ação Run AppleScript

Na barra de pesquisa à esquerda, procure “Run AppleScript” e arraste-o para a área do fluxo de trabalho. Substitua o conteúdo predefinido por:

on run {input, parameters}
	tell application "Ghostty"
		if not running then
			activate
			return input
		end if
	end tell

	tell application "System Events"
		set terminalProcess to first process whose name is "Ghostty"

		if frontmost of terminalProcess then
			set visible of terminalProcess to false
		else
			set frontmost of terminalProcess to true
		end if
	end tell

	return input
end run

4. Guarde o fluxo de trabalho

Guarde-o com um nome reconhecível, por exemplo ToggleTerminal. O Automator guarda-o como ToggleTerminal.workflow.

5. Atribua um atalho de teclado

Vá a:

System Settings → Keyboard → Keyboard Shortcuts → Services → General

Encontre ToggleTerminal na lista e atribua o seu atalho preferido (por exemplo `Ctrl + “).

6. Conceda permissões no primeiro arranque

Na primeira vez que o fluxo de trabalho é executado, o macOS mostra um aviso:

“Ghostty.app” wants access to control “System Events.app”. Allowing control will provide access to documents and data in “System Events.app”, and to perform actions within that app.

Clique em OK. Não voltará a ser perguntado.


Comparar as Duas Abordagens

HammerspoonAutomator
Instalação extra necessáriaSim (Hammerspoon)Não
Localização da configuração~/.hammerspoon/init.luaSystem Settings → Services
Lança o Ghostty se não estiver em execução✅✅
Esconde quando já tem foco✅✅
Permissão necessáriaAccessibilityAutomation (System Events)
PersonalizaçãoAlta (scripting Lua completo)Limitada a AppleScript

Se já usa o Hammerspoon para outras automações, a abordagem em Lua encaixa na perfeição. Se preferir manter o sistema enxuto, o fluxo de trabalho do Automator resolve o problema sem dependências.


Conclusão

O Ghostty é um excelente terminal, mas a implementação do atalho global tem algumas arestas por limar no macOS. Ambas as soluções acima contornam o problema por completo — e como nenhuma é específica do Ghostty, pode reutilizar a mesma abordagem para atribuir um atalho de alternância a qualquer app do sistema. Basta trocar o bundle ID ou o nome da app.

Escolha a que melhor se adapta à sua configuração, atribua Ctrl + ` e desfrute de um terminal que aparece e desaparece exatamente quando quer.

Back to Blog

Related Posts

View All Posts »