79 lines
1.6 KiB
Lua
79 lines
1.6 KiB
Lua
local plugin = require("wezterm.plugin")
|
|
|
|
return plugin.with_schema({
|
|
name = "sessionizer",
|
|
description = "Project-based sessionizer plugin for WezTerm",
|
|
parameters = {
|
|
projects = {
|
|
description = "List of project base directories and their max depth.",
|
|
type = "array",
|
|
default = {},
|
|
example = {
|
|
{ path = "~/projects", max_depth = 3 },
|
|
{ path = "~/work", max_depth = 2 },
|
|
},
|
|
items = {
|
|
oneOf = {
|
|
{ type = "string" },
|
|
{
|
|
type = "object",
|
|
properties = {
|
|
path = {
|
|
description = "Path to the base directory.",
|
|
type = "string",
|
|
},
|
|
max_depth = {
|
|
description = "Maximum recursive search depth.",
|
|
type = "integer",
|
|
default = 3,
|
|
},
|
|
},
|
|
required = { "path" },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
exclude_dirs = {
|
|
description = "Directory names to exclude from scanning.",
|
|
type = "array",
|
|
items = { type = "string" },
|
|
default = {
|
|
".git",
|
|
"node_modules",
|
|
".vscode",
|
|
".svn",
|
|
".hg",
|
|
".idea",
|
|
".DS_Store",
|
|
"__pycache__",
|
|
"target",
|
|
"build",
|
|
},
|
|
},
|
|
|
|
default_depth = {
|
|
description = "Default maximum depth for directory scanning.",
|
|
type = "integer",
|
|
default = 3,
|
|
},
|
|
|
|
key = {
|
|
description = "Key to trigger the session switcher (default: 'f')",
|
|
type = "string",
|
|
default = "f",
|
|
},
|
|
|
|
mods = {
|
|
description = "Modifier keys to trigger the switcher (default: 'LEADER')",
|
|
type = "string",
|
|
default = "LEADER",
|
|
},
|
|
|
|
add_to_launch_menu = {
|
|
description = "Whether to append scanned workspaces to the launch menu.",
|
|
type = "boolean",
|
|
default = false,
|
|
},
|
|
},
|
|
})
|