return { selector_cmd = function() return { command = "rofi", args = { "-dmenu", "-p", "Project: " }, } end, editor_cmd = function(path, class) local dirName = path:match("([^/]+)$") -- Sanitize dirName for tmux session name (remove special chars) local tmuxSession = dirName:gsub("[^a-zA-Z0-9_]", "_") local tmuxCmd = string.format( [[ tmux has-session -t %s 2>/dev/null && tmux attach -t %s || tmux new -c %s -s %s 'nvim %s' \; split-window -h -c %s ]], tmuxSession, tmuxSession, path, tmuxSession, path, path ) return { command = "kitty", args = { "-d", path, "-T", class, "--class", class, "sh", "-c", tmuxCmd, }, } end, format_project_title = function(path) -- Extract project name for better display -- local projectName = path:match("([^/]+)$") or path return "📘 " .. path end, extract_path_from_title = function(title) -- Return back the path: 📘 work/project_1 -> work/project_1 return title:gsub("^📘%s*", ""):gsub("\n$", "") end, -- Add error handling function handle_error = function(err) io.stderr:write("Error: " .. tostring(err) .. "\n") return false end, }