#color-scheme #palette #applications #themes #generate #plugin #extract

app luthien

一个正在开发中的工具,用于生成和应用配色方案

8 个版本 (5 个破坏性更新)

0.6.0 2021年8月27日
0.5.0 2021年8月19日
0.4.1 2021年6月30日
0.3.0 2021年6月10日
0.1.0 2021年5月18日

#813图像

每月22次下载

MIT 许可证

52KB
1.5K SLoC

鲁西恩

Crates.io GitHub Stars GitHub Workflow Status GitHub issues License

鲁西恩是一个正在开发中的工具,它可以为您的系统生成并应用配色方案。它致力于创建美观的配色方案,并且易于扩展。

功能

  • 鲁西恩生成适合在任何应用程序中使用的“正常”配色方案,包括所有色调的颜色。许多调色板生成工具生成的调色板颜色大多相同;鲁西恩的情况并非如此。
  • 高度可配置的插件系统,使您轻松将主题应用于任何应用程序。
  • 模板、终端等预制的插件库。

安装

您可以使用Cargo通过Crates.io安装鲁西恩

cargo install luthien

用法

您可以使用extract子命令以及image提取器从图像中提取主题,如下所示

luthien extract image path/to/image.jpg

您应该得到类似以下输出的内容

 INFO  luthien::extraction > Cache hit; using cached theme...
 INFO  luthien             > Theme Preview:
...
 INFO  luthien             > Applying theme...

注意:您可能认出这是Rust的log框架的输出;确实,如果您设置RUST_LOG=trace,您将获得更详细的输出。

现在,在这个阶段,您可能已经注意到没有任何操作发生。这是因为鲁西恩只是生成主题,并不执行其他操作。如果您想获取主题,可以使用--output标志(或简写为-o)。如果我们执行luthien -o theme.json extract image path/to/image.jpg,则theme.json将类似于以下内容

{
  "wallpaper": "path/to/image.jpg",
  "colors": {
    "palette": {
      "black": { "red": 0.0, "green": 0.0, "blue": 0.0 },
      "red": { "red": 1.0, "green": 0.0, "blue": 0.0 },
      "green": { "red": 0.0, "green": 1.0, "blue": 0.0 },
      "yellow": { "red": 1.0, "green": 1.0, "blue": 0.0 },
      "blue": { "red": 0.0, "green": 0.0, "blue": 1.0 },
      "purple": { "red": 1.0, "green": 0.0, "blue": 1.0 },
      "cyan": { "red": 0.0, "green": 1.0, "blue": 1.0 },
      "white": { "red": 1.0, "green": 1.0, "blue": 1.0 }
    },
    "accents": [
      { "red": 1.0, "green": 0.0, "blue": 0.0 },
      { "red": 0.0, "green": 1.0, "blue": 0.0 },
      { "red": 1.0, "green": 1.0, "blue": 0.0 },
      { "red": 0.0, "green": 0.0, "blue": 1.0 },
      { "red": 1.0, "green": 0.0, "blue": 1.0 },
      { "red": 0.0, "green": 1.0, "blue": 1.0 }
    ],
    "foreground": { "red": 1.0, "green": 1.0, "blue": 1.0 },
    "background": { "red": 0.0, "green": 0.0, "blue": 0.0 }
  }
}

我们可以看到壁纸与一组颜色一起指定。代码colors.palette包含了带有名称的颜色;colors.accents是一个按照“重要性”降序排列的颜色列表(第一个强调色应该比最后一个更突出);而colors.foregroundcolors.background则不言而喻。

输出标志使得shell脚本相对简单。你可以这样做-o /dev/stdout并将输出通过JSON解析器如jq和到你的选择的应用程序。

插件

Shell脚本很棒,但大多数人会希望在每次运行之间保持大致相同的多重方式使用生成的主题。这就是插件的作用所在。

插件作为对象列表添加到Luthien配置文件中(在类Unix系统中,~/.config/luthien/config.toml)。例如,我们可以添加这样的插件

[[plugins]]
name = "echo"
executable = "/usr/bin/dd"
args = ["if=/dev/stdin", "of=/dev/stderr", "status=none"]

这将添加一个名为“echo”的插件,它执行dd并将插件输入复制到stderr,这是从luthien进程继承的,所以它会被回显给用户。你可以在这里阅读更多关于编写和使用插件的信息这里

在主题生成后,Luthien运行每个插件并将主题以及其他数据传递给它们。这使用户能够在主题化系统时自动化大量的手动工作。例如,你可以编写插件来

  • 为主题化你的桌面环境/窗口管理器。
  • 更新你的终端颜色。
  • 设置你的灯条颜色。

为了方便使用,一些官方插件可供使用

  • luthien-terminal:生成终端控制序列,将它们发送到打开的伪终端,并将它们保存到文件中,以便在打开新终端时读取。
  • luthien-templates:使用主题数据渲染Handlebars模板。
  • luthien-sass:将主题数据暴露给Sass模块并将它们编译为CSS。

依赖关系

~16–27MB
~375K SLoC