tmuxrc/README.md

149 lines
4.4 KiB
Markdown
Raw Normal View History

2023-03-18 19:35:56 +01:00
# [tmuxrc][tmuxrc_repo]
![Tmux](https://img.shields.io/badge/tmux-v3.3-brightgreen)
![Fzf](https://img.shields.io/badge/fzf-v0.35-green)
2023-03-18 19:45:23 +01:00
**tmuxrc** is a collection of [RUNCOM][RUNCOM] & Plugins dedicated to the terminal multiplexer [Tmux][TMUX_repo].
2023-03-18 19:35:56 +01:00
- I use this configuration with my custom [bash environment][bashrc_repo] to always work in Tmux locally and in SSH sessions.
----
## Features
2023-03-18 19:45:23 +01:00
- Plugins (included as submodules):
- [tpm][tpm]: Plugin Manager.
- [tmux-prefix-highlight][tmux-prefix-highlight]: highlights when you press tmux prefix key.
- [tmux-menus][tmux-menus]: Popup menus.
2023-03-18 20:48:08 +01:00
- [extrakto][extrakto]: select, copy/insert/complete text without a mouse (prefix Tab).
2023-03-18 19:45:23 +01:00
- [tmux-sidebar][tmux-sidebar]: directory tree for the current path.
2023-03-18 20:48:08 +01:00
- Prefix rebinded to `Ctrl+x` (`Ctrl+w` for remote/ssh sessions).
- Toggle Sync mode for visible panes with `Prefix-a`.
- Toggle Zoom current Pane with `Prefix-Z`. Next & Previous: `Prefix-e`,`Prefix-z`.
- Open a popup session changer with `Prefix-Ctrl+j`.
- Open a popup Scratch session with `Prefix-Ctrl+g`.
- Nice status (display current command) & color theme with true colors.
2023-03-18 19:45:23 +01:00
- Compatible with my environment config: [bashrc][bashrc_repo].
2023-03-18 20:10:41 +01:00
- Check more in the conf file …
2023-03-18 19:35:56 +01:00
## Requirements
- [Tmux][TMUX_repo] 3.3+:
- libevent 2.x (apt or [build][libevent_repo])
- ncurses (apt or [build][ncurses_repo])
- [Gitmux][gitmux_repo]
- [Fzf][fzf_repo] 0.35+ for `fzf-tmux`
2023-03-18 20:48:08 +01:00
- exa for the tmux-sidebar: `sudo apt install exa`
2023-03-18 19:35:56 +01:00
### Recommended
- bash 5+
- bash_completion
- My environment config: [bashrc][bashrc_repo]
## Installation
2023-03-18 19:45:23 +01:00
### [Tmux][TMUX_repo]
2023-03-18 19:35:56 +01:00
- With APT:
```bash
2023-03-18 20:10:41 +01:00
# check version with apt
2023-03-19 09:41:09 +01:00
sudo apt show -a tmux 2> /dev/null | grep Version:
2023-03-18 19:35:56 +01:00
# if your apt repositories deliver at least 3.3, you can install it
sudo apt install tmux
```
- Or build & install:
```bash
mkdir -p $HOME/Builds && cd $HOME/Builds
wget https://github.com/tmux/tmux/releases/download/3.3a/tmux-3.3a.tar.gz
tar -zxf tmux-*.tar.gz
cd tmux-*/
./configure
2023-03-18 19:45:23 +01:00
make && sudo make install
2023-03-18 19:35:56 +01:00
```
2023-03-18 19:45:23 +01:00
### [Gitmux][gitmux_repo]
2023-03-18 19:35:56 +01:00
- Copy it manually to /usr/local/bin: https://github.com/arl/gitmux/releases
2023-03-18 19:45:23 +01:00
- Or you need `jq` to parse the latest release in cli:
2023-03-18 19:35:56 +01:00
```bash
# for linux_amd64
sudo apt install jq
_RELEASES=$(curl -s https://api.github.com/repos/arl/gitmux/releases/latest)
_URL=$(echo "$_RELEASES" | jq -r '.assets[] | select( .name | match("linux_amd64")) | .browser_download_url')
wget -c -nv "$_URL" -O - | sudo tar --no-same-owner -xzv -C /usr/local/bin gitmux
```
2023-03-18 19:45:23 +01:00
### [Fzf][fzf_repo]
2023-03-18 19:35:56 +01:00
- With APT:
```bash
2023-03-18 20:10:41 +01:00
# check version with apt
2023-03-19 09:41:09 +01:00
sudo apt show -a fzf 2> /dev/null | grep Version:
2023-03-18 19:35:56 +01:00
# if your apt repositories deliver at least 0.35, you can install it
2023-03-18 20:50:05 +01:00
sudo apt install fzf
2023-03-18 19:35:56 +01:00
```
- Or build & install:
```bash
mkdir -p $HOME/Builds && cd $HOME/Builds
git clone --depth 1 https://github.com/junegunn/fzf.git
cd fzf
sudo ./install --all --no-bash --no-zsh --no-fish
sudo cp shell/completion.bash /etc/bash_completion.d/fzf
sudo cp bin/* /usr/local/bin/
```
2023-03-18 19:45:23 +01:00
### [tmuxrc][tmuxrc_repo]
2023-03-18 19:35:56 +01:00
```bash
# backup current files
mkdir -p $HOME/.backups
cp -r --backup=t {"$HOME"/.tmux/,"$HOME"/.tmux,"$HOME"/.config/tmux/} $HOME/.backups/
rm -Rf "$HOME"/.tmux/ "$HOME"/.tmux "$HOME"/.config/tmux/
2023-03-18 19:45:23 +01:00
# install
2023-03-18 19:35:56 +01:00
mkdir -p $HOME/.config
cd $HOME/.config
2023-03-18 20:52:22 +01:00
git clone --depth=1 --recurse-submodules https://git.tkapias.net/tkapias/tmuxrc tmux
2023-03-19 10:03:06 +01:00
cp tmux/gitmux.conf $HOME/.config/
2023-03-18 19:35:56 +01:00
```
## Configuration
### SSH/Remote
2023-03-18 19:45:23 +01:00
If you install this configuration on a remote system, you will need another prefix than on the local tmux (ctrl+x).
2023-03-18 19:35:56 +01:00
2023-03-18 19:45:23 +01:00
You can change the prefix to ctrl+w on the remote system like this:
2023-03-18 19:35:56 +01:00
```bash
2023-03-19 09:14:40 +01:00
sed -i -e 's/C-x/C-w/g' -e 's/Ctrl-x/Ctrl-w/g' $HOME/.config/tmux/tmux.conf
2023-03-18 19:35:56 +01:00
```
----
[//]: # (LINKS)
[tmuxrc_repo]: https://git.tkapias.net/tkapias/tmuxrc
[TMUX_repo]: https://github.com/tmux/tmux
[bashrc_repo]: https://git.tkapias.net/tkapias/bashrc
[RUNCOM]: https://en.wikipedia.org/wiki/RUNCOM
[libevent_repo]: https://github.com/libevent/libevent/releases/latest
[ncurses_repo]: https://invisible-mirror.net/archives/ncurses/
[gitmux_repo]: https://github.com/arl/gitmux
2023-03-18 19:45:23 +01:00
[fzf_repo]: https://github.com/junegunn/fzf.git
2023-03-18 19:35:56 +01:00
[tpm]: https://github.com/tmux-plugins/tpm
[tmux-prefix-highlight]: https://github.com/tmux-plugins/tmux-prefix-highlight
[tmux-menus]: https://github.com/jaclu/tmux-menus
[extrakto]: https://github.com/laktak/extrakto
[tmux-sidebar]: https://github.com/tmux-plugins/tmux-sidebar