#base-16 #themes #shell #text-editors #tinted-theming

程序 tinty

使用一条命令即可更改您的终端、文本编辑器以及其他任何软件的主题!

17 个重大版本

0.18.0 2024年7月12日
0.16.0 2024年7月1日
0.11.0 2024年3月11日

#33命令行工具

35 每月下载量

MIT 许可证

310KB
2K SLoC

Rust 1.5K SLoC // 0.0% comments BASH 497 SLoC Zsh 287 SLoC Handlebars 17 SLoC

Tinty - 一个用 Rust 编写的 Tinted 主题 CLI 工具 🦀

Matrix Chat Crates.io Tests LICENSE

Tinty mascot

使用一条命令即可更改您的终端、文本编辑器以及其他任何软件的主题。立即在250多个主题之间切换!

Tinty 是一个 Base16 和 Base24 主题管理器,适用于所有 Tinted 主题项目,包括任何遵循 Base16 构建规范的第三方模板仓库。

要了解更多关于 Tinted 主题和 Base16 规范的信息,请查看我们的 主页仓库,并查看 Tinty 支持的主题,请查看我们的 Base16 画廊

目录

工作原理

在核心上,Tinty 通过利用 Base16 和 Base24 模板主题的力量,旨在通过简化不同工具和环境中主题化的过程。以下是 Tinty 的工作原理的详细介绍

主题应用流程

当您设置 Tinty 并应用一个主题时,Tinty 会执行多个步骤以确保所选主题无缝集成到您指定的应用程序中

  1. 配置加载:Tinty 首先读取您的 config.toml 文件,以了解您的设置和您定义的特定主题组件([[items]])。此配置决定了从用于执行钩子的shell到应用的主题和模板的所有内容。

  2. 主题仓库管理:对于配置中的每个项目,Tinty会检查必要的主题模板仓库是否已经克隆到您的本地机器。如果没有,它将仓库克隆到~/.local/share/tinted-theming/tinty,确保您始终可以轻松访问最新的主题。

  3. 主题复制:设置好仓库后,Tinty会根据您选择的方案从每个模板仓库复制相关的主题文件。这一步将所有必要的模板主题文件集中在一起。

  4. 执行的钩子:所有主题文件准备就绪后,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命名。支持 bashelvishfishpowershellzsh 生成 tinty-补全 bash
生成方案 根据提供的图像生成一个包含推断颜色的 yaml 方案文件。 <image_path>:图像的路径。可以是 <outpath>(打印到标准输出的值)或 --save 保存以在 tinty 中使用 生成 tinty-补全 bash

某些子命令支持额外的标志和选项来修改其行为

标志/选项 描述 适用的子命令 默认值 示例用法
--config -c 指定自定义配置文件路径。 所有 如果没有提供,tinty 会查找位于 $XDG_CONFIG_HOME/tinted-theming/tinty/config.tomlconfig.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 --helptinty 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",分别表示支持Base16Base24主题系统。如果模板仓库不支持某个系统,则不应将其包含在此属性中。

[[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