Warp + herdr: cmd+p otwiera paletę poleceń 🚀
Chciałem mieć w Warpie skrót cmd+p, który otwiera paletę poleceń herdr. Problem: skróty w Warpie odpalają tylko wbudowane akcje. Nie wyślesz nimi tekstu ani sekwencji klawiszy (zgłoszenia #4045 i #14300 → #9159). Ghostty to umie dzięki keybind = ...=text:, Warp nie.
Rozwiązanie składa się z 4 kroków: plugin z paletą, skrót w herdr, wyłączenie palet Warpa, Karabiner-Elements jako tłumacz klawiszy.
Inspiracja
Pomysł podejrzałem w theskumar/dotfiles (plik docs/HERDR.md). Tam Ghostty na cmd+klawisz wysyła prefix herdr i dany klawisz. Zrobiłem to samo w Warpie, tylko inną drogą.
Krok 1: plugin z paletą
Paleta to plugin fabiogaliano/herdr-command-palette. Przed instalacją przejrzałem kod: nie łączy się z siecią, używa tylko herdr i fzf, a shell=True wywołuje wyłącznie dla moich własnych poleceń z sekcji [keys].
Instaluję go przypiętego do konkretnego commita:
herdr plugin install fabiogaliano/herdr-command-palette --ref 5d9c983fba1c198efcd07c77cfd26c14c00234d6
Krótki SHA nie działa, dostaniesz couldn't find remote ref. Podaj pełny.
Krok 2: skrót w herdr
W config.toml herdr dodaję skrót prefix+space. Mój prefix to domyślny ctrl+b.
[[keys.command]] key = "prefix+space" type = "shell" command = "herdr plugin pane open --plugin palette --entrypoint palette"
Po zmianie configu dostałem Action rejected / plugin action not found. Naprawia to jedno polecenie:
herdr server reload-config
Krok 3: wyłączam palety Warpa
W ~/.warp/keybindings.yaml:
"workspace:toggle_command_palette": none "workspace:toggle_navigation_palette": none
Warp czyta ten plik tylko przy starcie, więc po zmianie zrestartuj aplikację.
Krok 4: Karabiner-Elements
Skoro Warp nie wyśle sekwencji, robi to Karabiner. Reguła działa tylko w Warpie (bundle id ^dev\.warp\.Warp): cmd+p zamienia na ctrl+b, a potem spację.
{
"description": "Warp: cmd+p otwiera paletę herdr",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "p",
"modifiers": { "mandatory": ["command"] }
},
"to": [
{ "key_code": "b", "modifiers": ["left_control"] },
{ "key_code": "spacebar" }
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": ["^dev\\.warp\\.Warp"]
}
]
}
]
}
Ograniczenie
Karabiner nie wie, czy w danej karcie Warpa działa herdr. Poza herdr ctrl+b i spacja trafią prosto do powłoki.
Masz lepszy sposób na wysyłanie sekwencji z Warpa? Zostaw komentarz 🔥