{"id":14981762,"url":"https://github.com/tim-harding/neophyte","last_synced_at":"2025-04-08T18:20:06.664Z","repository":{"id":184900323,"uuid":"671716741","full_name":"tim-harding/neophyte","owner":"tim-harding","description":"A WebGPU rendered Neovim GUI","archived":false,"fork":false,"pushed_at":"2025-03-02T01:13:53.000Z","size":13009,"stargazers_count":152,"open_issues_count":8,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-01T16:16:38.105Z","etag":null,"topics":["neovim","rust","webgpu","wgpu","wgpu-rs"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tim-harding.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-28T01:27:17.000Z","updated_at":"2025-04-01T01:54:36.000Z","dependencies_parsed_at":"2023-12-28T19:39:30.458Z","dependency_job_id":"714e8bf3-8dfb-4d81-a76a-b497bb1bd5f6","html_url":"https://github.com/tim-harding/neophyte","commit_stats":{"total_commits":756,"total_committers":3,"mean_commits":252.0,"dds":0.06613756613756616,"last_synced_commit":"0bd1740269254af01560182590f84723d5fd1f77"},"previous_names":["tim-harding/anvimator"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tim-harding%2Fneophyte","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tim-harding%2Fneophyte/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tim-harding%2Fneophyte/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tim-harding%2Fneophyte/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tim-harding","download_url":"https://codeload.github.com/tim-harding/neophyte/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247898519,"owners_count":21014722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["neovim","rust","webgpu","wgpu","wgpu-rs"],"created_at":"2024-09-24T14:04:12.709Z","updated_at":"2025-04-08T18:20:06.640Z","avatar_url":"https://github.com/tim-harding.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neophyte\n\n[![Crates.io Version](https://img.shields.io/crates/v/neophyte)](https://crates.io/crates/neophyte)\n\nNeophyte is a Neovim GUI rendered with WebGPU and written in Rust.\nIt offers several niceties over the default terminal-based UI:\n\n- Text shaping and rasterization by [Swash](https://github.com/dfrg/swash),\n  providing high-quality font rendering features such as ligatures, fallback\n  fonts, and emoji\n- Smooth scrolling\n- Cursor animations\n- Pixel-level window positioning\n\nhttps://github.com/tim-harding/neophyte/assets/13814470/7007c562-efaf-4e0e-98a3-cc71954183d0\n\n## Installation\n\nNeophyte currently works best on MacOS and Linux. It also requires a compatible\ngraphics driver, namely Vulkan, Metal, or DX12. Linux targets require the\n`fontconfig` library. Installing from Crates.io or Git requires the [Rust\ntoolchain](https://www.rust-lang.org/tools/install).\n\n### Crates.io\n\n```bash\ncargo install neophyte\n```\n\n### Git\n\n```bash\ngit clone https://github.com/tim-harding/neophyte\ncd neophyte\ncargo build --release\n```\n\nThe binary will be `target/release/neophyte`.\n\n### Releases\n\nPrebuilt binaries are available in the\n[releases](https://github.com/tim-harding/neophyte/releases/latest).\n\n### Packages\n\n#### AUR\n\n##### `neophyte`\n\nBuilds from source hosted on Crates.io.\n\n```bash\nyay -S neophyte\n```\n\n##### `neophyte-git`\n\nBuilds from the latest tagged release on GitHub.\n\n```bash\nyay -S neophyte-git\n```\n\n##### `neophyte-bin`\n\nInstalls the latest binary release artifacts from GitHub.\n\n```bash\nyay -S neophyte-bin\n```\n\n## Cursor animation\n\nFor best results, run Neophyte with the `--messages` flag unless you are using\n[Noice](https://github.com/folke/noice.nvim) or choose not to enable cursor\nanimation. This option delegates commandline and\nmessage rendering to Neophyte, which fixes an issue with the cursor jumping\naround the screen during search naviation or in response to messages.\n\n## Configuration\n\nNeophyte is scriptable with Lua. The API is LuaLS type-annotated for\ndiscoverability.\n\n```lua\n-- lazy.nvim example:\n{\n  'tim-harding/neophyte',\n  tag = '0.3.0',\n  event = 'VeryLazy',\n  opts = {\n    -- Same as neophyte.setup({ ... })\n  },\n}\n\n-- API usage example:\nlocal neophyte = require('neophyte')\nneophyte.setup({\n  fonts = {\n    {\n      name = 'Cascadia Code PL',\n      features = {\n        {\n          name = 'calt',\n          value = 1,\n        },\n        -- Shorthand to set a feature to 1\n        'ss01',\n        'ss02',\n      },\n    },\n    -- Fallback fonts\n    {\n      name = 'Monaspace Argon Var',\n      -- Variable font axes\n      variations = {\n        {\n          name = 'slnt',\n          value = -11,\n        },\n      },\n    },\n    -- Shorthand for no features or variations\n    'Symbols Nerd Font',\n    'Noto Color Emoji',\n  },\n  font_size = {\n    kind = 'width', -- 'width' | 'height'\n    size = 10,\n  },\n  -- Multipliers of the base animation speed.\n  -- To disable animations, set these to large values like 1000.\n  cursor_speed = 2,\n  scroll_speed = 2,\n  -- Increase or decrease the distance from the baseline for underlines.\n  underline_offset = 1,\n  -- For transparent window effects, use this to set the default background color.\n  -- This is because most colorschemes in transparent mode unset the background,\n  -- which normally defaults to the terminal background, but we don't have that here.\n  -- You must also pass --transparent as a command-line argument to see the effect.\n  -- Channel values are in the range 0-255.\n  bg_override = {\n    r = 48,\n    g = 52,\n    b = 70,\n    a = 128,\n  },\n})\n\n-- Alternatively, the guifont option is supported:\nvim.opt.guifont = 'Cascadia Code PL:w10, Symbols Nerd Font, Noto Color Emoji'\n\n-- There are also freestanding functions to set these options as desired:\n\n-- Increase font size\nvim.keymap.set('n', '\u003cc-+\u003e', function()\n  neophyte.set_font_width(neophyte.get_font_width() + 1)\nend)\n\n-- Decrease font size\nvim.keymap.set('n', '\u003cc--\u003e', function()\n  neophyte.set_font_width(neophyte.get_font_width() - 1)\nend)\n\n-- Use cmd-ctrl-f to toggle fullsreen on MacOS\nif this_os:find('Darwin') then\n  vim.keymap.set('n', '\u003cDC-f\u003e', function()\n    neophyte.set_fullscreen(not neophyte.get_fullscreen())\n  end)\nend\n\n-- Neophyte can also record frames to a PNG sequence.\n-- You can convert to a video with ffmpeg:\n--\n-- ffmpeg -framerate 60 -pattern_type glob -i '/my/frames/location/*.png'\n-- -pix_fmt yuv420p -c:v libx264 -vf\n-- \"colorspace=all=bt709:iprimaries=bt709:itrc=srgb:ispace=bt709:range=tv:irange=pc\"\n-- -color_range 1 -colorspace 1 -color_primaries 1 -crf 23 -y /my/output/video.mp4\nneophyte.start_render('/directory/to/output/frames/')\nneophyte.end_render()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftim-harding%2Fneophyte","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftim-harding%2Fneophyte","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftim-harding%2Fneophyte/lists"}