ck3mp3r/laio-cli · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
一个简洁的、受 flexbox 启发的 tmux 布局与会话管理器。使用 YAML 定义复杂的多窗口、多窗格布局,并通过启动/关闭钩子管理会话生命周期。
功能
- 受 flexbox 启发的布局 - 使用
flex和flex_direction(行/列)定义窗格分割 - 模板变量 - 支持 Tera 模板和数组变量的动态配置
- 会话生命周期管理 - 启动/关闭命令和嵌入式脚本
- 双配置模式 - 全局配置(
~/.config/laio)或本地项目配置(.laio.yaml) - 会话序列化 - 将现有 tmux 会话导出为 YAML 格式
- 焦点与缩放控制 - 在配置中固定焦点和缩放状态
- 环境变量与 Shell 自定义 - 按会话设置环境变量和 Shell 覆盖
- Tmux 原生 - 专为 tmux 构建(提供实验性的 Zellij 支持)
快速开始
# Install (see Installation section)
nix profile install "github:ck3mp3r/laio-cli"
# Create a new config
laio config create myproject
# Start the session
laio start myproject
# List sessions and configs
laio list
安装
支持的平台:
- Linux: x86_64 (Intel/AMD), aarch64 (ARM)
- macOS: aarch64 (Apple Silicon)
Nix
nix profile install "github:ck3mp3r/laio-cli"
Homebrew
brew tap ck3mp3r/laio-cli https://github.com/ck3mp3r/laio-cli/
brew install laio
二进制下载
从发布页面下载并添加到 PATH。
开发
先决条件
- Rust 1.70+(或使用 Nix 进行可复现构建)
- tmux 3.0+
构建
cargo build --release
# Binary at: target/release/laio
测试
cargo test
开发环境(Nix)
nix develop
# or use direnv
direnv allow
配置模式
YAML 配置模式定义于 src/common/config/schema.json。请将其用于编辑器集成(LSP、验证)。
用法
命令
laio start [name] # Start session (interactive picker if name omitted)
laio start --file config.yaml # Start from specific file
laio start --var key=value # Start with template variables
laio stop [name] # Stop session
laio stop --all # Stop all laio-managed sessions
laio list # List sessions and configs
laio config create <name> # Create new config
laio config create --var key=value # Create from _default.yaml with variables
laio config create --copy src # Create from existing config
laio config edit <name> # Edit config in $EDITOR
laio config link <name> # Symlink .laio.yaml to global config
laio session yaml # Export current tmux session to YAML
laio completion <shell> # Generate shell completions
参见 laio --help 或 完整文档 以查看所有选项。
模板变量
使用模板变量创建可复用的配置:
name: {{ session_name }}
path: {{ path }}
windows:
{% for service in services %}
- name: {{ service }}
panes:
- path: ./{{ service }}
commands:
- command: npm
args: [run, dev]
{% endfor %}
自动注入的变量:
session_name- 从会话名称设置(不可覆盖)path- 默认为当前工作目录
从变量开始:
# Uses session name and cwd automatically
laio start myproject
# Override path
laio start myproject --var path=~/projects/myproject
# Multiple services (array variables)
laio start microservices \
--var services=auth \
--var services=api \
--var services=frontend
参见 模板变量文档 以获取完整的语法和示例。
配置
配置是定义会话布局的 YAML 文件:
name: myproject
path: /path/to/myproject
# Session lifecycle hooks
startup:
- command: docker-compose
args: [up, -d]
startup_script: |
#!/usr/bin/env bash
echo "Session starting..."
shutdown:
- command: docker-compose
args: [down]
shutdown_script: |
#!/usr/bin/env bash
echo "Cleaning up..."
# Session environment
shell: /bin/zsh
env:
NODE_ENV: development
DEBUG: "app:*"
# Window and pane layout
windows:
- name: editor
focus: true # active window after session creation
panes:
- name: nvim
commands:
- command: $EDITOR
- name: dev
flex_direction: row # vertical split (panes side-by-side)
panes:
- flex: 2
flex_direction: column # horizontal split (panes stacked)
panes:
- flex: 3
path: ./src
focus: true # initial focus
commands:
- command: npm
args: [run, dev]
- flex: 1
zoom: true # start zoomed
script: |
#!/usr/bin/env bash
tail -f logs/app.log
- flex: 1
style: bg=blue,fg=white # tmux pane styling
主要特性:
flex:按比例调整大小(例如,flex: 2=flex: 1的两倍大小)flex_direction:row(垂直分割,并排显示)或column(水平分割,堆叠显示)focus(窗口):会话创建后的活动窗口focus(窗格):固定窗口内的初始光标位置zoom:以缩放状态启动窗格commands:顺序执行命令script:内联脚本块path:工作目录(绝对路径或相对于会话根目录)
请参阅 配置文档 以获取所有选项。
项目配置
在任意项目目录中创建 .laio.yaml:
cd myproject
laio config create # creates .laio.yaml
laio start # auto-detects and uses .laio.yaml
将本地配置链接到全局命名空间:
laio config link myproject # symlinks .laio.yaml -> ~/.config/laio/myproject.yaml
会话序列化
将现有的 tmux 会话导出为 YAML:
# From within a tmux session
laio session yaml > ~/.config/laio/newsession.yaml
使用限制
严禁任何直接或间接参与协助或纵容针对加沙巴勒斯坦人民实施的种族灭绝和暴行的组织、公司或政府使用本软件。仅允许与上述行为无关的个人和实体使用本软件。
许可证
参见 LICENSE.md