#color-scheme #base-16 #color #manager #config-file

bin+lib flavours

一个易于使用的 Base16 方案管理器/构建器,可以与任何工作流程集成

20 个版本

0.7.1 2023年5月2日
0.6.1 2022年10月22日
0.5.2 2021年10月29日
0.5.0 2021年6月28日
0.3.3 2020年11月19日

#1086 in 命令行工具

MIT 许可证

84KB
1.5K SLoC

flavours logo


Base16 的管理器/构建器。用 Rust🦀 编写。

Crates.io Build hydra status

Packaging status

在 NixOS/home-manager 中寻找类似工具?请查看 nix-colors

是什么

这是一个 CLI 程序,可以构建和管理 Base16 方案和模板。

Base16 规范包括方案(带有 16 种颜色)和模板。您可能会为大多数应用程序找到模板,但您可以轻松地为任何支持任何类型颜色自定义的应用程序创建一个。

一旦配置文件设置完毕,您只需一个命令即可为主题整个桌面。不再需要手动更改主题。为什么只有一个颜色,如果有所有颜色呢?

以下是实际使用情况(sway, waybar, alacritty): 用法

如何

安装

如果您想为您的首选发行版打包 flavours,请告知。

Cargo

只需安装 cargo 并运行 cargo install --locked flavours(别忘了将 ~/.cargo/bin 添加到您的 PATH 中)。

安装后

安装后,您可能需要使用flavours update all来从Base16仓库获取所有已发布的方案和模板。默认情况下,这些文件位于Linux上的~/.local/share/flavours,以及macOS上的~/Library/Application Support/flavours。这可以通过-d/--directory标志或FLAVOURS_DATA_DIRECTORY环境变量来更改。

如果您想更改方案/模板或创建自己的模板,请参阅自定义模板和方案

使用方法

您可以使用flavours和Base16模板,自动将方案注入任何支持颜色代码的应用程序配置文件。

Dave Snider制作了一部关于flavours的精彩3集系列(以及主题的一般知识)。如果您喜欢观看指南视频,我强烈建议您看一下。

设置

为每个想要主题化的应用程序选择一个模板(或创建自己的模板)。

将应用程序添加到flavours配置中,位于Linux和macOS上的~/.config/flavours/config.toml。这可以通过-c/--config标志或FLAVOURS_CONFIG_FILE环境变量来更改。

关于flavours配置文件config.toml

  • 可选地,设置一个通过它执行钩子命令的shell。默认为sh -c '{}'
  • 为每个应用程序创建一个[[items]]部分。每个部分可以有以下条目
    • 要写入的file(必需)。
    • 一个template(必需)。
    • 一个subtemplate。您可以使用与方案名称相同的字面值{scheme}来选择同名的子模板,如果您的子模板依赖于方案,则很有用。默认为default(如果找不到以所选方案命名的子模板也是如此)。
    • 要执行的hook。默认为无。
    • 指定为light,表示快速执行的低成本更改。默认为true。使用flavours apply --light将跳过带有light=false标记的钩子。
    • 是否要rewrite整个文件而不是替换行。默认为false,但建议对于可以通过导入或其他方式通过整个文件定义颜色的应用程序,将此设置为true。
    • 如果rewrite=false,指定用于替换文本的startend行。这对于注释不以#开始的配置文件很有用。默认为# Start flavours# End flavours(不区分大小写)。

以下是一个示例

# Commands go through bash
shell = "bash -c '{}'"

# Sway supports the default '#' comments, so it can be ommited
# 'rewrite' is also ommited, as it defaults to false
[[items]]
file = "~/.config/sway/config"
template = "sway"
subtemplate = "colors"
hook = "swaymsg reload"
# Swaymsg reload temporarily freezes input, so it's marked as not light
light = false

# This one uses waybar 'default' subtemplate, so it can be ommited
[[items]]
file = "~/.config/waybar/colors.css"
template = "waybar"
# Waybar uses a separate color file, so we can safely rewrite the whole file
rewrite = true

[[items]]
file = "~/.config/beautifuldiscord/style.css"
template = "styles"
subtemplate = "css-variables"
# What if the configuration doesn't support '#' comments? Just change them!
start= "/* Start flavours */"
end = "/* End flavours */"

对于设置了 rewrite=false(或省略)的文件,在应用程序的配置文件中通过放置一个开始结束注释来告诉flavours替换哪些行。默认的开始结束注释是# Start flavours# End flavours

以下是从我的dots中提取的几个配置文件作为参考。

现在,你已经准备好应用配色方案了。

自定义模板和方案

为了帮助您管理自定义模板/方案或对现有方案的修改,flavours也会在用户目录下的$XDG_CONFIG_HOME/flavours目录(通常是~/.config/flavours)中查找模板/方案。文件夹结构应与~/.local/share/flavours/base16/中的结构相同。

示例

  • 自定义方案 myscheme$XDG_CONFIG_HOME/flavours/schemes/myscheme/myscheme.yaml
  • 自定义模板 mysoftware/mytemplate$XDG_CONFIG_HOME/flavours/templates/mysoftware/templates/mytemplate.mustache

注意,在发生冲突的情况下,$XDG_CONFIG_HOME/flavours中的方案/模板优先于${FLAVOURS_DATA_DIRECTORY:-~/.local/share/flavours}中的方案/模板。

应用

flavours apply是您可能经常使用的命令,因此它被构建得尽可能有用。

语法是flavours apply [PATTERN],其中PATTERN可以是方案名称、多个方案名称、glob表达式(例如*light),也可以省略。如果指定或匹配多个方案,flavours将随机选择一个。例如,flavours apply *light将随机选择以"light"结尾的方案并应用它。

例如,您可以

  • 指定一个方案:flavours apply pasque
  • 指定多个方案:flavours apply pasque paraiso atlas
  • 使用glob:flavours apply "gruvbox*"
  • 省略模式:flavours apply(与运行flavours apply "*"相同)

其他命令

其他命令包括

  • flavours current查看您最后应用的方案
  • flavours list [PATTERN]列出所有可用的方案
  • flavours info [PATTERN]显示有关某些方案的信息(包括真彩色输出)
  • flavours build <path_to_scheme> <path_to_template>(见下文构建
  • flavours generate <dark|light> path/to/image/file(见下文生成

构建

您还可以将flavours用作简单的Base16构建器。您可以通过使用flavours info theme_name | head -1 | cut -d '@' -f2轻松地获取方案路径)。这对于自动化静态样式和其他一切您能想到的东西非常有用(我在我的个人网站上使用它)。

生成

最后,我们有flavours generate,可以根据壁纸等图像生成方案。默认情况下,方案将保存为slug generated,但您可以使用-s--slug更改它,或者使用--stdout将其输出到标准输出。

为什么

为什么使用这个而不是其他Base16管理器,甚至pywal呢?

虽然这些项目很棒,确实适合某些人的工作流程,但它们并不完全适合我。

我决定做自己的项目,因为我想要一个简单的CLI程序,它可以轻松地与rofi、polybar以及我工作流程中的其他一切集成。主要功能是在所有应用程序上快速轻松地使用精心挑选的方案列表。它也比任何其他管理器都要客观地快。

何时

所有功能都已实现!我目前正在改进代码质量和稳定功能,但一切应该按预期工作。

感谢

依赖关系

~23MB
~221K SLoC