impove luks script

This commit is contained in:
2026-02-15 18:46:05 +01:00
parent 818054f1ab
commit ded9f4e809
3 changed files with 137 additions and 54 deletions
+16 -19
View File
@@ -24,9 +24,8 @@
- [快速检测](#快速检测)
- [显示效果](#显示效果)
- [性能测试](#性能测试)
- [KGP Unicode Placeholders](#kgp-unicode-placeholders)
- [特性](#特性)
- [使用](#使用)
- [Kitty 图像协议](#kitty-图像协议)
- [Unicode Placeholders](#unicode-placeholders)
- [实现](#实现)
- [默认 Shell](#默认-shell)
- [一些概念](#一些概念)
@@ -469,9 +468,9 @@ KGP 既支持直接传输 PNG 二进制数据, 也支持传输 24bit 与 32bit
是的, 限制宽度并不会减少控制序列的大小, 反而会因为 `,width=100` 元数据增加 10 字节.
### KGP Unicode Placeholders
### Kitty 图像协议
#### 特性
#### Unicode Placeholders
Unicode Placeholders 是 Kitty 图像协议中处理如何放置图像的方法之一, 它允许使用占位符嵌入图像, 这提供了一些有意思的特性:
@@ -487,15 +486,13 @@ Unicode Placeholders 是 Kitty 图像协议中处理如何放置图像的方法
需要注意的是, Unicode Placeholders 仅仅是 KGP 所涉及的一种放置方法, 并不是一种全新的协议或控制序列. 因此, 只有支持 KGP 的终端模拟器才可能支持 Unicode Placeholders, 但反过来说, 支持 KGP 的终端模拟器不一定支持 Unicode Placeholders.
#### 使用
该特性可通过 `kitty +kitten icat` 的 `--unicode-placeholders` 参数启用.
虽然这个特性很有趣, 但就目前而言真正实现它的终端模拟器寥寥无几, 在[前面的表格](#各终端支持情况)中只有 Kitty 和 Ghostty 位于此列, 其他终端模拟器即便支持 KGP, 也只会同时显示占位符和正常的图片, 效果非常诡异.
#### 实现
指编码端的实现. 如前文所说, Unicode Placeholders 是 KGP 的一个子功能, 因此实现 Unicode Placeholders 的同时也可以(或者说必须)实现 KGP 的基础部分. 以下摘取[前面](#性能测试)提到的 idog 的部分实现思路. 完整实现可见 [Uyanide/idog](https://github.com/Uyanide/idog).
指编码端的实现. 如前文所说, Unicode Placeholders 是 KGP 的一个子功能, 因此 KGP 的基础部分后也可以~~(顺便)~~实现 Unicode Placeholders. 以下摘取[前面](#性能测试)提到的 idog 的部分实现思路. 完整实现可见 [Uyanide/idog](https://github.com/Uyanide/idog).
- 构造 KGP 检测序列
可以大致分为四个部分:
@@ -505,7 +502,7 @@ Unicode Placeholders 是 Kitty 图像协议中处理如何放置图像的方法
- `t`: 通过临时文件传输像素数据, 传输完成后临时文件**会被终端模拟器删除**.
- `f`: 通过文件传输像素数据, 传输完成后不会删除.
- 检测是否支持特定图片数据格式
- 检测是否支持特定数据格式
- `24`: 24bit RGB 原始像素数据
- `32`: 32bit RGBA 原始像素数据
- `100`: PNG 二进制数据
@@ -532,16 +529,16 @@ Unicode Placeholders 是 Kitty 图像协议中处理如何放置图像的方法
- `payload` 包含了图片数据, 格式取决于 `t` 和 `f` 选项的值:
| Medium (`t`) | Format (`f`) | Payload |
| ------------ | ------------ | --------------------------------------------------- |
| `d` | `24` / `32` | 经过 Base64 编码和可选的 zlib 压缩的像素数据 |
| `d` | `100` | 经过 Base64 编码和可选的 zlib 压缩的 PNG 二进制数据 |
| `s` | `24` / `32` | 经过 Base64 编码的共享内存名称, 存储原始像素数据 |
| `s` | `100` | 经过 Base64 编码的共享内存名称, 存储 PNG 二进制数据 |
| `t` | `24` / `32` | 经过 Base64 编码的临时文件路径, 存储原始像素数据 |
| `t` | `100` | 经过 Base64 编码的临时文件路径, 存储 PNG 二进制数据 |
| `f` | `24` / `32` | 经过 Base64 编码的文件路径, 存储原始像素数据 |
| `f` | `100` | 经过 Base64 编码的文件路径, 存储 PNG 二进制数据 |
| Medium (`t`) | Format (`f`) | Payload |
| ------------ | ------------ | ---------------------------------------------- |
| `d` | `24` / `32` | Base64 编码和可选的 zlib 压缩的像素数据 |
| `d` | `100` | Base64 编码和可选的 zlib 压缩的 PNG 二进制数据 |
| `s` | `24` / `32` | Base64 编码的共享内存名称, 存储原始像素数据 |
| `s` | `100` | Base64 编码的共享内存名称, 存储 PNG 二进制数据 |
| `t` | `24` / `32` | Base64 编码的临时文件路径, 存储原始像素数据 |
| `t` | `100` | Base64 编码的临时文件路径, 存储 PNG 二进制数据 |
| `f` | `24` / `32` | Base64 编码的文件路径, 存储原始像素数据 |
| `f` | `100` | Base64 编码的文件路径, 存储 PNG 二进制数据 |
需要注意的是, **共享内存名称**不包含路径, 也不包含前缀的`/`. 例如某共享内存完整路径为 `/dev/shm/idog_12345678`, 则共享内存名称为 `idog_12345678`.