8 个版本
0.3.0 | 2024年7月31日 |
---|---|
0.2.5 | 2024年3月23日 |
0.2.3 | 2024年1月17日 |
0.1.0 | 2023年9月29日 |
17 在文本编辑器 中
每月143次下载
9MB
10K SLoC
Neophyte
Neophyte 是使用 WebGPU 渲染的 Neovim GUI,用 Rust 编写。它在默认基于终端的 UI 上提供了一些优点
- 通过 Swash 进行文本形状和光栅化,提供高质量的字体渲染功能,如连字、回退字体和表情符号
- 平滑滚动
- 光标动画
- 像素级窗口定位
https://github.com/tim-harding/neophyte/assets/13814470/7007c562-efaf-4e0e-98a3-cc71954183d0
安装
Neophyte 目前在 MacOS 和 Linux 上运行最佳。它还需要兼容的图形驱动程序,即 Vulkan、Metal 或 DX12。Linux 目标需要 fontconfig
库。从 Crates.io 或 Git 安装需要 Rust 工具链。
Crates.io
cargo install neophyte
Git
git clone https://github.com/tim-harding/neophyte
cd neophyte
cargo build --release
二进制文件将在 target/release/neophyte
中。
版本
预构建的二进制文件可在 版本 中找到。
软件包
AUR
neophyte
从 Crates.io 上托管的源代码构建。
yay -S neophyte
neophyte-git
从 GitHub 上的最新标记版本构建。
yay -S neophyte-git
neophyte-bin
从 GitHub 安装最新的二进制版本。
yay -S neophyte-bin
光标动画
为了获得最佳效果,除非您使用 Noice 或选择不启用光标动画,否则请使用 Neophyte 的 --messages
标志。此选项将命令行和消息渲染委托给 Neophyte,这可以解决搜索导航期间或响应消息时光标在屏幕上跳转的问题。
配置
Neophyte 可以使用 Lua 脚本化。API 为 LuaLS 类型注解,以提高可发现性。
-- lazy.nvim example:
{
'tim-harding/neophyte',
tag = '0.3.0',
event = 'VeryLazy',
opts = {
-- Same as neophyte.setup({ ... })
},
}
-- API usage example:
local neophyte = require('neophyte')
neophyte.setup({
fonts = {
{
name = 'Cascadia Code PL',
features = {
{
name = 'calt',
value = 1,
},
-- Shorthand to set a feature to 1
'ss01',
'ss02',
},
},
-- Fallback fonts
{
name = 'Monaspace Argon Var',
-- Variable font axes
variations = {
{
name = 'slnt',
value = -11,
},
},
},
-- Shorthand for no features or variations
'Symbols Nerd Font',
'Noto Color Emoji',
},
font_size = {
kind = 'width', -- 'width' | 'height'
size = 10,
},
-- Multipliers of the base animation speed.
-- To disable animations, set these to large values like 1000.
cursor_speed = 2,
scroll_speed = 2,
-- Increase or decrease the distance from the baseline for underlines.
underline_offset = 1,
-- For transparent window effects, use this to set the default background color.
-- This is because most colorschemes in transparent mode unset the background,
-- which normally defaults to the terminal background, but we don't have that here.
-- You must also pass --transparent as a command-line argument to see the effect.
-- Channel values are in the range 0-255.
bg_override = {
r = 48,
g = 52,
b = 70,
a = 128,
},
})
-- Alternatively, the guifont option is supported:
vim.opt.guifont = 'Cascadia Code PL:w10, Symbols Nerd Font, Noto Color Emoji'
-- There are also freestanding functions to set these options as desired:
-- Increase font size
vim.keymap.set('n', '<c-+>', function()
neophyte.set_font_width(neophyte.get_font_width() + 1)
end)
-- Decrease font size
vim.keymap.set('n', '<c-->', function()
neophyte.set_font_width(neophyte.get_font_width() - 1)
end)
-- Use cmd-ctrl-f to toggle fullsreen on MacOS
if this_os:find('Darwin') then
vim.keymap.set('n', '<DC-f>', function()
neophyte.set_fullscreen(not neophyte.get_fullscreen())
end)
end
-- Neophyte can also record frames to a PNG sequence.
-- You can convert to a video with ffmpeg:
--
-- ffmpeg -framerate 60 -pattern_type glob -i '/my/frames/location/*.png'
-- -pix_fmt yuv420p -c:v libx264 -vf
-- "colorspace=all=bt709:iprimaries=bt709:itrc=srgb:ispace=bt709:range=tv:irange=pc"
-- -color_range 1 -colorspace 1 -color_primaries 1 -crf 23 -y /my/output/video.mp4
neophyte.start_render('/directory/to/output/frames/')
neophyte.end_render()
依赖项
14–50MB ~
~846K SLoC