A single i3 workspace contains many programs (terminal, browser, etc).
Each terminal must run with tmux.
For example, in the backend workspaces I have tmux session.
The session name is equal with project name or remote name.
Let say repo-x.
Inside this session I usually open three or four tmux's shell (or window): one
shell to edit, one shell to compile and running test, and other shell for
To create a new shell, I use standard tmux keybindings:
To move between shell, I use
A sample of keybindings in tmux config would be,
bind -n C-PPage prev
bind -n C-NPage next
bind -n S-PPage swap-window -t -1
bind -n S-NPage swap-window -t +1
I have list of predefined session name that I can open using rofi.
If session is not exist it will create one, otherwise it will attach into it
(similar with tmux new -As name).