overhauled README.md and added the official Oh my tmux! logo
This commit is contained in:
parent
4cb811769a
commit
5c87d7b3d2
5 changed files with 267 additions and 182 deletions
16
.logo/LICENSE
Normal file
16
.logo/LICENSE
Normal file
|
@ -0,0 +1,16 @@
|
|||
Oh my tmux! logo copyright (c) 2024, Gregory Pakosz <gregory.pakosz@gmail.com>
|
||||
|
||||
Original tmux logo copyright (c) 2015, Jason Long <jason@jasonlong.me>
|
||||
See https://github.com/tmux/tmux/tree/master/logo
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
1
.logo/logomark+wordmark.svg
Normal file
1
.logo/logomark+wordmark.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 187"><path fill="#00afff" d="M240 147.4c29.6 0 50.4-25.6 50.4-68.6 0-42.4-20.8-67.4-50.4-67.4s-50.4 25-50.4 67.4c0 43 20.8 68.6 50.4 68.6zm0-14.6c-20 0-33.2-20.4-33.2-54 0-33 13.2-52.8 33.2-52.8s33.2 19.8 33.2 52.8c0 33.6-13.2 54-33.2 54zm68.52 12.2h16.4V77.2c11.4-11.8 19.2-17.6 30.8-17.6 16 0 22.4 8.8 22.4 27.2V145h16.4V84.6c0-25.6-10.6-39.2-33.6-39.2-15.2 0-26.4 8.2-36.4 19h-.6l1-23V2.6h-16.4zm162.85 0h16.4V74.6c4.8-10 9.2-15 16-15 7.2 0 10 5.8 10 17V145h15.2V74.6c5.2-10 8.8-15 15.6-15 7.2 0 10.4 5.8 10.4 17V145h16.4V75.4c0-19.4-8-30-21.6-30-11.2 0-17.2 6.4-22.8 16.8-2.8-11.2-8.8-16.8-18.4-16.8-11.2 0-17.2 6.2-22.2 15.2h-.4l-1.4-12.8h-13.2zm124.52 41.8c22 0 34-14.6 41.2-33.8l42.8-105.2h-15.6l-21.2 53.8c-3.2 8.8-7 19-10.4 28.2h-.8c-4-9.4-8.2-19.6-12-28.2l-23.8-53.8h-16.6l45.4 97.4-3 7.2c-4.8 12-13 20.8-26.6 20.8-3 0-6.2-.6-8.8-1.4l-3.4 13c3.4 1.2 8.2 2 12.8 2zm222.44-39.4c12.2 0 21.6-2.6 30.4-5.8l-3.6-12c-7 2.6-14.2 4.4-23.4 4.4-18.8 0-24.6-9.2-24.6-26.6V61.2h47.8V47.8h-47.8V16.6h-13.6l-2.2 31.2-28 1v12.4h27.4v46c0 24 9.2 40.2 37.6 40.2zm42.72-2.4h16.4V74.6c4.8-10 9.2-15 16-15 7.2 0 10 5.8 10 17V145h15.2V74.6c5.2-10 8.8-15 15.6-15 7.2 0 10.4 5.8 10.4 17V145h16.4V75.4c0-19.4-8-30-21.6-30-11.2 0-17.2 6.4-22.8 16.8-2.8-11.2-8.8-16.8-18.4-16.8-11.2 0-17.2 6.2-22.2 15.2h-.4l-1.4-12.8h-13.2zm147.55 2.4c15 0 26.4-8 36.2-19.4h.8l1.4 17h13.4V47.8H1044v67.4c-10.8 12.6-19 18-30.2 18-16.2 0-22.4-8.8-22.4-27.2V47.8h-16.6v60.4c0 25.6 10.6 39.2 33.8 39.2zm73.5-2.4h17.6l16-22.4c4-6.2 8-11.8 12-17.6h.8c4.2 5.6 8.8 12 12.8 17.6l17 22.4h18l-37.2-49 34.6-48.2h-17.4l-14.6 21c-3.4 5.4-7.4 11.4-11 16.8h-.8c-4-5.4-8-11.2-11.4-16.4l-15.4-21.4h-18.2l34.2 46.8zm151.5-46.4h11.2l2-68.8.4-18.8h-16l.4 18.8zm5.6 48.8c8 0 14.6-6 14.6-15.6 0-9.4-6.6-15.2-14.6-15.2s-14.6 5.8-14.6 15.2c0 9.6 6.6 15.6 14.6 15.6z" aria-label="Oh my tmux!"/><path fill="#fff" d="M76.892 144.526h7.91V76.812h76.014l.03-7.85-76.044-.06V-.131h-7.91z"/><path fill="#3c3c3c" fill-rule="evenodd" d="M83.788 69.866v-70h-6v146h6v-70h77v-6zm-83-54.994C.788 6.584 7.51-.134 15.786-.134h130c8.283 0 14.998 6.725 14.998 15.006v130.99h-160z"/><path fill="#ff0" d="m2 146 23-1v13.719s-14.06 1.335-18.379-2.658C1.471 151.301 2 146.001 2 146.001z" style="mix-blend-mode:normal" transform="translate(.788 -.134)"/><path fill="#ff00af" d="M25 145h30v13.719H25z" style="mix-blend-mode:normal" transform="translate(.788 -.134)"/><path fill="#3c3c3c" d="M55 145h5v13.719h-5z" style="mix-blend-mode:normal" transform="translate(.788 -.134)"/><path fill="#00afff" d="M60 145h17v13.719H60z" style="mix-blend-mode:normal" transform="translate(.788 -.134)"/><path fill="#3c3c3c" d="M77 145h54.248v13.719H77z" style="mix-blend-mode:normal" transform="translate(.788 -.134)"/><path fill="#fff" d="m157.95 146-13.053-1-9.947 13.719s14.06 1.335 18.379-2.658c5.15-4.76 4.62-10.06 4.62-10.06z" style="mix-blend-mode:normal" transform="translate(.788 -.134)"/><path fill="#d70000" d="M131.25 145h13.752v13.719H131.25z" style="mix-blend-mode:normal" transform="translate(.788 -.134)"/><path fill="#3c3c3c" fill-rule="evenodd" d="M2.788 144.866c0 7.189 5.816 13.004 12.998 13.004h130c7.174 0 12.998-5.824 12.998-13.004m2 0c0 8.287-6.722 15.004-14.998 15.004h-130c-8.283 0-14.998-6.706-14.998-15.004m2 1.004-2-2h160l-2 2m2 0h-160"/></svg>
|
After Width: | Height: | Size: 3.3 KiB |
1
.logo/logomark.svg
Normal file
1
.logo/logomark.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160"><path fill="#fff" d="M76.104 144.66h7.91V76.946h76.014l.03-7.85-76.044-.06V.003h-7.91z"/><path fill="#3c3c3c" fill-rule="evenodd" d="M83 70V0h-6v146h6V76h77v-6zM0 15.006C0 6.718 6.722 0 14.998 0h130c8.283 0 14.998 6.725 14.998 15.006v130.99h-160z"/><path fill="#ff0" d="m2 146 23-1v13.719s-14.06 1.335-18.379-2.658C1.471 151.301 2 146.001 2 146.001z" style="mix-blend-mode:normal"/><path fill="#ff00af" d="M25 145h30v13.719H25z" style="mix-blend-mode:normal"/><path fill="#3c3c3c" d="M55 145h5v13.719h-5z" style="mix-blend-mode:normal"/><path fill="#00afff" d="M60 145h17v13.719H60z" style="mix-blend-mode:normal"/><path fill="#3c3c3c" d="M77 145h54.248v13.719H77z" style="mix-blend-mode:normal"/><path fill="#fff" d="m157.95 146-13.053-1-9.947 13.719s14.06 1.335 18.379-2.658c5.15-4.76 4.62-10.06 4.62-10.06z" style="mix-blend-mode:normal"/><path fill="#d70000" d="M131.25 145h13.752v13.719H131.25z" style="mix-blend-mode:normal"/><path fill="#3c3c3c" fill-rule="evenodd" d="M2 145c0 7.189 5.816 13.004 12.998 13.004h130c7.174 0 12.998-5.824 12.998-13.004m2 0c0 8.287-6.722 15.004-14.998 15.004h-130C6.715 160.004 0 153.298 0 145m2 1.004-2-2h160l-2 2m2 0H0"/></svg>
|
After Width: | Height: | Size: 1.2 KiB |
|
@ -393,7 +393,7 @@ tmux_conf_urlscan_options="--compact --dedupe"
|
|||
# set -g prefix C-a
|
||||
# bind C-a send-prefix
|
||||
|
||||
# if you don't want Oh my tmux! to alter a binding, use #!important
|
||||
# if you don't want Oh my tmux! to alter a binding or a setting, use #!important
|
||||
# bind c new-window -c '#{pane_current_path}' #!important
|
||||
|
||||
# move status line to top
|
||||
|
|
329
README.md
329
README.md
|
@ -1,18 +1,30 @@
|
|||
.tmux
|
||||
=====
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset=".logo/logomark+wordmark.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset=".logo/logomark+wordmark.svg">
|
||||
<img alt="Oh my tmux! logo and wordmark" src=".logo/logomark+wordmark.svg">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
Self-contained, pretty and versatile `.tmux.conf` configuration file.
|
||||
˗ˏˋ ★ ˎˊ˗ My self-contained, pretty and versatile tmux configuration, made with ❤️ ˗ˏˋ ★ ˎˊ˗
|
||||
|
||||
![Screenshot](https://cloud.githubusercontent.com/assets/553208/19740585/85596a5a-9bbf-11e6-8aa1-7c8d9829c008.gif)
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://cloud.githubusercontent.com/assets/553208/19740585/85596a5a-9bbf-11e6-8aa1-7c8d9829c008.gif">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://cloud.githubusercontent.com/assets/553208/19740585/85596a5a-9bbf-11e6-8aa1-7c8d9829c008.gif">
|
||||
<img alt="Oh my tmux! in action" src="https://cloud.githubusercontent.com/assets/553208/19740585/85596a5a-9bbf-11e6-8aa1-7c8d9829c008.gif">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Requirements:
|
||||
|
||||
- tmux **`>= 2.6`** running inside Linux, Mac, OpenBSD, Cygwin or WSL
|
||||
- awk, perl (with Time::HiRes support) and sed
|
||||
- outside of tmux, `$TERM` must be set to `xterm-256color`
|
||||
- tmux **`>= 2.6`** running on Linux, macOS, OpenBSD, Windows (WSL or Cygwin)
|
||||
- awk, perl (with Time::HiRes support), grep, and sed
|
||||
- Outside of tmux, the `TERM` environment variable must be set to
|
||||
`xterm-256color`
|
||||
|
||||
⚠️ Before installing, you may want to backup your existing configuration.
|
||||
|
||||
|
@ -24,14 +36,14 @@ You can install Oh my tmux! at any of the following locations:
|
|||
Installing in `~`:
|
||||
```
|
||||
$ cd
|
||||
$ git clone https://github.com/gpakosz/.tmux.git
|
||||
$ git clone --single-branch https://github.com/gpakosz/.tmux.git
|
||||
$ ln -s -f .tmux/.tmux.conf
|
||||
$ cp .tmux/.tmux.conf.local .
|
||||
```
|
||||
|
||||
Installing in `$XDG_CONFIG_HOME/tmux`:
|
||||
```
|
||||
$ git clone https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
|
||||
$ git clone --single-branch https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
|
||||
$ mkdir -p "$XDG_CONFIG_HOME/tmux"
|
||||
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "$XDG_CONFIG_HOME/tmux/tmux.conf.local"
|
||||
|
@ -39,7 +51,7 @@ $ cp "/path/to/oh-my-tmux/.tmux.conf.local" "$XDG_CONFIG_HOME/tmux/tmux.conf.loc
|
|||
|
||||
Installing in `~/.config/tmux`:
|
||||
```
|
||||
$ git clone https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
|
||||
$ git clone --single-branch https://github.com/gpakosz/.tmux.git "/path/to/oh-my-tmux"
|
||||
$ mkdir -p "~/.config/tmux"
|
||||
$ ln -s "/path/to/oh-my-tmux/.tmux.conf" "~/.config/tmux/tmux.conf"
|
||||
$ cp "/path/to/oh-my-tmux/.tmux.conf.local" "~/.config/tmux/tmux.conf.local"
|
||||
|
@ -47,36 +59,63 @@ $ cp "/path/to/oh-my-tmux/.tmux.conf.local" "~/.config/tmux/tmux.conf.local"
|
|||
⚠️ When installing `$XDG_CONFIG_HOME/tmux` or `~/.config/tmux`, the configuration
|
||||
file names don't have a leading `.` character.
|
||||
|
||||
❗️ You should never alter the main `.tmux.conf` or `tmux.conf` file. If you do,
|
||||
🚨 **You should never alter the main `.tmux.conf` or `tmux.conf` file. If you do,
|
||||
you're on your own. Instead, every customization should happen in your
|
||||
`.tmux.conf.local` or `tmux.conf.local` customization file copy.
|
||||
`.tmux.conf.local` or `tmux.conf.local` customization file copy.**
|
||||
|
||||
If you're a Vim user, setting the `$EDITOR` environment variable to `vim` will
|
||||
enable and further customize the vi-style key bindings (see tmux manual).
|
||||
If you're a Vim user, setting the `EDITOR` environment variable to `vim` will
|
||||
enable and further customize the `vi-style` key bindings (see tmux manual).
|
||||
|
||||
If you're new to tmux, I recommend you to read [tmux 3: Productive Mouse-Free
|
||||
Development][bhtmux3] by [@bphogan].
|
||||
If you're new to tmux, I recommend you to read the [tmux getting started
|
||||
guide][getting-started], as well as the [tmux 3: Productive Mouse-Free
|
||||
Development][bhtmux3] book by [@bphogan].
|
||||
|
||||
Now proceed to [adjust] your `.local` customization file copy.
|
||||
|
||||
[getting-started]: https://github.com/tmux/tmux/wiki/Getting-Started
|
||||
[bhtmux3]: https://pragprog.com/titles/bhtmux3/tmux-3/
|
||||
[@bphogan]: https://twitter.com/bphogan
|
||||
[@bphogan]: https://bphogan.com/
|
||||
[adjust]: #configuration
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
|
||||
- **I'm running tmux `HEAD` and things don't work properly. What should I do?**
|
||||
- **I believe something's not quite right**
|
||||
|
||||
Please open an issue describing what doesn't work with upcoming tmux. I'll do
|
||||
my best to address it.
|
||||
Please, try make sure no tmux client or server process is currently running.
|
||||
|
||||
- **Status line is broken and/or gets duplicated at the bottom of the screen.
|
||||
What gives?**
|
||||
Then launch tmux with:
|
||||
```
|
||||
$ tmux -f /dev/null -L test
|
||||
```
|
||||
|
||||
This particularly happens on Linux when the distribution provides a version
|
||||
of glib that received Unicode 9.0 upgrades (glib `>= 2.50.1`) while providing
|
||||
a version of glibc that didn't (glibc `< 2.26`). You may also configure
|
||||
Which launches a new tmux client/server pair without loading any
|
||||
configuration.
|
||||
|
||||
If the issue is still reproducing, please reach out to the tmux project for
|
||||
support.
|
||||
|
||||
Otherwise, please open an issue describing what doesn't work and I'll do my
|
||||
best to address it.
|
||||
|
||||
- **I tried to used `set`, `bind` and `unbind` in my `.local` customization
|
||||
file, but Oh my tmux! overwrites my preferences**
|
||||
|
||||
When that happens append `#!important` to the line:
|
||||
|
||||
```
|
||||
bind c new-window -c '#{pane_current_path}' #!important
|
||||
```
|
||||
|
||||
```
|
||||
set -g default-terminal "screen-256color" #!important
|
||||
```
|
||||
|
||||
- **Status line is broken and/or gets duplicated at the bottom of the screen**
|
||||
|
||||
This could happen on Linux when the distribution provides a version of glib
|
||||
that received Unicode 9.0 upgrades (glib `>= 2.50.1`) while providing a
|
||||
version of glibc that didn't (glibc `< 2.26`). You may also configure
|
||||
`LC_CTYPE` to use an `UTF-8` locale. Typically VTE based terminal emulators
|
||||
rely on glib's `g_unichar_iswide()` function while tmux relies on glibc's
|
||||
`wcwidth()` function. When these two functions disagree, display gets messed
|
||||
|
@ -85,70 +124,78 @@ Troubleshooting
|
|||
This can also happen on macOS when using iTerm2 and "Use Unicode version 9
|
||||
character widths" is enabled in `Preferences... > Profiles > Text`
|
||||
|
||||
For that reason, the default sample `.local` customization file stopped using
|
||||
For that reason, the sample `.local` customization file stopped using
|
||||
Unicode characters for which width changed in between Unicode 8.0 and 9.0
|
||||
standards, as well as Emojis.
|
||||
|
||||
- **I installed Powerline and/or (patched) fonts but can't see Powerline
|
||||
symbols.**
|
||||
- **I installed Powerline and/or (patched) fonts but I can't see the Powerline
|
||||
symbols**
|
||||
|
||||
First, you don't need to install Powerline. You only need fonts patched with
|
||||
Powerline symbols or the standalone `PowerlineSymbols.otf` font. Then make
|
||||
sure your `.local` customization file copy uses the Powerline code points for
|
||||
`tmux_conf_theme_left_separator_XXX` values.
|
||||
**🤯 Please realize that you don't need to install [Powerline].**
|
||||
|
||||
- **I'm using Bash On Windows (WSL), colors and the Powerline look are broken.**
|
||||
You only need fonts patched with Powerline symbols or the standalone
|
||||
`PowerlineSymbols.otf` font.
|
||||
|
||||
There is currently a [bug][1681] in the new console powering Bash On Windows
|
||||
preventing text attributes (bold, underscore, ...) to combine properly with
|
||||
colors. The workaround is to search your `.local` customization file copy and
|
||||
replace attributes with `'none'`.
|
||||
Then make sure your `.local` customization file copy uses the [Powerline
|
||||
code points] for the
|
||||
`tmux_conf_theme_left_separator_main`,
|
||||
`tmux_conf_theme_left_separator_sub`,
|
||||
`tmux_conf_theme_right_separator_main`
|
||||
and `tmux_conf_theme_right_separator_sub` variables.
|
||||
|
||||
Also, until Window's console replaces its GDI based render with a DirectWrite
|
||||
one, Powerline symbols will be broken.
|
||||
|
||||
The alternative is to use the [Mintty terminal for WSL][wsltty].
|
||||
|
||||
[1681]: https://github.com/Microsoft/BashOnWindows/issues/1681
|
||||
[wsltty]: https://github.com/mintty/wsltty
|
||||
[Powerline]: https://github.com/Lokaltog/powerline
|
||||
[Powerline code points]: #enabling-the-powerline-look
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
- `C-a` acts as secondary prefix, while keeping default `C-b` prefix
|
||||
- visual theme inspired by [Powerline][]
|
||||
- [maximize any pane to a new window with `<prefix> +`][maximize-pane]
|
||||
- Visual theme inspired by [Powerline][]
|
||||
- [Maximize any pane to a new window with `<prefix> +`][maximize-pane]
|
||||
- Mouse mode toggle with `<prefix> m`
|
||||
- Laptop battery status line information
|
||||
- Uptime status line information
|
||||
- Optional highlight of focused pane
|
||||
- Configurable new sessions, windows and panes behavior (to optionally retain
|
||||
the current path)
|
||||
- SSH/Mosh aware username and hostname status line information
|
||||
- mouse mode toggle with `<prefix> m`
|
||||
- laptop battery status line information
|
||||
- uptime status line information
|
||||
- optional highlight of focused pane
|
||||
- configurable new windows and panes behavior (optionally retain current path)
|
||||
- SSH/Mosh aware split pane (reconnects to remote server)
|
||||
- copy to OS clipboard (needs `xsel`, `xclip`, or `wl-copy` on Linux)
|
||||
- support for 4-digit hexadecimal Unicode characters
|
||||
- [Facebook PathPicker][] integration if available
|
||||
- [Urlscan][] (preferred) or [Urlview][] integration if available
|
||||
- SSH/Mosh aware pane splitting (with automatic reconnection to the remote
|
||||
server)
|
||||
- Copy to OS clipboard (needs `xsel`, `xclip`, or `wl-copy` on Linux)
|
||||
- Support for 4-digit hexadecimal Unicode characters
|
||||
- [PathPicker][] integration, if available
|
||||
- [Urlscan][] (preferred) or [Urlview][] integration, if available
|
||||
|
||||
[Powerline]: https://github.com/Lokaltog/powerline
|
||||
[maximize-pane]: http://pempek.net/articles/2013/04/14/maximizing-tmux-pane-new-window/
|
||||
[Facebook PathPicker]: https://facebook.github.io/PathPicker/
|
||||
[PathPicker]: https://facebook.github.io/PathPicker/
|
||||
[Urlview]: https://packages.debian.org/stable/misc/urlview
|
||||
[Urlscan]: https://github.com/firecat53/urlscan
|
||||
|
||||
The "maximize any pane to a new window with `<prefix> +`" feature is different
|
||||
from builtin `resize-pane -Z` as it allows you to further split a maximized
|
||||
The "Maximize any pane to a new window with `<prefix> +`" feature is different
|
||||
from the builtin `resize-pane -Z` command, as it allows you to further split a maximized
|
||||
pane. It's also more flexible by allowing you to maximize a pane to a new
|
||||
window, then change window, then go back and the pane is still in maximized
|
||||
state in its own window. You can then minimize a pane by using `<prefix> +`
|
||||
either from the source window or the maximized window.
|
||||
|
||||
![Maximize pane](https://cloud.githubusercontent.com/assets/553208/9890858/ee3c0ca6-5c02-11e5-890e-05d825a46c92.gif)
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://cloud.githubusercontent.com/assets/553208/9890858/ee3c0ca6-5c02-11e5-890e-05d825a46c92.gif">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://cloud.githubusercontent.com/assets/553208/9890858/ee3c0ca6-5c02-11e5-890e-05d825a46c92.gif">
|
||||
<img alt="Maximizing a pane" src="https://cloud.githubusercontent.com/assets/553208/9890858/ee3c0ca6-5c02-11e5-890e-05d825a46c92.gif">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
Mouse mode allows you to set the active window, set the active pane, resize
|
||||
panes and automatically switches to copy-mode to select text.
|
||||
|
||||
![Mouse mode](https://cloud.githubusercontent.com/assets/553208/9890797/8dffe542-5c02-11e5-9c06-a25b452e6fcc.gif)
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://cloud.githubusercontent.com/assets/553208/9890797/8dffe542-5c02-11e5-9c06-a25b452e6fcc.gif">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://cloud.githubusercontent.com/assets/553208/9890797/8dffe542-5c02-11e5-9c06-a25b452e6fcc.gif">
|
||||
<img alt="Mouse mode" src="https://cloud.githubusercontent.com/assets/553208/9890797/8dffe542-5c02-11e5-9c06-a25b452e6fcc.gif">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
Bindings
|
||||
--------
|
||||
|
@ -164,15 +211,15 @@ list of key bindings:
|
|||
This configuration uses the following bindings:
|
||||
|
||||
- `<prefix> e` opens the `.local` customization file copy with the editor
|
||||
defined by the `$EDITOR` environment variable (defaults to `vim` when empty)
|
||||
defined by the `EDITOR` environment variable (defaults to `vim` when empty)
|
||||
- `<prefix> r` reloads the configuration
|
||||
- `C-l` clears both the screen and the tmux history
|
||||
- `C-l` clears both the screen **and** the tmux history
|
||||
|
||||
- `<prefix> C-c` creates a new session
|
||||
- `<prefix> C-f` lets you switch to another session by name
|
||||
|
||||
- `<prefix> C-h` and `<prefix> C-l` let you navigate windows (default
|
||||
`<prefix> n` and `<prefix> p` are unbound)
|
||||
`<prefix> n` is unbound and `<prefix> p` is repurposed)
|
||||
- `<prefix> Tab` brings you to the last active window
|
||||
|
||||
- `<prefix> -` splits the current pane vertically
|
||||
|
@ -193,18 +240,22 @@ This configuration uses the following bindings:
|
|||
- `<prefix> p` pastes from the top paste-buffer
|
||||
- `<prefix> P` lets you choose the paste-buffer to paste from
|
||||
|
||||
Additionally, `copy-mode-vi` matches [my own Vim configuration][]
|
||||
Additionally, `copy-mode-vi` matches [my own Vim configuration]
|
||||
|
||||
[my own Vim configuration]: https://github.com/gpakosz/.vim.git
|
||||
|
||||
Bindings for `copy-mode-vi`:
|
||||
|
||||
- `v` begins selection / visual mode
|
||||
- `C-v` toggles between blockwise visual mode and visual mode
|
||||
- `H` jumps to the start of line
|
||||
- `L` jumps to the end of line
|
||||
- `y` copies the selection to the top paste-buffer
|
||||
- `Escape` cancels the current operation
|
||||
- `v` begins selection / visual mode
|
||||
- `C-v` toggles between blockwise visual mode and visual mode
|
||||
- `H` jumps to the start of line
|
||||
- `L` jumps to the end of line
|
||||
- `y` copies the selection to the top paste-buffer
|
||||
- `Escape` cancels the current operation
|
||||
|
||||
It's also possible to preserve the tmux stock bindings by setting the
|
||||
`tmux_conf_preserve_stock_bindings` variable to `true` in your `.local`
|
||||
customization file copy.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
@ -212,32 +263,47 @@ Configuration
|
|||
While this configuration tries to bring sane default settings, you may want to
|
||||
customize it further to your needs.
|
||||
|
||||
❗️ Again, you should never alter the main `.tmux.conf` or `tmux.conf` file.
|
||||
🚨 Again, you should never alter the main `.tmux.conf` or `tmux.conf` file.
|
||||
If you do, you're on your own.
|
||||
|
||||
Please refer to the sample `.local` customization file to know more about the
|
||||
variables that allow you to alter different behaviors. Upon successful
|
||||
installation, pressing `<prefix> e` will open your `.local` customization file
|
||||
copy with the editor defined by the `$EDITOR` environment variable (defaults to
|
||||
copy with the editor defined by the `EDITOR` environment variable (defaults to
|
||||
`vim` when empty).
|
||||
|
||||
### Enabling the Powerline look
|
||||
|
||||
Powerline originated as a status-line plugin for Vim. Its popular eye-catching
|
||||
look is based on the use of special symbols: <img width="80" alt="Powerline Symbols" style="vertical-align: middle;" src="https://cloud.githubusercontent.com/assets/553208/10687156/1b76dda6-796b-11e5-83a1-1634337c4571.png" />
|
||||
look is based on the use of special symbols:
|
||||
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/55afd317-150b-42f0-9ef3-fa619be7b160">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/55afd317-150b-42f0-9ef3-fa619be7b160">
|
||||
<img alt="Powerline symbols" src="https://github.com/user-attachments/assets/55afd317-150b-42f0-9ef3-fa619be7b160">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
To make use of these symbols, there are several options:
|
||||
|
||||
- use a font that already bundles those: this is e.g. the case of the
|
||||
[2.030R-ro/1.050R-it version][source code pro] of the Source Code Pro font
|
||||
- use a [pre-patched font][powerline patched fonts]
|
||||
- use your preferred font along with the [Powerline font][powerline font] (that
|
||||
only contains the Powerline symbols): [this highly depends on your operating
|
||||
system and your terminal emulator][terminal support], for instance here's a
|
||||
screenshot of iTerm2 configured to use `PowerlineSymbols.otf`
|
||||
![iTerm2 + Powerline font](https://user-images.githubusercontent.com/553208/62243890-8232f500-b3de-11e9-9b8c-51a5d38bdaa8.png)
|
||||
- Use a font that already bundles those: this is the case of the [Source Code
|
||||
Pro][source code pro] font
|
||||
- Use a [pre-patched font][powerline patched fonts]
|
||||
- Use your preferred font along with the standalone [Powerline font][powerline
|
||||
font] (that only contains the Powerline symbols): [this highly depends on
|
||||
your operating system and your terminal emulator][terminal support], for
|
||||
instance here's a screenshot of iTerm2 configured to use
|
||||
`PowerlineSymbols.otf` for non ASCII symbols:
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/553208/62243890-8232f500-b3de-11e9-9b8c-51a5d38bdaa8.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/553208/62243890-8232f500-b3de-11e9-9b8c-51a5d38bdaa8.png">
|
||||
<img alt="iTerm2 + Powerline font" src="https://user-images.githubusercontent.com/553208/62243890-8232f500-b3de-11e9-9b8c-51a5d38bdaa8.png">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
[source code pro]: https://github.com/adobe-fonts/source-code-pro/releases/tag/2.030R-ro/1.050R-it
|
||||
[source code pro]: https://github.com/adobe-fonts/source-code-pro/releases/latest
|
||||
[powerline patched fonts]: https://github.com/powerline/fonts
|
||||
[powerline font]: https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
|
||||
[terminal support]: http://powerline.readthedocs.io/en/master/usage.html#usage-terminal-emulators
|
||||
|
@ -253,8 +319,7 @@ tmux_conf_theme_right_separator_sub='\uE0B3'
|
|||
```
|
||||
|
||||
The [Powerline manual] contains further details on how to install fonts
|
||||
containing the Powerline symbols. You don't need to install Powerline itself
|
||||
though.
|
||||
containing the Powerline symbols.
|
||||
|
||||
[Powerline manual]: http://powerline.readthedocs.org/en/latest/installation.html#fonts-installation
|
||||
|
||||
|
@ -262,7 +327,7 @@ though.
|
|||
|
||||
Edit your `.local` customization file copy (`<prefix> e`) and adjust the
|
||||
`tmux_conf_theme_status_left` and `tmux_conf_theme_status_right` variables to
|
||||
your own preferences.
|
||||
your liking.
|
||||
|
||||
This configuration supports the following builtin variables:
|
||||
|
||||
|
@ -271,16 +336,16 @@ This configuration supports the following builtin variables:
|
|||
- `#{battery_vbar}`: 1 character wide, vertical battery charge bar
|
||||
- `#{battery_percentage}`: battery percentage
|
||||
- `#{battery_status}`: is battery charging or discharging?
|
||||
- `#{circled_session_name}`: circled session number, up to 20
|
||||
- `#{circled_session_name}`: circled session number (from ⓪) to ⑳)
|
||||
- `#{hostname}`: SSH/Mosh aware hostname information
|
||||
- `#{hostname_ssh}`: SSH/Mosh aware hostname information, blank when not
|
||||
connected to a remote server through SSH/Mosh
|
||||
- `#{loadavg}`: load average
|
||||
- `#{pairing}`: is session attached to more than one client?
|
||||
- `#{pairing}`: is the current session attached to more than one client?
|
||||
- `#{pretty_pane_current_path}`: prettified `#{pane_current_path}` when its
|
||||
length is too long
|
||||
- `#{prefix}`: is prefix being depressed?
|
||||
- `#{root}`: is current user root?
|
||||
- `#{root}`: is the current user root?
|
||||
- `#{synchronized}`: are the panes synchronized?
|
||||
- `#{uptime_y}`: uptime years
|
||||
- `#{uptime_d}`: uptime days, modulo 365 when `#{uptime_y}` is used
|
||||
|
@ -292,23 +357,29 @@ This configuration supports the following builtin variables:
|
|||
to a remote server through SSH/Mosh
|
||||
|
||||
Beside the variables mentioned above, the `tmux_conf_theme_status_left` and
|
||||
`tmux_conf_theme_status_right` variables support usual tmux syntax, e.g. using
|
||||
`#()` to call an external command that inserts weather information provided by
|
||||
[wttr.in]:
|
||||
`tmux_conf_theme_status_right` variables support the usual tmux syntax, e.g.
|
||||
using `#()` to call an external command that inserts weather information
|
||||
provided by [wttr.in]:
|
||||
```
|
||||
tmux_conf_theme_status_right='#{prefix}#{pairing}#{synchronized} #(curl -m 1 wttr.in?format=3 2>/dev/null; sleep 900) , %R , %d %b | #{username}#{root} | #{hostname} '
|
||||
```
|
||||
The `sleep 900` call makes sure the network request is issued at most every 15
|
||||
minutes whatever the value of `status-interval`.
|
||||
|
||||
![Weather information from wttr.in](https://user-images.githubusercontent.com/553208/52175490-07797c00-27a5-11e9-9fb6-42eec4fe4188.png)
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/553208/52175490-07797c00-27a5-11e9-9fb6-42eec4fe4188.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/553208/52175490-07797c00-27a5-11e9-9fb6-42eec4fe4188.png">
|
||||
<img alt="Weather information from wttr.in" src="https://user-images.githubusercontent.com/553208/52175490-07797c00-27a5-11e9-9fb6-42eec4fe4188.png">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
[wttr.in]: https://github.com/chubin/wttr.in#one-line-output
|
||||
|
||||
💡 You can also define your own custom variables by writing special functions,
|
||||
see the sample `.local` customization file for instructions.
|
||||
💡 You can also define your own custom variables by defining your own POSIX
|
||||
shell functions, see the sample `.local` customization file for instructions.
|
||||
|
||||
Finally, remember `tmux_conf_theme_status_left` and
|
||||
Finally, remember that `tmux_conf_theme_status_left` and
|
||||
`tmux_conf_theme_status_right` end up being given to tmux as `status-left` and
|
||||
`status-right` which means they're passed through `strftime()`. As such, the `%`
|
||||
character has a special meaning and needs to be escaped by doubling it, e.g.
|
||||
|
@ -319,48 +390,44 @@ See also `man 3 strftime`.
|
|||
|
||||
### Using TPM plugins
|
||||
|
||||
This configuration now comes with built-in [TPM] support:
|
||||
- use the `set -g @plugin ...` syntax to enable a plugin
|
||||
- whenever a plugin introduces a variable to be used in `status-left` or
|
||||
`status-right`, you can use it in `tmux_conf_theme_status_left` and
|
||||
This configuration comes with built-in [TPM] support:
|
||||
|
||||
- Use the `set -g @plugin ...` syntax to enable a plugin
|
||||
- Whenever a plugin introduces a variable to be used in `status-left` or
|
||||
`status-right`, you can use it in the `tmux_conf_theme_status_left` and
|
||||
`tmux_conf_theme_status_right` variables, see instructions above 👆
|
||||
- ⚠️ do not add `set -g @plugin 'tmux-plugins/tpm'` to any configuration file
|
||||
- ⛔️ do not add `run '~/.tmux/plugins/tpm/tpm'` to any configuration file
|
||||
- ⚠️ Do not add `set -g @plugin 'tmux-plugins/tpm'` to any configuration file
|
||||
- ⛔️ Do not add `run '~/.tmux/plugins/tpm/tpm'` to any configuration file
|
||||
|
||||
⚠️ The TPM bindings differ slightly from upstream:
|
||||
- installing plugins: `<prefix> + I`
|
||||
- uninstalling plugins: `<prefix> + Alt + u`
|
||||
- updating plugins: `<prefix> + u`
|
||||
- Installing plugins: `<prefix> + I`
|
||||
- Uninstalling plugins: `<prefix> + Alt + u`
|
||||
- Updating plugins: `<prefix> + u`
|
||||
|
||||
See the sample `.local` customization file for instructions.
|
||||
See the sample `.local` customization file for further instructions.
|
||||
|
||||
[TPM]: https://github.com/tmux-plugins/tpm
|
||||
|
||||
### Using the configuration under Cygwin within Mintty
|
||||
### Using Oh my tmux! on Windows
|
||||
|
||||
**I don't recommend running this configuration with Cygwin anymore. Forking
|
||||
under Cygwin is extremely slow and this configuration issues a lot of
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/7f84a687-fb4d-4817-a445-419e63ccfac5">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/7f84a687-fb4d-4817-a445-419e63ccfac5">
|
||||
<img alt="Windows Terminal + WSL" src="https://github.com/user-attachments/assets/7f84a687-fb4d-4817-a445-419e63ccfac5">
|
||||
</picture>
|
||||
</p>
|
||||
|
||||
⚠️ I don't recommend running this configuration with [Cygwin] anymore. Forking
|
||||
under Cygwin is extremely slow and this configuration issues a fair amount
|
||||
`run-shell` commands under the hood. As such, you will experience high CPU
|
||||
usage. As an alternative consider using [Mintty terminal for WSL][wsltty].**
|
||||
usage.
|
||||
|
||||
![cygwin](https://cloud.githubusercontent.com/assets/553208/19741789/67a3f3d8-9bc2-11e6-9ecc-499fc0228ee6.png)
|
||||
Instead I recommend [Windows Subsystem for Linux][WSL] along with [Windows
|
||||
Terminal]. As an alternative, you may also consider using [Mintty as a terminal
|
||||
for WSL][wsltty].
|
||||
|
||||
It is possible to use this configuration under Cygwin within Mintty, however
|
||||
support for Unicode symbols and emojis lacks behind Mac and Linux.
|
||||
|
||||
Particularly, Mintty's text rendering is implemented with GDI which has
|
||||
limitations:
|
||||
|
||||
- color emojis are only available through DirectWrite starting with Windows 8.1
|
||||
- display of double width symbols, like the battery discharging symbol indicator
|
||||
(U+1F50B) is buggy
|
||||
|
||||
To get Unicode symbols displayed properly, you have to use [font linking].
|
||||
Open `regedit.exe` then navigate to the registry key at
|
||||
`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink`
|
||||
and add a new entry for you preferred font to link it with the Segoe UI Symbol
|
||||
font.
|
||||
|
||||
![regedit](https://cloud.githubusercontent.com/assets/553208/19741304/71a2f3ae-9bc0-11e6-96aa-4c09a812c313.png)
|
||||
|
||||
[font linking]: https://msdn.microsoft.com/en-us/goglobal/bb688134.aspx
|
||||
[Cygwin]: https://www.cygwin.com
|
||||
[WSL]: https://learn.microsoft.com/en-us/windows/wsl
|
||||
[wsltty]: https://github.com/mintty/wsltty
|
||||
[Windows Terminal]: https://aka.ms/terminal
|
||||
|
|
Loading…
Reference in a new issue