浏览代码

feat(tmux): prioritize `tmux` terminfo (#12243)

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
Pandu E POLUAN 2 月之前
父节点
当前提交
51bf9fc2de
共有 2 个文件被更改,包括 28 次插入20 次删除
  1. 16 16
      plugins/tmux/README.md
  2. 12 4
      plugins/tmux/tmux.plugin.zsh

+ 16 - 16
plugins/tmux/README.md

@@ -1,7 +1,7 @@
 # tmux
 
-This plugin provides aliases for [tmux](https://tmux.github.io/), the terminal multiplexer.
-To use it add `tmux` to the plugins array in your zshrc file.
+This plugin provides aliases for [tmux](https://tmux.github.io/), the terminal multiplexer. To use it add
+`tmux` to the plugins array in your zshrc file.
 
 ```zsh
 plugins=(... tmux)
@@ -29,17 +29,17 @@ The plugin also supports the following:
 
 ## Configuration Variables
 
-| Variable                            | Description                                                                                 |
-| ----------------------------------- | ------------------------------------------------------------------------------------------- |
-| `ZSH_TMUX_AUTOSTART`                | Automatically starts tmux (default: `false`)                                                |
-| `ZSH_TMUX_AUTOSTART_ONCE`           | Autostart only if tmux hasn't been started previously (default: `true`)                     |
-| `ZSH_TMUX_AUTOCONNECT`              | Automatically connect to a previous session if it exits (default: `true`)                   |
-| `ZSH_TMUX_AUTOQUIT`                 | Automatically closes terminal once tmux exits (default: `ZSH_TMUX_AUTOSTART`)               |
-| `ZSH_TMUX_CONFIG`                   | Set the configuration path (default: `$HOME/.tmux.conf`, `$XDG_CONFIG_HOME/tmux/tmux.conf`) |
-| `ZSH_TMUX_DEFAULT_SESSION_NAME`     | Set tmux default session name when autostart is enabled                                     |
-| `ZSH_TMUX_DETACHED`                 | Set the detached mode (default: `false`)                                                        |
-| `ZSH_TMUX_FIXTERM`                  | Sets `$TERM` to 256-color term or not based on current terminal support                     |
-| `ZSH_TMUX_FIXTERM_WITHOUT_256COLOR` | `$TERM` to use for non 256-color terminals (default: `screen`)                              |
-| `ZSH_TMUX_FIXTERM_WITH_256COLOR`    | `$TERM` to use for 256-color terminals (default: `screen-256color`                          |
-| `ZSH_TMUX_ITERM2`                   | Sets the `-CC` option for iTerm2 tmux integration (default: `false`)                        |
-| `ZSH_TMUX_UNICODE`                  | Set `tmux -u` option to support unicode                                                     |
+| Variable                            | Description                                                                                                 |
+| ----------------------------------- | ----------------------------------------------------------------------------------------------------------- |
+| `ZSH_TMUX_AUTOSTART`                | Automatically starts tmux (default: `false`)                                                                |
+| `ZSH_TMUX_AUTOSTART_ONCE`           | Autostart only if tmux hasn't been started previously (default: `true`)                                     |
+| `ZSH_TMUX_AUTOCONNECT`              | Automatically connect to a previous session if it exits (default: `true`)                                   |
+| `ZSH_TMUX_AUTOQUIT`                 | Automatically closes terminal once tmux exits (default: `ZSH_TMUX_AUTOSTART`)                               |
+| `ZSH_TMUX_CONFIG`                   | Set the configuration path (default: `$HOME/.tmux.conf`, `$XDG_CONFIG_HOME/tmux/tmux.conf`)                 |
+| `ZSH_TMUX_DEFAULT_SESSION_NAME`     | Set tmux default session name when autostart is enabled                                                     |
+| `ZSH_TMUX_DETACHED`                 | Set the detached mode (default: `false`)                                                                    |
+| `ZSH_TMUX_FIXTERM`                  | Sets `$TERM` to 256-color term or not based on current terminal support                                     |
+| `ZSH_TMUX_FIXTERM_WITHOUT_256COLOR` | `$TERM` to use for non 256-color terminals (default: `tmux` if available, `screen` otherwise)               |
+| `ZSH_TMUX_FIXTERM_WITH_256COLOR`    | `$TERM` to use for 256-color terminals (default: `tmux-256color` if available, `screen-256color` otherwise) |
+| `ZSH_TMUX_ITERM2`                   | Sets the `-CC` option for iTerm2 tmux integration (default: `false`)                                        |
+| `ZSH_TMUX_UNICODE`                  | Set `tmux -u` option to support unicode                                                                     |

+ 12 - 4
plugins/tmux/tmux.plugin.zsh

@@ -20,13 +20,21 @@ fi
 # Set '-CC' option for iTerm2 tmux integration
 : ${ZSH_TMUX_ITERM2:=false}
 # The TERM to use for non-256 color terminals.
-# Tmux states this should be screen, but you may need to change it on
+# Tmux states this should be tmux|screen, but you may need to change it on
 # systems without the proper terminfo
-: ${ZSH_TMUX_FIXTERM_WITHOUT_256COLOR:=screen}
+if [[ -e /usr/share/terminfo/t/tmux ]]; then
+  : ${ZSH_TMUX_FIXTERM_WITHOUT_256COLOR:=tmux}
+else
+  : ${ZSH_TMUX_FIXTERM_WITHOUT_256COLOR:=screen}
+fi
 # The TERM to use for 256 color terminals.
-# Tmux states this should be screen-256color, but you may need to change it on
+# Tmux states this should be (tmux|screen)-256color, but you may need to change it on
 # systems without the proper terminfo
-: ${ZSH_TMUX_FIXTERM_WITH_256COLOR:=screen-256color}
+if [[ -e /usr/share/terminfo/t/tmux-256color ]]; then
+  : ${ZSH_TMUX_FIXTERM_WITH_256COLOR:=tmux-256color}
+else
+  : ${ZSH_TMUX_FIXTERM_WITH_256COLOR:=screen-256color}
+fi
 # Set the configuration path
 if [[ -e $HOME/.tmux.conf ]]; then
   : ${ZSH_TMUX_CONFIG:=$HOME/.tmux.conf}