List tmux sessions
March 5, 2020 ‐ 3 min read
Tmux has the concepts of sessions, you can look at a session as a workspace for your terminal. This is convenient when you're working on a project, creating panes and windows, but have to switch to something different in between. In this case you can just keep this specific session running so you can come back to it later. When you're working with multiple sessions it can be useful to list the ones that are active at the moment.
To list all the sessions that are currently managed by the tmux server you can use the tmux list-sessions
command. The command shows by default the name of the sessions, the amount of windows per session, when the session was created and whether the session is currently attached to a terminal.
$ tmux list-sessions
first_project: 4 windows (created Wed Mar 4 18:17:14 2020)
second_project: 2 windows (created Wed Mar 4 19:00:55 2020) (attached)
Like many tmux commands list-sessions
has the shorthand too, tmux ls
shows you the same information.
$ tmux ls
first_project: 4 windows (created Wed Mar 4 18:17:14 2020)
second_project: 2 windows (created Wed Mar 4 19:00:55 2020) (attached)
Both of the examples above have an equivalent in the command mode of tmux. To start the command mode use <prefix> :
. Now you can enter :list-sessions
or :ls
to see a list of active tmux sessions.
You can use these to make a custom keybinding in your .tmux.conf
file. An example would be:
bind <key> list-sessions
By default, list-sessions
is binded to the key combination <prefix> s
. You can navigate the session list with j
and k
and activate one by pressing enter
. If your main purpose is to switch session you can try out choose-session
, it is more verbose and gives you the possibility to switch to a specific window too.
Format the output
You can specify the format of the session list with the -F
option. When you're scripting with tmux this can be a useful feature. For example, if your script requires the session names you can use the following command.
$ tmux ls -F "#{session_name}"
first_project
second_project
You can ofcourse use multiple variables in the format string. The output below shows the name of the active window in each session.
$ tmux ls -F "#{session_name}:#{window_name}"
first_project:database
second_project:server
The FORMAT section in the man pages lists a whole lot more options for formatting the output of list-sessions
.