{"id":15287826,"url":"https://github.com/hismailbulut/neoray","last_synced_at":"2025-04-13T15:01:09.010Z","repository":{"id":41059212,"uuid":"362962156","full_name":"hismailbulut/Neoray","owner":"hismailbulut","description":"Simple and lightweight GUI client for Neovim","archived":false,"fork":false,"pushed_at":"2023-12-06T17:40:43.000Z","size":6385,"stargazers_count":150,"open_issues_count":7,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T05:51:14.018Z","etag":null,"topics":["glfw","glfw3","go","golang","neovim","opengl3","vim"],"latest_commit_sha":null,"homepage":"","language":"Go","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/hismailbulut.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2021-04-29T22:25:05.000Z","updated_at":"2025-03-09T00:59:31.000Z","dependencies_parsed_at":"2022-07-14T07:00:42.747Z","dependency_job_id":"f287c277-52b2-4857-a16d-533850a96197","html_url":"https://github.com/hismailbulut/Neoray","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hismailbulut%2FNeoray","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hismailbulut%2FNeoray/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hismailbulut%2FNeoray/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hismailbulut%2FNeoray/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hismailbulut","download_url":"https://codeload.github.com/hismailbulut/Neoray/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248732474,"owners_count":21152851,"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":["glfw","glfw3","go","golang","neovim","opengl3","vim"],"created_at":"2024-09-30T15:38:33.098Z","updated_at":"2025-04-13T15:01:08.948Z","avatar_url":"https://github.com/hismailbulut.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neoray\n\nNeoray is a simple and lightweight GUI client for Neovim. It's written in\nGo using GLFW and OpenGL bindings. Neoray is easy to use and binary size\nis small. Supports most of the Neovim features. Uses small amount of ram and\nleaves no footprints on your computer.\n\n![Screenshot](./assets/neoray-dark.png)\n\n## Installation\n\n### Binaries\nYou can download prebuilt binaries from [releases page](https://github.com/hismailbulut/Neoray/releases).\nIf you are using Linux you will need x11 and gtk3 runtime libraries to run the Neoray.\nWindows and MacOS binaries doesn't have any dependencies except Neovim.\n\nNOTE: Neoray needs at least 0.5.0 version of [Neovim](https://neovim.io/)\n\n### From source\nYou can install Neoray with `go install` command:\n\n```\ngo install github.com/hismailbulut/Neoray/cmd/neoray@latest\n```\n\nNOTE: To successfully build it on Linux with go you will need to have some\ndependencies. On Ubuntu, install following packages:\n\n```\nsudo apt install libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libgl1-mesa-dev build-essential libgtk-3-dev xorg-dev\n```\n\nFor other distros you need to install corresponding libraries.\n\n## Configuration\n\nNeoray doesn't need any additional configuration, but you can customize it in\nyour `init.vim`. All options can be set via NeoraySet command. Takes at least\ntwo arguments, first one is the name of the option and others are arguments.\n\nThe cursor is moving smoothly in Neoray and you can specify how long it's move\ntakes. Default is 0.1 (1.0 is one second) You can disable it by setting to 0.\n```vim\nNeoraySet CursorAnimTime 0.1\n```\n\nTransparency of the window background. Default is 1 means no transparency, and\n0 is fully transparent. Only background colors will be transparent, and\nstatusline, tabline and texts are fully opaque.\n```vim\nNeoraySet Transparency 0.95\n```\n\nThe target update time in one second. Like FPS but Neoray doesn't render screen\nin every frame. Default is 60.\n```vim\nNeoraySet TargetTPS 60\n```\n\nNeoray has a simple right click menu that gives you some abilities like\ncopying, cutting to system clipboard and pasting. It has a open file\nfunctionality that opens system file dialog. Menu text is same as the font and\nthe colors are from your color scheme. This makes it look and feel like\nterminal. You can disable it by setting this option to false. Default is true.\n```vim\nNeoraySet ContextMenu true\n```\n\nYou can add custom buttons to context menu. First give a name to your button\nand write your command. You must escape spaces in the command name. Every\ncommand adds a new button. My advice to you is don't write entire command here,\nwrite a function that does your job and call the function here. Do not escape\nspace between name and command.\n```vim\nNeoraySet ContextButton Say\\ Hello :echo \"Hello World!\"\n```\n\nNeoray can handle some of the Unicode box drawing characters itself, draws them\npixel aligned which makes no gap between glyphs and makes them visually\ncompatible with each other. This is enabled by default but you can disable it\nand use the font's glyphs.\n```vim\nNeoraySet BoxDrawing true\n```\n\nNeoray has a simple image viewer and it is enabled by default but you can disable it\n```vim\nNeoraySet ImageViewer true\n```\n\nYou can specify how the Neoray window will be shown. The possible values are\n'minimized', 'maximized', 'fullscreen', 'centered'. Default is none.\n```vim\nNeoraySet WindowState maximized\n```\n\nAlso you can specify the startup size of the window in cells. The default is\nnone. The syntax is same below. First value is width (columns) and second value\nis height (rows). If you set one dimension to 0, it will not take effect and\nyou can set other one dimension. The example starts Neoray with 99 columns and\ndon't touchs row/height. You may also want to call this before the WindowState option.\n```vim\nNeoraySet WindowSize 99x0\n```\n\nNeoray uses some key combinations for switching between fullscreen and windowed\nmode, zoom in and out eg. You can set these keys and also disable as you wish.\nAll options here are strings contains vim style keybindings and set to\ndefaults.\n```vim\nNeoraySet KeyFullscreen \u003cF11\u003e\nNeoraySet KeyZoomIn     \u003cC-kPlus\u003e\nNeoraySet KeyZoomOut    \u003cC-kMinus\u003e\n```\n\n### Font\nNeoray respects your `guifont` option, finds the font and loads it. If it can't\nfind your font, try with different names and also with file name. Giving full\nshared name except the style and weight names will give best result.\nUnderscores are treated as spaces. You can change the font without having to\nrestart Neoray.\nYou can also list the fonts by starting Neoray with option `--list-fonts\nfontlist.txt` This commands generates a file named fontlist.txt and this file\nwill has all of the fonts Neoray can see in your system.\nIf you think you tried every possibility but Neoray still can't find the font,\nplease [report](https://github.com/hismailbulut/Neoray/issues/new/choose).\n\n```vim\nset guifont=Consolas:h11\nset guifont=Ubuntu\\ Mono:h12\nset guifont=:h13 \" Use default font with 13 pt size\n```\nNOTE:\n- For now Neoray doesn't support TTC fonts.\n\n### Example init.vim with all options\n```vim\nif exists('g:neoray')\n    set guifont=Go_Mono:h11\n    NeoraySet CursorAnimTime 0.08\n    NeoraySet Transparency   0.95\n    NeoraySet TargetTPS      120\n    NeoraySet ContextMenu    TRUE\n    NeoraySet BoxDrawing     TRUE\n    NeoraySet ImageViewer    TRUE\n    NeoraySet WindowSize     100x40\n    NeoraySet WindowState    centered\n    NeoraySet KeyFullscreen  \u003cM-C-CR\u003e\n    NeoraySet KeyZoomIn      \u003cC-ScrollWheelUp\u003e\n    NeoraySet KeyZoomOut     \u003cC-ScrollWheelDown\u003e\nendif\n```\n\nYou can disable all of these features.\n```vim\nif exists('g:neoray')\n    NeoraySet CursorAnimTime 0\n    NeoraySet ContextMenu    FALSE\n    NeoraySet BoxDrawing     FALSE\n    NeoraySet ImageViewer    FALSE\n    NeoraySet KeyFullscreen  \u003c\u003e\n    NeoraySet KeyZoomIn      \u003c\u003e\n    NeoraySet KeyZoomOut     \u003c\u003e\nendif\n```\n\n### Flags\nNeoray accepts command line arguments. Some of them configure Neoray, the rest\nare passed to Neovim. To list Neoray flags, run it with `-h` option.\n\nSome of them are very important (at least for me)\n\n#### --single-instance, -si\nWith this option, Neoray opens only one process instance. Others will send\nall flags to already opened instance and immediately quit. This is usefull for\ngame engine-like programs which could use Neovim as an external editor. For\nexample, if you are using Godot engine you can set external editor exec path to\nNeoray executable and exec flags to the following:\n\n```\n-si --file {file} --line {line} --column {col}\n```\n\nNow, every time you open a script in Godot, this will open it in the same Neoray,\nand cursor will go to specified line and column.\n\n### Contributing\nAll types of contributing are appreciated. If you want to be a part of this\nproject you can open issue when you find something not working, or help\ndevelopment by solving issues and implementing some features what you want.\n\n### Development\nThe source code is well documented enough. I try to make everything\nunderstandable.\n\nClone this repository and perform a `go get` command. Everything will be\ninstalled and you will be ready to fly.\n\n`make build` builds a debug version of Neoray in `./bin` folder,\n`make release` - release.\n\n### Copyright\nNeoray is licensed under MIT license. You can use, change, distribute it\nhowever you want.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhismailbulut%2Fneoray","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhismailbulut%2Fneoray","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhismailbulut%2Fneoray/lists"}