I assume most of you are familiar with watch program. If not – it shows, periodically, output of a command.
I was missing similar functionality for tmux, especially when I have multiple windows/panes.
So I wrote tmux_watch_many.
How to use it?
Well, you run it like this:
=$ tmux_watch_many '^win[024]'And it does it's magic.
It will, every 1 second (configurable):
- scan all available panes
- get their content, removing empty lines
- get just n last lines, so that output will fit on screen
- show it all on screen
Script will end (by default) if there are no panes matching given MATCHER.
Full help:
=$ tmux_watch_many -h
Syntax:
tmux_watch_many [-a] [-f] [-s SKIP_MATCHER] [-m LINE_MATCHER] [-w WAIT_TIME] PANE_MATCHER
Description:
Shows last non-empty lines of all matching panes.
Optionally skips lines provided by SKIP_MATCHER, and filters to lines
matching LINE_MATCHER.
Options:
-a : Enables matching across all sessions, not only current.
-f : Forever, don't stop when there are no matching panes.
-s : Skip lines that match this regular expression (egrep style).
-m : Show only lines matching this regular expression (egrep style),
defaults to : >>[^[:space:]]<<
-w : Wait given time between checks of terminal, defaults to 1 (second).
Arguments:
PANE_MATCHER : Regular expression (compatible with egrep), that will be
used to select panes that should be processed. Without
-a, panes are listed only from current session, and have
format:
WINDOW_NAME.PANE_INDEX
With -a, panes are listed from all sessions, and have
format:
SESSION_NAME:WINDOW_NAME.PANE_INDEX