package fzf import ( "os/exec" ) func runTmux(args []string, opts *Options) (int, error) { argStr, dir := popupArgStr(args, opts) // Set tmux options for popup placement // C Both The centre of the terminal // R -x The right side of the terminal // P Both The bottom left of the pane // M Both The mouse position // W Both The window position on the status line // S -y The line above or below the status line tmuxArgs := []string{"display-popup", "-E", "-d", dir} if !opts.Tmux.border { tmuxArgs = append(tmuxArgs, "-B") } switch opts.Tmux.position { case posUp: tmuxArgs = append(tmuxArgs, "-xC", "-y0") case posDown: tmuxArgs = append(tmuxArgs, "-xC", "-y9999") case posLeft: tmuxArgs = append(tmuxArgs, "-x0", "-yC") case posRight: tmuxArgs = append(tmuxArgs, "-xR", "-yC") case posCenter: tmuxArgs = append(tmuxArgs, "-xC", "-yC") } tmuxArgs = append(tmuxArgs, "-w"+opts.Tmux.width.String()) tmuxArgs = append(tmuxArgs, "-h"+opts.Tmux.height.String()) return runProxy(argStr, func(temp string, needBash bool) (*exec.Cmd, error) { sh, err := sh(needBash) if err != nil { return nil, err } tmuxArgs = append(tmuxArgs, sh, temp) return exec.Command("tmux", tmuxArgs...), nil }, opts, true) }