5 个版本
0.2.2 | 2024 年 6 月 1 日 |
---|---|
0.2.1 | 2023 年 12 月 31 日 |
0.2.0 | 2023 年 12 月 30 日 |
0.1.1 | 2023 年 11 月 1 日 |
0.1.0 | 2023 年 9 月 29 日 |
#105 in 配置
264 个月的下载量
63KB
1.5K SLoC
Tuxmux
Tuxmux (tux) 是 tmux 的会话和窗口管理器。
特性
-
模糊查找 tmux 会话以创建/附加。
-
跳转列表以快速打开 tmux 会话(类似 harpoon)
-
支持跳转的关键绑定
-
高度可配置
-
会话创建时支持 git 工作树
安装
Cargo
cargo install tuxmux
Nix
# Try out tuxmux with `nix run`
nix run github:EdenEast/tuxmux
# Create a devshell with `nix shell`
nix shell github:EdenEast/tuxmux
# Install into profile
nix profile install github:EdenEast/tuxmux
# Install from nixpkgs
nix-env -iA nixpkgs.tuxmux
源代码
cargo install --path .
补全
将此添加到您的配置文件末尾(通常是 ~/.bashrc
)
eval "$(tux completion bash)"
将此添加到您的配置文件末尾(通常是 ~/.elvish/rc.elv
)
eval (tux completion elvish | slurp)
将此添加到您的配置文件末尾(通常是 ~/.config/fish/config.fish)
tux completion fish | source
将此添加到您的配置文件末尾(在 PowerShell 中运行 echo $profile
以查找它)
Invoke-Expression (& { (tux compltion powershell | Out-String) })
将此添加到您的配置文件末尾(通常是 ~/.zshrc
)
eval "$(tux completion zsh)"
为了使补全工作,上述行必须在调用 compinit 之后添加。您可能需要通过运行 rm ~/.zcompdump*; compinit 来重新构建您的补全缓存。
Nix
如果使用 nix 安装,以下默认安装
-
Bash
-
Fish
-
Zsh
Jumplist
Tuxmux 包含一个称为“跳转列表”的功能,旨在简化导航和快速附加到不同会话的过程。这个概念受到在 ThePrimeagen/harpoon 中引入的“harpooning”概念的启发。跳转列表是一个强大的工具,用于促进与多个会话的无缝交互。
什么是 Harpooning?
Harpooning 是来自 ThePrimeagen 的 GitHub 项目的概念,涉及快速高效地连接到终端环境中不同的会话或目标。这是一种常用于同时处理多个终端会话的开发人员和高级用户的技术。
使用跳转列表
跳转列表的主要用途是通过快捷键快速访问和连接到特定的会话。以下是工作原理
填充跳转列表
在您可以使用跳转列表之前,您需要将其填充您希望与之交互的会话。这通常可以通过在应用程序配置中定义一组会话或目标来实现。
shell
# Appends the path argument to the jumplist
tux jump --path ~/.config/nvim
# Append the current path to the jumplist
tux jump --path .
# Open the jumplist in your $EDITOR
tux jump --edit
使用快捷键导航
一旦跳转列表填充完毕,您可以使用快捷键或键盘快捷方式导航到列表中的特定索引。每个索引通常对应一个会话或目标。这允许您通过单个键组合跳转到所需的会话。
~/.config/tmux.conf
# Bind homerow keys to tuxmux jumplist indices
bind-key -r J run-shell "tux jump --index 1"
bind-key -r K run-shell "tux jump --index 2"
bind-key -r L run-shell "tux jump --index 3"
bind-key -r '"' run-shell "tux jump --index 4"
无缝会话附加
当您激活跳转列表中的特定索引时,应用程序将迅速将您附加到相应的会话,简化了与多个会话交互的过程。
Git Worktree
此应用程序支持 Git worktree,允许您更高效地管理 Git 仓库中的多个 worktree。当使用此应用程序创建 Tmux 会话时,您可以选择将哪个 worktree 附加到仓库(如果仓库包含多个 worktree)。
当您使用此应用程序创建 Tmux 会话时,可能会遇到 Git 仓库包含多个 worktree 的情况。为了提供无缝体验,应用程序将提示您选择在 Tmux 会话中附加哪个 worktree。
配置
Tuxmux 使用 KDL 作为其配置语言。
快速入门
mkdir -p ~/.config/tuxmux
tux --default-config > ~/.config/tuxmux/config.kdl
文件位置
Tuxmux 从两种来源加载配置信息,本地和全局。文件由在每个路径中搜索第一个 config.kdl
文件来确定。
本地 | 全局 |
---|---|
$TUXMUX_DATA_PATH |
$TUXMUX_CONFIG_PATH |
$XDG_DATA_HOME/tuxmux |
$XDG_CONFIG_HOME/tuxmux |
~/.local/share/tuxmux |
~/.config/tuxmux |
在本地配置文件中定义的值具有高于全局值的优先级。包含列表的值将合并而不是覆盖。
选项
config.kdl
中定义的值的全列表。
depth
设置工作区路径的最大搜索深度。
类型: number
默认: 5
depth 3
height
模糊查找选择窗口的高度。值可以是数字或字符串。数字表示要显示的行数或条目数。字符串可以是字符串 "full",表示全屏,或是一个数字后跟一个 "%"(百分号)。百分比是终端高度用于的百分比。
类型: string | number
默认: 50%
height 10
default_worktree
如果找到多个 worktree,选择仓库的远程默认分支。如果找不到默认 worktree,将回退到选择正确的 one。
类型: boolean
默认: false
default_worktree true
exclude_paths
工作区目录爬虫将剪枝包含这些组件的路径。
可选参数
- default: (boolean) 如果为 true,则附加到默认值(默认: true)
类型: string list
默认: { - ".direnv" "node_modules" }
exclude_paths default=false {
- ".direnv"
- "node_modules"
}
paths
配置用于搜索有效工作区的搜索路径列表。Tux 使用这些有效工作区作为附加选项。
paths.workspace
工作区路径是递归搜索以找到有效工作区的路径。Tux 将递归搜索工作区路径,直到达到最大深度。要覆盖默认工作区值,设置可选 default=false
可选参数
- default: (boolean) 如果为 true,则附加到默认值(默认: true)
类型: string list
默认: { - "~" }
paths {
workspaces default=false {
- "~/code"
}
}
paths.single
单个路径是指添加到有效工作区路径列表中的路径。如果您想添加一个不应定义为有效工作区的路径,这很有用。
可选参数
- default: (boolean) 如果为 true,则附加到默认值(默认: true)
类型: string list
默认值:{}
paths {
single default=false {
- "~/.config/nvim"
}
}
开发
Tuxmux 目前处于开发阶段,在 v1 版本发布之前可能会发生变化。您对 tuxmux 有什么想法?可以提交一个 issue 或 fork 项目并创建一个 PR。
Tuxmux 最初是我 dotfiles 中的一个 shell 脚本,后来发展成这个实用程序。
许可证
Tuxmux 根据 Apache 许可证(版本 2)授权。
有关更多详细信息,请参阅 LICENSE 文件。
依赖项
~22–34MB
~563K SLoC