The current wire protocol version is 1.
logo_animationinfo_providereffectconfig_provider(extension protocol)
{
"version": 1,
"kind": "logo_animation",
"lines": ["line 1", "line 2"],
"frames": [["frame 1"], ["frame 2"]],
"args": {
"fps": 12,
"duration_ms": 1200,
"loop": true,
"style": "wave"
}
}{
"frames": [
{
"delay_ms": 80,
"lines": ["rendered line 1", "rendered line 2"]
}
]
}{
"version": 1,
"kind": "info_provider",
"args": {
"username": "example",
"max_lines": 5
}
}{
"lines": [
"line one",
"line two"
]
}
The core renders the info lines and sends them to an effect binary
(xfetch-effect-<name>); the effect returns per-frame states.
{
"version": 1,
"kind": "effect",
"lines": ["\u001b[32m os: Arch \u001b[0m", "\u001b[32m cpu: 3.2 GHz \u001b[0m"],
"args": {
"style": "glitch",
"duration_ms": 800,
"fps": 30
}
}{
"frames": [
{ "delay_ms": 33, "lines": ["@peo@f8i*xo&23#", "1qnx4w9@&k6c"] },
{ "delay_ms": 33, "lines": ["os: Arch", "cpu: 3.2 GHz"] }
]
}The last frame should reach the final content. Effects must keep ANSI escape sequences intact while transforming the lines.
{
"version": 1,
"kind": "config_provider",
"config": { "show_colors": true, "modules": ["os", "cpu"] },
"args": { "strategy": "random" }
}{
"config": { "show_colors": false, "modules": ["cpu", "memory"] }
}Protocol changes should be introduced in this repository first and then adopted by the core and official plugin repositories together.