Zellij plugin to quickly navigate your panes (clone of nvim's harpoon)

Related tags

Utilities harpoon
Overview

harpoon

A Zellij plugin for quickly searching and switching between tabs.

Copy of the original harpoon for nvim.

usage

Usage

  • a to add pane to list
  • Up and Down or j and k to cycle through pane list
  • d to remove pane from list
  • Enter or l to switch to the selected pane
  • Esc or Ctrl + c to exit

Why?

In a sentence: Quickly access your most used panes.

  • Manually manage list of favorite panes
  • Easily add/remove from this list
  • Use list to quickly go to pane
  • Panes are automatically removed from your list when they are closed
  • When tabs or panes change name, these changes propagate to your harpoon list

Coming next:

In front of every pane in the list, there will be a character, this will allow you to navigate to any pane in two steps:

  • open plugin
  • type char corresponding to desired pane.

Makes pane navigation easier.

Installation

You'll need rust installed.

With build script

  • chmod +x ./build.sh
  • ./build.sh

Manual

Harpoon depends on cached, another Zellij plugin. Make sure you have it installed!

Note you can also add it to a layout so that so that it directly runs.

  • git clone [email protected]:Nacho114/harpoon.git
  • cd harpoon
  • cargo build --release
  • mkdir -p ~/.config/zellij/plugins/
  • mv target/wasm32-wasi/release/harpoon.wasm ~/.config/zellij/plugins/

Keybinding

Add the following to your zellij config somewhere inside the keybinds section:

shared_except "locked" {
    bind "Ctrl y" {
        LaunchOrFocusPlugin "file:~/.config/zellij/plugins/harpoon.wasm" {
            floating true
        }
    }
}

You likely already have a shared_except "locked" section in your configs. Feel free to add bind there.

How to run

When zellij is running, you need to launch cached (which we just installed):

zellij action start-or-reload-plugin file:~/.config/zellij/plugins/cached.wasm

Contributing

If you find any issues or want to suggest ideas please open an issue.

Development

Make sure you have rust installed then run:

zellij action new-tab --layout ./dev.kdl
You might also like...
This plugin provides an interface for storing unencrypted values on the application cache folder.

Tauri Plugin Store This plugin provides an interface for storing unencrypted values on the application cache folder. Architecture This repo shape migh

A VtubeStudio plugin that allows iFacialMocap to stream data to the app, enabling full apple ARkit facial tracking to be used for 2D Vtuber models.

facelink_rs A VtubeStudio plugin that allows iFacialMocap to stream data to the app, enabling full apple ARkit facial tracking to be used for 2D Vtube

A rollup plugin that compile Rust code into WebAssembly modules

rollup-plugin-rust tl;dr -- see examples This is a rollup plugin that loads Rust code so it can be interop with Javascript base project. Currently, th

A plugin for Devzat that can tell the time at various timezones.

Devzat Time Teller On Devzat, people come from all around the time. It is sometime hard to know what time it is for other peoples. This plugin let you

[SWC plugin] workaround for jest

[SWC plugin] workaround for jest This is a SWC plugin to handle jest compatibility issues. This SWC plugin should be used with @swc/jest. usage instal

Replicated storage docker plugin.

Fractal Docker Plugin This plugin handles the creation and deletion of docker volumes backed by copy-on-write filesystems (BTRFS currently), regular s

Bioinformatics plugin for nushell.

Nushell bio A bioinformatics plugin for nushell. The aim initially is to create a bunch of parsers for all of the common bioinformatics file formats a

SWC plugin for transform Vue3-jsx syntax

swc-plugin-transform-vue3-jsx 💡 SWC plugin for faster conversion vue3-jsx. Installation npm npm install swc-plugin-transform-vue3-jsx -D yarn yarn ad

A Foundry plugin that enables you to plot charts within solidity.

🖌️ solplot A Foundry plugin that enables you to plot charts within solidity. Installation First, make sure that you have Rust installed. Then install

Comments
  • Error running plugin

    Error running plugin

    Running the plugging stalemates for about 1-2 seconds then crashes zellij with

    Received empty message from server
    

    Looking at the logs i have:

    WARN   |zellij_server::route     | 2023-08-13 17:29:47.732 [server_router] [zellij-server/src/route.rs:877]: Server ready, retrying sending instruction. 
    WARN   |zellij_server::plugins   | 2023-08-13 17:29:49.840 [wasm      ] [zellij-server/src/plugins/mod.rs:177]: Plugin /home/yendor/.config/zellij/plugins/cached.wasm not found, starting it instead 
    WARN   |zellij_utils::ipc        | 2023-08-13 17:29:52.086 [router    ] [zellij-utils/src/ipc.rs:230]: Error in IpcReceiver.recv(): InvalidMarkerRead(Error { kind: UnexpectedEof, message: "failed to fill whole buffer" }) 
    ERROR  |zellij_client            | 2023-08-13 17:29:52.086 [router    ] [zellij-client/src/lib.rs:309]: Received empty message from server 
    WARN   |zellij_utils::input::layo| 2023-08-13 17:31:49.834 [main      ] [zellij-utils/src/input/layout.rs:867]: Failed to read swap layout file: /home/yendor/.config/zellij/layouts/main.swap.kdl. Error: Os { code: 2, kind: NotFound, message: "No such file or directory" } 
    INFO   |zellij_client            | 2023-08-13 17:31:49.836 [main      ] [zellij-client/src/lib.rs:143]: Starting Zellij client! 
    INFO   |zellij_server            | 2023-08-13 17:31:49.839 [main      ] [zellij-server/src/lib.rs:237]: Starting Zellij server! 
    INFO   |zellij_server            | 2023-08-13 17:31:49.890 [main      ] [zellij-server/src/lib.rs:862]: Compiling plugins using Cranelift 
    INFO   |zellij_server::plugins   | 2023-08-13 17:31:49.890 [wasm      ] [zellij-server/src/plugins/mod.rs:124]: Wasm main thread starts 
    INFO   |zellij_server::plugins::p| 2023-08-13 17:31:49.898 [async-std/runti] [zellij-server/src/plugins/plugin_loader.rs:595]: Loaded plugin 'tab-bar' from cache folder at '/home/yendor/.cache/zellij' in 4.693828ms 
    INFO   |zellij_server::plugins::p| 2023-08-13 17:31:49.899 [async-std/runti] [zellij-server/src/plugins/plugin_loader.rs:595]: Loaded plugin 'compact-bar' from cache folder at '/home/yendor/.cache/zellij' in 5.797197ms 
    INFO   |zellij_server::plugins::p| 2023-08-13 17:31:49.901 [async-std/runti] [zellij-server/src/plugins/plugin_loader.rs:595]: Loaded plugin 'status-bar' from cache folder at '/home/yendor/.cache/zellij' in 7.017377ms 
    WARN   |zellij_utils::input::layo| 2023-08-13 17:31:50.280 [main      ] [zellij-utils/src/input/layout.rs:867]: Failed to read swap layout file: ./dev.swap.kdl. Error: Os { code: 2, kind: NotFound, message: "No such file or directory" } 
    INFO   |zellij_server::plugins::p| 2023-08-13 17:31:50.349 [async-std/runti] [zellij-server/src/plugins/plugin_loader.rs:595]: Loaded plugin '/home/yendor/Downloads/harpoon/target/wasm32-wasi/debug/harpoon.wasm' from cache folder at '/home/yendor/.cache/zellij' in 17.748806ms 
    INFO   |zellij_server::plugins::p| 2023-08-13 17:31:50.683 [async-std/runti] [zellij-server/src/plugins/plugin_loader.rs:634]: Compiled plugin '/home/yendor/Downloads/harpoon/target/wasm32-wasi/debug/harpoon.wasm' in 262.540233ms 
    INFO   |zellij_server::plugins::w| 2023-08-13 17:32:31.338 [wasm      ] [zellij-server/src/plugins/wasm_bridge.rs:194]: Bye from plugin 4 
    WARN   |zellij_server::plugins   | 2023-08-13 17:32:34.369 [wasm      ] [zellij-server/src/plugins/mod.rs:177]: Plugin /home/yendor/Downloads/harpoon/target/wasm32-wasi/debug/harpoon.wasm not found, starting it instead 
    INFO   |zellij_server::plugins::p| 2023-08-13 17:32:36.910 [async-std/runti] [zellij-server/src/plugins/plugin_loader.rs:634]: Compiled plugin '/home/yendor/Downloads/harpoon/target/wasm32-wasi/debug/harpoon.wasm' in 250.850439ms 
    WARN   |zellij_utils::ipc        | 2023-08-13 17:32:43.381 [router    ] [zellij-utils/src/ipc.rs:230]: Error in IpcReceiver.recv(): InvalidMarkerRead(Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" }) 
    ERROR  |zellij_client            | 2023-08-13 17:32:43.381 [router    ] [zellij-client/src/lib.rs:309]: Received empty message from server 
    
    opened by lecoqjacob 1
Owner
null
This is a Pomodoro Clock implemented as a Zellij plugin.

Pomodoro Clock This is a Pomodoro Clock implemented as a Zellij plugin. It shows a Pomodoro time as well as current date time. Prerequisite You must i

Tw 15 Nov 14, 2022
Plugin to request a relaunch when uploading a Skyline plugin through cargo skyline

restart-plugin A skyline plugin for allowing cargo-skyline (or other tools) to restart your game without you having to touch your controller. Install

null 1 Nov 21, 2021
A small tool to clone git repositories to a standard location, organised by domain name and path.

A small tool to clone git repositories to a standard location, organised by domain name and path. Runs on BSD, Linux, macOS, Windows, and more.

Wesley Moore 68 Dec 19, 2022
A flexible, simple to use, immutable, clone-efficient String replacement for Rust

A flexible, simple to use, immutable, clone-efficient String replacement for Rust. It unifies literals, inlined, and heap allocated strings into a single type.

Scott Meeuwsen 119 Dec 12, 2022
Akinator clone in Rust with Tauri, written in 2 days

Rustinator Akinator clone written in Rust + Tauri in 2 days How to play Install Rust Install Tauri Open a cmd/Terminal in this folder. Run cd src-taur

Face 5 Jul 17, 2023
Open-source Rewind.ai clone written in Rust and Vue running 100% locally with whisper.cpp

mind-overflow Open-source Rewind.AI clone built with Tauri and Vue. Leverages whisper.cpp for Speech-to-Text and (wip: llama.cpp for Text generation a

Maxime Dolores 4 Aug 9, 2023
Rust crate that provides a convenient macro to quickly plot variables.

Debug Plotter This crate provides a convenient macro to quickly plot variables. Documentation For more information on how to use this crate, please ta

Fabian Bösiger 82 Dec 31, 2022
Quickly mint NFT(able)s port forwards remotely

Easy expose A really simple way to expose some service behind a NAT, similar to rathole and frp. WARNING: This does not secure the channel, or even do

Ben Simms 3 Dec 3, 2022
Tracing layer to quickly inspect spans and events

tracing-texray First, a word of warning: This is alpha software. Don't run this in prod or anywhere where a panic would ruin your day. tracing-texray

Russell Cohen 23 Dec 3, 2022
Cakecutter - a utility tool that quickly sets up a project from a pre-built template

Cakecutter Create projects from pre-built cakes (templates)! Supports files, packages, content, running commands and more! Cakecutter is a utility too

Dhravya Shah 10 Jun 22, 2022