Zellij 主题设置与 YAML 配置迁移

Zellij 提供了丰富的主题系统,从内置的数十种配色方案到完全自定义的颜色配置。同时,Zellij 经历了从 YAML 到 KDL 的配置格式迁移。本文将介绍主题设置方法、明暗主题切换、CLI 配置选项,以及从旧版 YAML 配置迁移到 KDL 格式的完整指南。

一、内置主题

Zellij 内置了大量流行配色方案,你只需在 config.kdl 中指定主题名称即可启用:

// ~/.config/zellij/config.kdl
theme "dracula"

以下是 Zellij 内置的主要主题列表:

主题名称 风格
default Zellij 默认配色
dracula 经典暗色主题,紫色调
solarized-dark Solarized 暗色版本
solarized-light Solarized 亮色版本
gruvbox / gruvbox-dark 暖色调复古暗色主题
nord 北欧风冷色调暗色主题
catppuccin-latte Catppuccin 亮色版本
catppuccin-frappe Catppuccin 中间色调
catppuccin-macchiato Catppuccin 较深色调
catppuccin-mocha Catppuccin 最深暗色版本
tokyo-night / tokyo-night-dark Tokyo Night 暗色主题
tokyo-night-light Tokyo Night 亮色版本
tokyo-night-storm Tokyo Night 风暴变体
everforest 森林绿自然色调暗色主题
one-dark One Dark 配色方案
rose-pine Rose Pine 主版本
rose-pine-dawn Rose Pine 晨曦亮色版本
rose-pine-moon Rose Pine 月光变体

以上只是部分主题,Zellij 还包含更多配色方案。你可以在 Zellij 官方仓库的 themes 目录中查看完整列表。

二、自定义主题

如果内置主题不能满足你的需求,Zellij 允许你创建完全自定义的配色方案。

在配置文件中定义

config.kdlthemes 块中定义自定义主题:

// ~/.config/zellij/config.kdl
themes {
    my-theme {
        fg "#c0caf5"
        bg "#1a1b26"
        black "#15161e"
        red "#f7768e"
        green "#9ece6a"
        yellow "#e0af68"
        blue "#7aa2f7"
        magenta "#bb9af7"
        cyan "#7dcfff"
        white "#a9b1d6"
        orange "#ff9e64"
    }
}

theme "my-theme"

UI 组件颜色

除了基本的 16 色外,你还可以自定义 Zellij UI 组件的颜色:

themes {
    my-theme {
        // ...基本颜色...

        // UI 组件颜色
        text_unselected "#c0caf5"
        ribbon_selected "#1a1b26" "bold"
        ribbon_unselected "#565f89"
        tab_active_background "#1a1b26"
        tab_inactive_background "#15161e"
    }
}

可自定义的 UI 组件包括标签栏、状态栏、面板边框等几乎所有可见元素的颜色。

主题文件目录

除了在主配置文件中定义主题,你还可以将主题保存为独立的文件,放在主题目录中:

~/.config/zellij/themes/my-theme.kdl

每个主题文件就是一个 themes 块中的主题定义内容。这种方式便于管理和分享主题。

三、明暗主题切换

Zellij 支持根据系统偏好自动切换明暗主题,也支持手动切换。

配置自动切换

config.kdl 中分别指定暗色和亮色主题:

theme_dark "dracula"
theme_light "solarized-light"

当使用 theme_darktheme_light 时,不要同时使用 theme 选项,否则会冲突。

运行时手动切换

Zellij 提供了三个操作来在运行时切换主题:

操作 说明
SetDarkTheme 切换到暗色主题
SetLightTheme 切换到亮色主题
ToggleTheme 在明暗主题之间切换

你可以将这些操作绑定到快捷键上:

keybinds {
    shared {
        bind "F12" { ToggleTheme; }
    }
}

这样按 F12 就可以在暗色和亮色主题之间快速切换,非常方便。

四、CLI 配置

除了配置文件,许多 Zellij 选项也可以通过命令行参数设置,这在临时调试或脚本场景中非常有用:

# 指定主题
zellij options --theme dracula

# 指定默认 shell
zellij options --default-shell /bin/fish

# 启用/禁用鼠标模式
zellij options --mouse-mode true

# 设置默认布局
zellij options --default-layout compact

# 设置默认模式
zellij options --default-mode locked

# 禁用会话序列化
zellij options --session-serialization false

生成 Shell 补全

Zellij 可以为常见的 Shell 生成自动补全脚本,提升命令行使用体验:

# Bash
zellij setup --generate-completion bash > ~/.local/share/bash-completion/completions/zellij

# Zsh
zellij setup --generate-completion zsh > ~/.zfunc/_zellij

# Fish
zellij setup --generate-completion fish > ~/.config/fish/completions/zellij.fish

生成后重新加载 shell 配置即可使用 Tab 键自动补全 Zellij 的命令和选项。

五、从 YAML 迁移到 KDL

Zellij 早期版本使用 YAML 作为配置格式,后来迁移到了 KDL。如果你有旧版的 YAML 配置,需要进行迁移。

自动迁移

Zellij 提供了自动迁移命令,可以将 YAML 配置直接转换为 KDL 格式:

zellij setup --migrate-config < /path/to/old-config.yaml

该命令会读取 YAML 配置并输出等效的 KDL 配置到标准输出。你可以将输出重定向到新配置文件:

zellij setup --migrate-config < ~/.config/zellij/old-config.yaml > ~/.config/zellij/config.kdl

手动迁移

如果自动迁移不完全满足需求,你也可以手动转换。以下是两种格式的对比:

特性 YAML 格式 KDL 格式
注释 # 注释 // 注释
键值对 key: value key "value"
布尔值 mouse_mode: true mouse_mode true
嵌套块 缩进层级 name { ... }
列表项 - item 多行同名节点或数组参数

布局迁移示例

布局文件的迁移遵循相同的格式转换规则。以下是对比示例:

旧版 YAML 布局:

# layout.yaml
session_name: dev
tabs:
  - name: editor
    panes:
      - vim
      - npm run watch
  - name: server
    panes:
      - npm run dev

新版 KDL 布局:

// layout.kdl
layout {
    tab name="editor" {
        pane {
            command "vim"
        }
        pane {
            command "npm"
            args "run" "watch"
        }
    }
    tab name="server" {
        pane {
            command "npm"
            args "run" "dev"
        }
    }
}

KDL 格式虽然比 YAML 稍显冗长,但它的结构更加明确,避免了 YAML 的缩进敏感性问题,且对嵌套层级有更清晰的表达。迁移完成后,建议使用 zellij setup --check 验证新配置文件的语法是否正确。

返回博客列表