{"id":13480557,"url":"https://github.com/pit-ray/win-vind","last_synced_at":"2025-05-15T12:06:28.590Z","repository":{"id":37029584,"uuid":"259406841","full_name":"pit-ray/win-vind","owner":"pit-ray","description":"You can operate Windows with key bindings like Vim.","archived":false,"fork":false,"pushed_at":"2024-07-20T08:28:33.000Z","size":65687,"stargazers_count":2082,"open_issues_count":85,"forks_count":49,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-11T21:49:01.325Z","etag":null,"topics":["emulation","hotkey","keybinding","keyboard","mouse","vim","window-manager","windows"],"latest_commit_sha":null,"homepage":"https://pit-ray.github.io/win-vind/","language":"C++","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/pit-ray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","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},"funding":{"github":"pit-ray"}},"created_at":"2020-04-27T17:42:37.000Z","updated_at":"2025-04-11T09:34:10.000Z","dependencies_parsed_at":"2023-11-06T14:47:13.414Z","dependency_job_id":"80ec2c5d-07b2-4e5f-8070-203f92afd84c","html_url":"https://github.com/pit-ray/win-vind","commit_stats":{"total_commits":1462,"total_committers":5,"mean_commits":292.4,"dds":0.219562243502052,"last_synced_commit":"d07912f5af93e976f44cdec77fa248419706ac82"},"previous_names":[],"tags_count":71,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pit-ray%2Fwin-vind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pit-ray%2Fwin-vind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pit-ray%2Fwin-vind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pit-ray%2Fwin-vind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pit-ray","download_url":"https://codeload.github.com/pit-ray/win-vind/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254337613,"owners_count":22054253,"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":["emulation","hotkey","keybinding","keyboard","mouse","vim","window-manager","windows"],"created_at":"2024-07-31T17:00:41.243Z","updated_at":"2025-05-15T12:06:23.581Z","avatar_url":"https://github.com/pit-ray.png","language":"C++","readme":"\u003ch1\u003e\u003c/h1\u003e\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg src=\"docs/imgs/banner.gif?raw=true\" /\u003e\r\n  \u003cp align=\"center\"\u003e\r\n    \u003ca href=\"https://scan.coverity.com/projects/pit-ray-win-vind\"\u003e\u003cimg alt=\"Coverity Scan Build Status\" src=\"https://img.shields.io/coverity/scan/pit-ray-win-vind?style=flat-square\" /\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://www.codacy.com/gh/pit-ray/win-vind/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=pit-ray/win-vind\u0026amp;utm_campaign=Badge_Grade\"\u003e\u003cimg src=\"https://img.shields.io/codacy/grade/8f2e6f2826904efd82019f5888574327?style=flat-square\" /\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://github.com/pit-ray/win-vind/actions/workflows/codeql-analysis.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/pit-ray/win-vind/codeql-analysis.yml?branch=master\u0026label=CodeQL\u0026logo=github\u0026style=flat-square\" /\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://github.com/pit-ray/win-vind/actions/workflows/test.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/pit-ray/win-vind/test.yml?branch=master\u0026label=test\u0026logo=github\u0026style=flat-square\" /\u003e\u003c/a\u003e\r\n    \u003cbr\u003e  \r\n    \u003ca href=\"https://github.com/pit-ray/win-vind/actions/workflows/coverity.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/pit-ray/win-vind/coverity.yml?branch=master\u0026label=cov-build\u0026logo=github\u0026style=flat-square\" /\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://github.com/pit-ray/win-vind/actions/workflows/mingw.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/pit-ray/win-vind/mingw.yml?branch=master\u0026label=MinGW%20build\u0026logo=github\u0026style=flat-square\" /\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://github.com/pit-ray/win-vind/actions/workflows/msvc.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/pit-ray/win-vind/msvc.yml?branch=master\u0026label=MSVC%20build\u0026logo=github\u0026style=flat-square\" /\u003e\u003c/a\u003e\r\n    \u003cbr\u003e\r\n    \u003ca href=\"https://community.chocolatey.org/packages/win-vind\"\u003e\u003cimg src=\"https://img.shields.io/badge/chocolatey-supported-blue?style=flat-square\u0026color=607D8B\" /\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://github.com/microsoft/winget-pkgs/tree/master/manifests/p/pit-ray/win-vind\"\u003e\u003cimg src=\"https://img.shields.io/badge/winget-supported-blue?style=flat-square\u0026color=607D8B\" /\u003e\u003c/a\u003e\r\n    \u003ca href=\"https://github.com/ScoopInstaller/Extras/commits/master/bucket/win-vind.json\"\u003e\u003cimg src=\"https://img.shields.io/badge/scoop-supported-blue?style=flat-square\u0026color=607D8B\" /\u003e\u003c/a\u003e\r\n  \u003c/p\u003e\r\n\u003c/p\u003e  \r\n\r\n## What is this?\r\n**win-vind** provides a lightweight hybrid UI system of CUI and GUI for Windows.  \r\nBy installing this tool, you will be able to control the Windows GUI in the same way as Vim.\r\n\r\n### 1. Vim-user friendly.\r\nAll configuration methods and mode concepts are derived from Vim, allowing for Vim-like UI operation.  \r\nVim users only need to understand win-vind's macro features and additional mode concepts with little learning cost.  \r\n\r\n### 2. There are many useful built-in commands.\r\nYou don't have to worry about complicated scripts and dependencies like with traditional key binding tools.  \r\nYou can freely create user-defined commands by combining low-level optimized built-in commands.\r\n\r\n### 3. Very portable and fully open source.\r\nwin-vind is a small single binary with no dependencies that runs with user permissions.   \r\nIt is also available from the command line as a command for UI operations like `$ win-vind -c \"ggyyGp\"`.\r\n\r\n\r\n### Top Feature Demo\r\n\r\n\u003cdiv\u003e\u003cvideo controls src=\"https://user-images.githubusercontent.com/42631247/215270933-3365065b-53db-4eca-9fc6-cd03d13e5ab0.mp4\" muted=\"false\"\u003e\u003c/video\u003e\u003c/div\u003e\r\n\r\n\u003cbr\u003e  \r\n\r\n## Installation\r\nwin-vind supports a variety of installation methods.\r\n\r\n### [Chocolatey](https://chocolatey.org/)\r\n\r\n```sh\r\n$ choco install win-vind\r\n```\r\n\r\n### [winget](https://github.com/microsoft/winget-cli)\r\n\r\n```sh\r\n$ winget install win-vind\r\n```\r\n\r\n### [Scoop](https://scoop.sh/)\r\nThis has been added to Scoop Extras thanks to contributors and is automatically updated by the autoupdate feature of scoop.\r\n\r\n```\r\n$ scoop bucket add extras\r\n$ scoop install win-vind\r\n```\r\n\r\n### Executable Installer\r\n- [win-vind_5.13.2_32bit_installer.zip](https://github.com/pit-ray/win-vind/releases/download/v5.13.2/win-vind_5.13.2_32bit_installer.zip)\r\n- [win-vind_5.13.2_64bit_installer.zip](https://github.com/pit-ray/win-vind/releases/download/v5.13.2/win-vind_5.13.2_64bit_installer.zip)\r\n\r\n### Portable Zip\r\n- [win-vind_5.13.2_32bit_portable.zip](https://github.com/pit-ray/win-vind/releases/download/v5.13.2/win-vind_5.13.2_32bit_portable.zip)\r\n- [win-vind_5.13.2_64bit_portable.zip](https://github.com/pit-ray/win-vind/releases/download/v5.13.2/win-vind_5.13.2_64bit_portable.zip)\r\n\r\n\r\n## Usage\r\n\r\nUsage is mainly described in easy-to-read [documentation pages](https://pit-ray.github.io/win-vind/usage/) with plenty of diagrams. Here, only a sample .vindrc is shown below. As you can see, it is Vim user-friendly.  \r\n\r\nThe file is located at `C:\\Users\\[USERNAME]\\.win-vind\\.vindrc`\r\n\r\n\r\n### .vindrc sample  \r\n\r\n```vim\r\n\" Choose the version of {tiny, small, normal, big, huge}.\r\nversion normal\r\n\r\n\" Change parameters\r\nset shell = cmd\r\nset cmd_fontsize = 14\r\nset cmd_fontname = Consolas\r\nset easyclick_bgcolor=E67E22\r\nset easyclick_fontcolor=34495E\r\n\r\n\" Map capslock to ctrl.\r\nimap \u003ccapslock\u003e {\u003cctrl\u003e}\r\n\r\n\" Define useful shortcuts\r\ninoremap \u003cctrl-shift-f\u003e \u003ceasyclick\u003e\u003cclick_left\u003e\r\ninoremap \u003cctrl-shift-m\u003e \u003cgridmove\u003e\u003cclick_left\u003e\r\ninoremap \u003cctrl-shift-s\u003e \u003cswitch_window\u003e\u003ceasyclick\u003e\u003cclick_left\u003e\r\n\r\n\" Register application launchers\r\nnoremap \u003cctrl-1\u003e :! gvim\u003ccr\u003e\r\nnoremap \u003cctrl-2\u003e :e http://example.com\u003ccr\u003e\r\n\r\n\" Define macros like Vim\r\nenoremap t ggyyGp\r\n\r\n\" Apply auto-commands\r\nautocmd AppLeave * \u003cto_insert\u003e\r\nautocmd AppEnter,EdiNormalEnter vim.exe \u003cto_resident\u003e\r\n```\r\n\r\n### Default Mappings\r\nwin-vind has many features, but you can use a simpler one for your purposes by putting the `version` command at the beginning of your .vindrc.\r\nIf you want to use `tiny` version, write the following. It is important to note that **nothing but comments can be written before the `version` command**.\r\nIf you do not write the `version` command, `huge` will be loaded.\r\n\r\n```vim\r\n\" Only comments can be written in here.\r\nversion tiny\r\n\" Any command can be written from.\r\n\" For example\r\nset shell = cmd\r\n```\r\n\r\n|**Tier**|**Supported Features**|\r\n|:---|:---|\r\n|[tiny](https://pit-ray.github.io/win-vind/cheat_sheet/defaults/tiny)|+mouse +syscmd|\r\n|[small](https://pit-ray.github.io/win-vind/cheat_sheet/defaults/small)|+mouse +syscmd +window +process|\r\n|[normal](https://pit-ray.github.io/win-vind/cheat_sheet/defaults/normal)|+mouse +syscmd +window +process +vimemu|\r\n|[big](https://pit-ray.github.io/win-vind/cheat_sheet/defaults/big)|+mouse +syscmd +window +process +vimemu +hotkey +gvmode|\r\n|[huge](https://pit-ray.github.io/win-vind/cheat_sheet/defaults/huge)|+mouse +syscmd +window +process +vimemu +hotkey +gvmode +experimental|\r\n\r\nFollowing Vim, there are five tiers. \r\n* `tiny` has minimal commands for mouse moving and clicking from the keyboard (e.g., GridMove and EasyClick). \r\n* `small` allows more flexible handling of window controls and process launches, etc.\r\n* `normal` has Vim emulation mappings and allows text editing in text areas, etc.\r\n* `big` adds several hotkeys that redefine some of the shortcut keys in Windows to operate Windows with more Vim-like ways. It also provides GUI Visual Mode (+gvmode), which allows for holding down the mouse.\r\n* `huge` allows win-vind to have experimental features for more complex operations.\r\n\r\nFor more information on default mappings, please visit our [website](https://pit-ray.github.io/win-vind/cheat_sheet/defaults/).\r\n\r\n\r\n## Known Issues\r\n- EasyClick does not seem to work properly for some applications on older Windows 10 before 1803. The cause is not known, but we have confirmed that it works after 1909. ([#11](https://github.com/pit-ray/win-vind/issues/11))\r\n- Windows 10/11 Single Language does not seem to be able to map toggle keys such as `\u003cCapslock\u003e`. ([#40](https://github.com/pit-ray/win-vind/issues/40))\r\n\r\n- If you want to use word motion (e.g. `w`, `B`, `e`) in MS Office Word, it is recommended to disable `Use smart paragraph selection`.  \r\n\r\n  \u003cimg src=\"docs/imgs/opt_in_ms_word.png\" title=\"Option in MS Word\" width=600\u003e\r\n\r\n## Build\r\nAll you have to do is install [cmake](https://cmake.org/download/), [Visual Sudio](https://visualstudio.microsoft.com/ja/downloads/) and [Windows SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/), then do the following.\r\n\r\n```bash\r\n$ cmake -B build\r\n$ cmake --build build\r\n$ ./build/Debug/win-vind.exe\r\n```\r\n\r\nIf you want to build with MinGW or create an installer, see [here](https://github.com/pit-ray/win-vind/blob/master/CONTRIBUTING.md#to-development).\r\n\r\n## Test\r\nTests can be run using ctest and python.\r\n\r\n### Unit Test\r\nRun source code level tests.\r\n\r\n```bash\r\n$ cd tests\r\n$ cmake -B build unit\r\n$ cmake --build build\r\n$ ctest -C Debug --test-dir build --output-on-failure\r\n$ cd ..\r\n```\r\n\r\n### Runtime Test\r\nRuntime tests check the behavior of the built binaries.\r\n\r\n```bash\r\n$ cd tests\r\n$ python runtime/test.py \"../bin_64/win-vind/win-vind.exe\"  # Specifies the binary for release.\r\n$ cd ..\r\n```\r\n\r\nSee [this document](tests/README.md) for details.\r\n\r\n## Contribute\r\nIf you would like to contribute to win-vind, see [CONTRIBUTING.md](https://github.com/pit-ray/win-vind/blob/master/CONTRIBUTING.md).\r\n\r\nThe project is managed with \u003ca href=\"https://github.com/users/pit-ray/projects/2\"\u003eGitHub Projects\u003c/a\u003e. \r\n\r\n## Similar Projects\r\n- [rcmdnk/vim_ahk](https://github.com/rcmdnk/vim_ahk)\r\n- [microsoft/PowerToys](https://github.com/microsoft/PowerToys)\r\n- [zsims/hunt-and-peck](https://github.com/zsims/hunt-and-peck)\r\n\r\n## License  \r\n\r\nThis software is provided by pit-ray under the **MIT License**.  \r\n","funding_links":["https://github.com/sponsors/pit-ray"],"categories":["C++","System-wide"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpit-ray%2Fwin-vind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpit-ray%2Fwin-vind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpit-ray%2Fwin-vind/lists"}