WezTerm workspace switcher with zoxide integration.
- π Quick workspace switching - Fuzzy search through existing workspaces
- π Zoxide integration - Create workspaces from your frequently accessed directories
- π¨ Customizable colors - Match your terminal theme
- π·οΈ Customizable labels - Personalize workspace and directory labels
- β¨οΈ Flexible keybindings - Configure or disable default shortcuts
- π Fuzzy search - Type
/to search workspaces and directories
Add this to your wezterm.lua:
local wezterm = require("wezterm")
local workspace_picker = wezterm.plugin.require("https://github.com/isseii10/workspace-picker.wezterm")
local config = wezterm.config_builder()
-- Apply default keybindings
workspace_picker.apply_to_config(config)
return config| Key | Action |
|---|---|
LEADER + s |
Show workspace picker (with zoxide integration) |
LEADER + S |
Create new workspace manually |
LEADER + r |
Rename current workspace |
Note:
LEADERkey must be configured in your WezTerm config. See WezTerm Leader Key docs.
- Use
β/βorj/kto navigate - Press
/to start fuzzy search - Press
Enterto select - Press
Escto cancel
local workspace_picker = wezterm.plugin.require("https://github.com/isseii10/workspace-picker.wezterm")
-- Initialize with custom settings
workspace_picker.setup({
-- Path to zoxide executable
zoxide_path = "/opt/homebrew/bin/zoxide",
-- Custom colors (Tokyo Night theme)
colors = {
workspace_prefix = "#9ece6a", -- Green for workspace label
zoxide_prefix = "#f7768e", -- Red for zoxide label
current_indicator = "#9ece6a", -- Green for current workspace
text = "#c8d0e0", -- Light gray for text
path = "#565f89", -- Dark gray for paths
},
-- Custom labels
labels = {
workspace = "[Workspace]", -- Label for workspace entries
zoxide = "[Zoxide]", -- Label for zoxide entries
current = "<- current", -- Indicator for current workspace
},
-- Custom keybindings (set to nil to disable)
keybinds = {
show_picker = { mods = "LEADER", key = "s" },
create_workspace = { mods = "LEADER", key = "S" },
rename_workspace = { mods = "LEADER", key = "r" },
},
})
-- Apply to config
workspace_picker.apply_to_config(config)If you want to set up keybindings manually:
local workspace_picker = wezterm.plugin.require("https://github.com/isseii10/workspace-picker.wezterm")
-- Don't apply default keybindings
workspace_picker.setup({
keybinds = nil, -- Disable automatic keybinding setup
})
-- Set up your own keybindings
config.keys = {
{
mods = "CMD",
key = "p",
action = wezterm.action_callback(function(win, pane)
workspace_picker.show_workspace_selector(win, pane)
end),
},
}You can also use the plugin's functions directly:
local workspace_picker = wezterm.plugin.require("https://github.com/isseii10/workspace-picker.wezterm")
config.keys = {
{
key = "w",
mods = "LEADER",
action = wezterm.action_callback(function(win, pane)
workspace_picker.show_workspace_selector(win, pane)
end),
},
{
key = "W",
mods = "LEADER",
action = workspace_picker.create_workspace_manually(),
},
{
key = "R",
mods = "LEADER|SHIFT",
action = workspace_picker.rename_workspace(),
},
}Catppuccin Mocha:
workspace_picker.setup({
colors = {
workspace_prefix = "#a6e3a1",
zoxide_prefix = "#f38ba8",
current_indicator = "#a6e3a1",
text = "#cdd6f4",
path = "#6c7086",
},
})Gruvbox:
workspace_picker.setup({
colors = {
workspace_prefix = "#b8bb26",
zoxide_prefix = "#fb4934",
current_indicator = "#b8bb26",
text = "#ebdbb2",
path = "#928374",
},
})Using Emojis:
workspace_picker.setup({
labels = {
workspace = "π’",
zoxide = "π",
current = "π",
},
})Shorter Labels:
workspace_picker.setup({
labels = {
workspace = "[WS]",
zoxide = "[DIR]",
current = "β",
},
})If zoxide is installed in a non-standard location:
workspace_picker.setup({
zoxide_path = "/usr/local/bin/zoxide",
})- Workspace List: Shows all existing WezTerm workspaces (current workspace is highlighted)
- Zoxide Integration: Lists frequently accessed directories from zoxide
- Workspace Creation: Selecting a zoxide directory creates a new workspace with that directory as the working directory
- Fuzzy Search: Type
/in the picker to filter workspaces and directories
Make sure zoxide is:
- Installed:
brew install zoxide(macOS) or follow installation guide - Initialized in your shell: Add
eval "$(zoxide init zsh)"to.zshrc(or equivalent for your shell) - Path is correct in the config (default:
/opt/homebrew/bin/zoxide)
Ensure your WezTerm version supports color customization in InputSelector. Try updating to the latest version.
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
MIT License - see LICENSE file for details
- WezTerm - The amazing terminal emulator
- zoxide - Smart directory jumper
- Inspired by smart_workspace_switcher.wezterm

