tmux

package
v0.0.0-...-ad7ab41 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2024 License: GPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

Package tmux provides a minimal API to interact with tmux servers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewServer

func NewServer(opts ...ServerOption) *server

NewServer creates a new server for the given socket. Note: This doesn't actually create the server yet. You will need to create at least one session for the server to be active.

func SameServer

func SameServer(ctx context.Context, a, b Server) bool

Equal determines if two servers equivalent, based on PID.

func SameSession

func SameSession(ctx context.Context, a, b Session) bool

Equal determines if two sessions are equivalent by checking they have the same ID and belong to the same Server.

Types

type Client

type Client interface {
	// Property retrieves the value of the given property key.
	Property(context.Context, ClientProperty) (string, error)
	// Properties retrieves the values of all the given property keys.
	Properties(context.Context, ...ClientProperty) (map[ClientProperty]string, error)

	// DisplayMenu displays a menu in this client.
	DisplayMenu(context.Context, []MenuElement) error
}

func CurrentClient

func CurrentClient() (Client, error)

CurrentClient returns a Client if this terminal is currently a tmux client.

func MaybeCurrentClient

func MaybeCurrentClient() Client

MaybeCurrentClient returns a Client if the terminal is currently a tmux client. If it's not currently a tmux client, returns nil.

type ClientProperty

type ClientProperty string
const (
	ClientTTY ClientProperty = "#{client_tty}"
)
type MenuElement interface {
	// contains filtered or unexported methods
}
type MenuEntry struct {
	Name, Key, Command string
}

MenuEntry is an actual entry in the menu that has an executable command.

type MenuSpacer struct{}

MenuSpacer allows you to delineate sections within a menu.

type NewSessionOptions

type NewSessionOptions struct {
	// Name is the optional initial name for the session.
	Name string
	// StartDir is the optional initial working directory for the session.
	StartDir string
}

NewSessionOptions affects how NewSession creates sessions.

type Server

type Server interface {
	// PID returns the process ID of the server, if it's currently active.
	PID(context.Context) (int, error)

	// ListSessions lists the sessions that exist in this tmux server.
	ListSessions(context.Context) (Sessions, error)
	// ListClients lists all clients currently attached to this tmux server.
	ListClients(context.Context) ([]Client, error)

	// NewSession creates a new session in this tmux server.
	NewSession(context.Context, NewSessionOptions) (Session, error)
	// AttachOrSwitch either attaches the controlling terminal to the given TargetSession or switches the current tmux client to the TargetSession.
	AttachOrSwitch(context.Context, Session) error

	// Kill this tmux server.
	Kill(context.Context) error
}

func CurrentServer

func CurrentServer() (Server, error)

CurrentServer returns a server if this program is running within a tmux server.

func DefaultServer

func DefaultServer() Server

func MaybeCurrentServer

func MaybeCurrentServer() Server

MaybeCurrentServer returns a server if this program is running within a tmux server. If it's not, it returns nil.

type ServerOption

type ServerOption func(*serverOptions)

func NamedServerSocket

func NamedServerSocket(name string) ServerOption

func ServerConfigFile

func ServerConfigFile(file string) ServerOption

type Session

type Session interface {
	// Server returns the tmux server this Session belongs to.
	Server() Server
	// ID returns the ID of this session within its tmux server.
	ID() string

	// Property retrieves the value of the given property key.
	Property(context.Context, SessionProperty) (string, error)
	// Properties retrieves the values of all the given property keys.
	Properties(context.Context, ...SessionProperty) (map[SessionProperty]string, error)

	// Rename this tmux session to have the given name.
	Rename(context.Context, string) error

	// Kill this tmux session.
	Kill(context.Context) error
}

func CurrentSession

func CurrentSession() (Session, error)

CurrentSession returns a Session if this program is being executed inside tmux.

func MaybeCurrentSession

func MaybeCurrentSession() Session

MaybeCurrentSession returns a Session if this program is being executed inside tmux. If it's not being executed inside tmux, returns nil.

type SessionProperty

type SessionProperty string
const (
	SessionID   SessionProperty = "#{session_id}"
	SessionName SessionProperty = "#{session_name}"
	SessionPath SessionProperty = "#{session_path}"
)

type Sessions

type Sessions interface {
	// Server returns the tmux server that these Sessions belong to.
	Server() Server

	// Sessions returns each individual Session.
	Sessions() []Session

	// Property retrieves the value of the given property key for all of these
	// Sessions.
	Property(context.Context, SessionProperty) (map[Session]string, error)
	// Properties retrieves the values of all the given property keys for all of
	// these Sessions.
	Properties(context.Context, ...SessionProperty) (map[Session]map[SessionProperty]string, error)
}

Sessions is a list of Sessions, batched together so their operations are more performant.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL