2个版本

使用旧的Rust 2015

0.1.1 2017年9月7日
0.1.0 2017年9月7日

#664配置

MIT 许可证

12KB
187

tma:tmux自动化工具

tma 并不是由我在tmux自动化解决方案中想要的特性决定的,更多的是由我不想要的特性决定的。具体来说

  • 我不想要一个完整的解释型编程语言。相反,给我一个可以scp到远程服务器或者编译到任何地方的单个二进制文件。
  • 我不想要在自动化规范中有一个完整的编程语言。我应该能够从内存中快速编写一些代码来打开几个窗口和面板,并按我的需求设置它们。《TOML》应该可以很好地工作。
  • 我不希望在自动化中有一大堆特定于项目的设置,尤其是当我会很可能将相同的设置复制到每个我开始的Node/Rust/Elixir项目中时。为什么我的tmux自动化需要关心会话名称,当它可以很可能是从当前目录推断出来的时候?同样,为什么我需要指定根目录?我应该能够给其他人我的设置,并且他们可以不修改地运行它。
  • 我不希望我的自动化解决方案除了自动化tmux之外还能做更多的事情。不要管理配置目录,启动我的编辑器,或者做其他除了在自动化tmux方面很棒的事情。

所以,这就是tma

构建

您需要一个Rust工具链。设置完成后,只需检出此存储库并运行

$ cargo install

您最终会得到$HOME/.cargo/bin/tma

配置

tma在其当前目录中的.tma.toml中查找其配置。使用-命令行选项来指定不同的文件名。

以下是一个所有当前支持选项的完整注释示例

name = "myproject" # optional, tmux session name, defaults to current directory name if unset
root = "src" # optional, relative path from which all tmux commands are executed, defaults to current directory
attach = true # optional, indicates whether or not to attach to the created session, true by default

[[window]]
name = "code" # optional window named
root = "code" # optional, path at which this window is open, relative from the session root

[[window.pane]]
root = "subdir" # optional, path at which this pane is open, relative from the session and window root
command = "vim" # optional, command run in this pane
split = "horizontal" # optional, splits this window horizontally, all other values ignored
...

示例

以下是我开发此项目时使用的.tma.toml文件

[[window]]
name = "code"

[[window.pane]]
command = "vim"

[[window.pane]]
command = "cargo watch"

这会打开一个tmux会话,顶部是Vim,下面是cargo watch

许可证

版权所有(c)2017 Nolan Darilek

特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人,免费使用该软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售该软件副本的权利,并允许获得该软件的人使用该软件,但须遵守以下条件

上述版权声明和本许可声明应包含在软件的副本或实质性部分中。

本软件按照“现状”提供,不提供任何形式的保证,无论是明示的、暗示的还是其他形式的,包括但不限于适销性、特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论这些责任是基于合同行为、侵权行为还是其他行为,以及与软件、使用或其他方式有关或由此产生。

依赖项

~6.5MB
~131K SLoC