17 个重大版本
0.18.0 | 2024年7月12日 |
---|---|
0.16.0 | 2024年7月1日 |
0.11.0 | 2024年3月11日 |
#33 在 命令行工具
35 每月下载量
310KB
2K SLoC
Tinty - 一个用 Rust 编写的 Tinted 主题 CLI 工具 🦀
使用一条命令即可更改您的终端、文本编辑器以及其他任何软件的主题。立即在250多个主题之间切换!
Tinty 是一个 Base16 和 Base24 主题管理器,适用于所有 Tinted 主题项目,包括任何遵循 Base16 构建规范的第三方模板仓库。
要了解更多关于 Tinted 主题和 Base16 规范的信息,请查看我们的 主页仓库,并查看 Tinty 支持的主题,请查看我们的 Base16 画廊。
目录
工作原理
在核心上,Tinty 通过利用 Base16 和 Base24 模板主题的力量,旨在通过简化不同工具和环境中主题化的过程。以下是 Tinty 的工作原理的详细介绍
主题应用流程
当您设置 Tinty 并应用一个主题时,Tinty 会执行多个步骤以确保所选主题无缝集成到您指定的应用程序中
-
配置加载:Tinty 首先读取您的
config.toml
文件,以了解您的设置和您定义的特定主题组件([[items]]
)。此配置决定了从用于执行钩子的shell到应用的主题和模板的所有内容。 -
主题仓库管理:对于配置中的每个项目,Tinty会检查必要的主题模板仓库是否已经克隆到您的本地机器。如果没有,它将仓库克隆到
~/.local/share/tinted-theming/tinty
,确保您始终可以轻松访问最新的主题。 -
主题复制:设置好仓库后,Tinty会根据您选择的方案从每个模板仓库复制相关的主题文件。这一步将所有必要的模板主题文件集中在一起。
-
执行的钩子:所有主题文件准备就绪后,Tinty会执行在您的
config.toml
中指定的可选shell钩子。这些钩子可能会直接应用主题(例如,通过源shell脚本)或执行其他操作,如将主题文件复制到特定位置。这正是实际应用主题的地方,影响您的终端、文本编辑器和您配置的任何其他工具。
超越基本主题
Tinty的功能不仅限于应用主题
-
方案列表和信息:Tinty可以列出所有可用的方案,并提供它们的详细信息。此功能可以帮助您探索并从Tinty支持的超过250个主题中进行选择,包括遵循Base16构建规范的第三方仓库中的主题。
-
动态更新:运行
tinty update
将在您的本地主题模板仓库副本上执行git pull
命令。这确保您可以访问社区提供的最新主题和更新。 -
初始化和持久性:使用
tinty init
,该工具可以在启动时重新应用最后使用的主题或默认方案,使您的主题偏好跨会话保持持久。
设计用于灵活性
Tinty的设计考虑了灵活性,可以满足广泛的主题需求和偏好。无论您是想在多个工具之间快速切换主题,探索新的配色方案,还是在开发环境中确保一致的视觉效果,Tinty都提供了必要的机制来实现这一点。
通过了解Tinty执行的操作和您可用的选项,您可以定制主题过程以适应您的 workflow,使您的体验更加愉快和高效。
安装
Cargo
cargo install tinty
Homebrew
brew tap tinted-theming/tinted
brew install tinty
二进制文件
从仓库发布页面下载相关的二进制文件。
手册
git clone https://github.com/tinted-theming/tinty path/to/tinty
cd path/to/tinty
make install
make build
cp target/release/tinty /path/to/bin/dir
基本用法
在不进行配置的基本使用情况下,安装Tinty并运行以下命令以应用base16-mocha
tinty install # Required once or when your config file is updated
tinty apply base16-mocha
获取方案列表以及有关颜色的更多信息
tinty list
tinty info base16-oceanicnext
在没有任何config.toml
文件的情况下,tinty
将使用sh
shell通过base16-shell应用您的shell主题。
用法
有关高级使用和设置的详细信息,请参阅USAGE.md文档。
命令行界面
以下是一个表格,列出了CLI工具(Tinty)的可用子命令,包括描述和任何显著参数。
子命令 | 描述 | 参数 | 示例用法 |
---|---|---|---|
install |
安装配置所需的依赖项。 | - | tinty install |
list |
列出所有可用的主题。 | 可选参数 --custom-schemes 以使用 tinty generate-scheme 列出保存的自定义主题文件 |
tinty list |
apply |
应用特定的主题。 | <scheme_system>-<scheme_name> :要应用的系统和方案名称。 |
应用 base16-mocha |
更新 |
更新模板和方案。 | - | 更新 tinty |
初始化 |
使用最后应用的主题初始化工具,否则从 config.toml 使用 default-scheme 。 |
- | 初始化 tinty |
当前 |
显示当前应用的方案。 | - | 当前 tinty |
配置 |
显示 Tinty 当前使用的配置相关信息。如果没有提供标志,返回 config.yml 内容。 |
- | 配置 tinty |
信息 |
提供有关主题的信息。 | [<scheme_system>-<scheme_name>] :可选参数 --custom-schemes 可提供任何自定义方案的信息 |
信息 tinty base16-mocha |
构建 |
使用 tinted-builder-rust 构建 base16 或 base24 模板。 | <DIR> :base16 或 base24 模板目录的路径。 |
构建 tinty 路径/到/tinted-tmux |
生成补全 |
生成一个shell补全文件,可以在shell启动文件(*rc )中源。 |
<shell_name> :为生成补全脚本的shell命名。支持 bash ,elvish ,fish ,powershell ,zsh |
生成 tinty-补全 bash |
生成方案 |
根据提供的图像生成一个包含推断颜色的 yaml 方案文件。 | <image_path> :图像的路径。可以是 <outpath> (打印到标准输出的值)或 --save 保存以在 tinty 中使用 |
生成 tinty-补全 bash |
某些子命令支持额外的标志和选项来修改其行为
标志/选项 | 描述 | 适用的子命令 | 默认值 | 示例用法 |
---|---|---|---|---|
--config -c |
指定自定义配置文件路径。 | 所有 | 如果没有提供,tinty 会查找位于 $XDG_CONFIG_HOME/tinted-theming/tinty/config.toml 的 config.toml ,否则位于 ~/.config/tinted-theming/tinty/config.toml 。 |
tinty apply base16-ayu-dark --config /path/to/custom/config.toml |
--data-dir |
指定数据目录的路径。 | 所有 | 如果没有提供,tinty 会查找数据目录位于 $XDG_DATA_HOME/tinted-theming/tinty ,否则位于 ~/.local/share/tinted-theming/tinty 。 |
tinty install--data-dir/path/到/custom/data-dir |
--help -h |
显示子命令的帮助信息。 | 所有 | - | tinty --help ,tinty apply --help 等。 |
--version -V |
显示 tinty 的版本。 | 所有 | - | tinty--版本 |
--config-path |
显示 config.yml 路径。 | 配置 |
- | 配置 tinty--配置-path |
--data-dir-path |
显示数据目录路径。 | 配置 |
- | 配置 tinty--data-dir-path |
配置
config.toml
文件允许您自定义和配置应用程序的行为,启用个性化的主题和功能。此文件指定了shell设置、默认主题方案以及终端、编辑器主题或其他受支持应用程序的各种配置。
全局 config.toml
表格架构
以下列出了 config.toml
的全局配置选项。这些设置适用于Tinty的整体操作,包括默认shell命令和默认主题方案。设置这些选项可以根据您的喜好和环境定制Tinty体验。
键 | 类型 | 必需 | 描述 | 默认值 | 示例 |
---|---|---|---|---|---|
shell |
字符串 |
可选 | 指定用于执行钩子的shell命令。 | "sh -c '{}'" |
shell= "bash -c '{}'" |
default-scheme |
字符串 |
可选 | 定义当未设置特定方案时要应用的默认主题方案。 | None | default-scheme= "base16-mocha" |
hooks |
数组<字符串> |
可选 | 一个字符串列表,在每次执行 tinty apply 后执行。 |
None | hooks= ["echo\"当前方案是:$(tinty current)\""] |
[[items]] |
数组<items> |
必需 | 一组 items 配置。每个项目代表一个可主题化的组件。下一节提供了详细的结构。 |
- | - |
Items表格 config.toml
架构
config.toml
中的 [[items]]
部分允许对单个可主题化组件进行详细的自定义。每个项目代表您可以主题化的特定元素,例如文本编辑器或终端。下表概述了这些项目的结构,包括如何指定模板、主题文件的目录以及应用主题的钩子。有效地配置项目可以让您在不同的应用程序中无缝地管理多个主题。
键 | 类型 | 必需 | 描述 | 默认值 | 示例 |
---|---|---|---|---|---|
name |
字符串 |
必需 | 配置的项目的唯一名称。 | - | name= "vim" |
path |
字符串 |
必需 | 主题模板仓库的文件系统路径或URL。以 ~/ 开头的路径映射到主目录。 |
- | path= "https://github.com/base16-vim" |
themes-dir |
字符串 |
必需 | 存储主题文件的仓库中的目录。 | - | themes-dir= "colors" |
hook |
字符串 |
可选 | 在应用主题后执行的命令。对于重新加载配置很有用。 %f 模板变量映射到应用的主题文件路径。 |
None | hook= "source ~/.vimrc" |
theme-file-extension |
字符串 |
可选 | 定义一个自定义主题文件扩展名,该扩展名不是 /\.*$/ 。Tinty寻找名为 base16-uwunicorn.* (例如)的主题,但当主题文件不是那种结构时,此选项可以帮助指定模式。 |
- | theme-file-extension= ".module.css" |
supported-systems |
数组<"base16"or"base24"> |
可选 | 定义项目支持哪些主题系统("base16" 和或 "base24")。 | ["base16"] |
supported-systems= ["base16", "base24"] |
关于 supported-systems
的说明
在[[items]]
表格中,supported-systems
键允许指定与不同主题系统的兼容性。可用的选项有"base16"
和"base24"
,分别表示支持Base16和Base24主题系统。如果模板仓库不支持某个系统,则不应将其包含在此属性中。
[[items]]
配置允许定义多个可主题组件,每个组件都有自己的配置集合,如上所述。以下是如何在您的config.toml
中定义多个项目的方法。
完整配置示例
以下是一个完整的config.toml
示例,演示了如何配置多个项目以及全局设置。
# Global settings
shell = "zsh -c '{}'"
default-scheme = "base16-mocha"
# Item configurations
[[items]]
name = "vim"
path = "https://github.com/tinted-theming/base16-shell"
themes-dir = "scripts"
hook = "source %f"
[[items]]
name = "vim"
path = "https://github.com/tinted-theming/base16-vim"
themes-dir = "colors"
hook = "source ~/.vimrc"
supported-systems = ["base16"]
[[items]]
name = "tmux"
path = "~/path/path/to/base16-tmux"
themes-dir = "colors"
hook = "tmux source-file ~/.tmux.conf"
supported-systems = ["base16"]
使用fzf选择并应用方案
注意:需要fzf
tinty apply $(tinty list | fzf)
从Flavours迁移
Flavours是一个用Rust编写的优秀的base16管理器,Tinty从中汲取了许多灵感。由于Flavours不再积极维护,所以我继续构建和发展Tinty。
Tinty不包括base16构建器(Flavours有),因此Tinty从模板目录复制主题文件而不是生成它们。由于Tinty不包括构建器,因此基于图像颜色生成方案的功能不包括在内。
如果您正在寻找base16或base24构建器,请查看builder-go。
CLI映射
flavours apply mocha
->tinty apply base16-mocha
flavours info mocha
->tinty info base16-mocha
flavours current
->tinty current
flavours update
->tinty install
config.toml映射
Flavours
# ~/.config/flavours/config.toml
[[item]]
template = "alacritty"
file = "~/.config/alacritty/colors.toml"
[[items]]
file = "~/.config/waybar/colors.css"
template = "waybar"
rewrite = true
[[items]]
file = "~/.config/sway/config"
template = "sway"
subtemplate = "colors"
hook = "swaymsg reload"
light = false
Tinty
# ~/.config/tinted-theming/tinty/config.toml
[[items]]
path = "https://github.com/aarowill/base16-alacritty"
name = "base16-alacritty"
themes-dir = "colors"
hook = "cp -f %f ~/.config/alacritty/colors.toml"
[[items]]
path = "https://github.com/tinted-theming/base16-waybar"
name = "base16-waybar"
themes-dir = "colors"
hook = "cp -f %f ~/.config/waybar/colors.css"
[[items]]
path = "https://github.com/rkubosz/base16-sway"
name = "base16-sway"
themes-dir = "themes"
hook = "cp -f %f ~/.config/sway/config.d/theme && swaymsg reload"
path
:在Tinty的config.toml
中提供仓库的路径。在Flavours中,此路径是通过template
属性确定的。themes-dir
:这是在path
提供的仓库中主题所在的目录。name
:用于设置主题文件名的唯一名称。hook
:此属性也存在于Flavours中,但Tinty将一部分工作从Rust代码库转移到此钩子。%f
是一个模板变量,它转换为与base16-alacritty相关的主题文件。因此,钩子会复制选定的主题并替换~/.config/alacritty/colors.toml
。
调试 Tinty 问题
使用相关的标志,例如tinty config
,可以很有用,例如--config-path
和--data-dir-path
,当尝试调试Tinty的问题时。这些命令可以帮助确保应用了预期的配置文件,并且Tinty正在使用预期的数据目录。
贡献
欢迎贡献。有关更多信息,请查看CONTRIBUTING.md。
许可证
与大多数其他Tinted Theming项目一样,Tinty遵循MIT许可证。有关更多信息,请查看LICENSE文档。
第三方许可证
该项目包括受MPL-2.0、BSD-2-Clause和BSD-3-Clause许可证授权的第三方代码。有关详细信息,请参阅[THIRD_PARTY_LICENSES]文件。
依赖项
~12–24MB
~323K SLoC