6个版本
0.6.4 | 2023年9月9日 |
---|---|
0.6.3 | 2022年11月4日 |
0.6.2 | 2020年9月11日 |
0.5.2 | 2020年5月24日 |
#226 in 文件系统
每月50次下载
34KB
744 行
DMUX
(开发tMUX)
正在考虑新的名称
这是什么?
如果你经常使用tmux,那么你可能有一个像这样的脚本
tmux new-window -n $WINDOW_NAME
tmux split-window -h
tmux select-pane -t 0
tmux send-keys "fish" C-m
tmux send-keys "nvim" C-m
tmux select-pane -t 1
tmux send-keys "fish" C-m
tmux resize-pane -R 80
tmux -2 attach-session -t $SESSION
上面的脚本设置并打开一个带有指定命令和布局的tmux会话。但是,如果我想再开一个用于运行测试的窗口,或者另一个用于记笔记的窗口,我就必须创建一个全新的脚本。我还想能够使用像fzf或skim这样的程序来选择要打开的目录。这太烦人了。
DMux旨在为你处理所有这些。它的主要工作是打开配置好的“工作空间”,无论在哪个目录下。它还允许你指定通常在上述脚本中设置的任何内容。
例如,上述使用DMux的脚本将是:dmux -c nvim fish <path>
然后,如果我想工作空间打开3个窗口而不是2个,我可以添加:dmux -c nvim fish "npm i" -p 3 <path>
但是,如果我想使用fzf来选择一个目录来打开。如果我在我的系统上安装了它,那么我只需省略参数,DMux就会自动打开一个fzf选择器,其中包含可以选择的目录。
如果这部分启动有点慢,不用担心,你可以通过安装fd来加速目录搜索。
你还可以通过管道将路径输入DMux来使用任何组合的目录搜索、选择器或硬编码路径:fd -td | fzf | dmux
或者直接提供路径参数:dmux <path>
为什么还需要另一个Tmux管理器?
还有很多其他出色的项目也在做类似的事情,你应该去看看
- tmuxinator
- tmuxomatic - 已弃用
- teamocil - 已弃用
那么为什么我会制作DMux呢?
- dmux 是一个独立的二进制程序,不依赖于特定语言即可运行。
- 其他工具(如可能最受欢迎的管理器 tmuxinator)围绕一个具有特定根目录的“项目”系统构建。这使得重用这些配置变得困难。dmux 则相反,它基于目录无关的配置文件,可以在任何根目录下运行。
- 由于 dmux 对根目录无感知,它还专注于快速选择和打开目录。您可以轻松设置选择脚本将目录管道输入 dmux,或者如果您已安装 fzf,dmux 将在无参数运行时使用它来选择目录。
- 这些“配置文件”还可以很好地与命令行参数混合(所有工作空间设置都可以在任一位置设置)因此可以在脚本或绑定中轻松扩展。
安装
macOS
brew tap zdcthomas/tools
brew install dmux
或者如果您已安装 rust
cargo install dmux
AUR
Coming soon
用法
dmux
独自运行将使用fzf
打开~
中的目录列表。这相当于说fd -td . ~/ | fzf | dmux
dmux <path>
或<path> | dmux
将在提供的路径中打开工作空间dmux clone
将克隆一个 git 仓库并在工作空间中打开它dmux layout
将描述当前的 Tmux 布局。这使用 Tmux 布局表示法dmux --help
获取更多信息
配置
Dmux 的配置在配置文件类型方面力求尽可能包容。Dmux 支持 JSON, YAML, TOML,
和 HJSON
。它还支持包括 ~/.dmux.conf.{file_type}
、~/.config/dmux/dmux.conf.{file_type}
以及在 Linux 上的 $XDG_CONFIG_HOME/dmux/dmux.conf.{file_type}
在内的多种路径
示例配置文件
此配置文件有一个名为 javascript
的配置文件和默认设置
TOML
layout = "5e09,281x67,0,0{133x67,0,0,17,147x67,134,0[147x33,134,0,18,147x33,134,34{73x33,134,34,136,73x33,208,34[73x16,208,34,164,73x16,208,51,165]}]}"
session_name = "development"
number_of_panes = 5
commands = ["nvim", "fish"]
[javascript]
number_of_panes = 3
session_name = "frontend"
commands = ["nvim", "fish", "yarn watch"]
外部依赖
目前 dmux 依赖于 fzf 来选择目标目录以在其中打开工作空间。如果您已安装 fd,dmux 将使用它来加快目录搜索速度。
潜在特性
- 启动时读取配置文件
- 布局字符串的参数
- 配置中的配置文件表示配置集合
- 目录搜索命令的配置/参数
- 可选使用 fd 以加快/异步目录搜索
- 子命令描述当前布局
- 子命令用于从 fzf 中杀死窗口
- 子命令用于生成默认配置文件
- 目录搜索深度的配置/参数
- 一次性命令,一旦完成,就会杀死其所在的窗格,例如
npm i
或mix deps.get
- dmux.local.{yml|json|toml} 文件,以便特定目录可以具有特定的布局。这是危险的,因为 dmux 允许运行任意命令,可能会被恶意利用
- 切换到 skim 以避免外部依赖
错误
请将错误作为问题提交,我将在此处添加它们
依赖关系
~10–23MB
~309K SLoC