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 🔥

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *