Skip to content
/ room Public

A Zellij plugin for quickly searching and switching tabs 🖤

License

Notifications You must be signed in to change notification settings

rvcas/room

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖤 room

A Zellij plugin for quickly searching and switching between tabs.

usage

Usage

  • Tab to cycle through tab list
  • Up and Down to cycle through tab list
  • Enter to switch to the selected tab
  • Start typing to filter the tab list
  • Esc or Ctrl + c to exit
  • Quick jump to a tab by pressing it's displayed number

To enable quick jumps, you need to set the config option for it to quick_jump true. The downside is that you won't be able to properly filter down tabs that have a number in their name.

Why?

I rename my tabs so once I have a lot of them I have to start counting and then press Ctrl + t then <tab num>. So I wanted something that let’s me type to filter the tab list and then press enter to jump to the selected tab.

Installation

Download room.wasm from the latest release

  • mkdir -p ~/.config/zellij/plugins/
  • mv room.wasm ~/.config/zellij/plugins/

You don't need to keep room.wasm at this specified location. It's just where I like to keep my zellij plugins.

Quick Install

mkdir -p ~/.config/zellij/plugins && \
  curl -L "https://github.com/rvcas/room/releases/latest/download/room.wasm" -o ~/.config/zellij/plugins/room.wasm

Keybinding

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

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

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

The ignore_case defaults to false if absent. If set to true, filtering the tab names ignores the case of the filter string and the tab name.

Pipe Commands

This plugin supports pipe commands for programmatic pane focusing via Zellij's plugin pipe system.

focus-pane

Focus a specific terminal pane by ID:

zellij pipe --plugin file:~/.config/zellij/plugins/room.wasm --name focus-pane -- <pane_id>

Why?

Claude Code supports terminal notifications to alert you when it needs input or permission. When running Claude Code inside Zellij, even if terminal notification passthrough worked, clicking a notification wouldn't navigate you to the correct Zellij tab and pane.

claude-zellij-whip solves this by sending native macOS notifications that, when clicked:

  1. Focus your terminal window
  2. Switch to the correct Zellij tab
  3. Focus the exact pane where Claude Code is running

Zellij's CLI supports switching tabs but doesn't have a command to focus a specific pane by ID. The plugin API does support this via focus_terminal_pane, so this pipe command bridges that gap.

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

About

A Zellij plugin for quickly searching and switching tabs 🖤

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 9