Vimac is a macOS productivity application that provides keyboard-driven navigation and control of the macOS Graphical User Interface (GUI).
Vimac is heavily inspired by Vimium.
You can download Vimac here. Unzip the file and move Vimac.app
to Applications/
.
You can refer to the manual here.
The current Vimac workflow works like this:
- Activate a mode (
Hold Space to activate Hint-mode
is the default) - Perform actions within the activated mode
- Exit the mode, either manually or automatically when the mode's task is complete
Activating Hint-mode allows one to perform a click, double-click, or right-click on an actionable UI element
Upon activation, "hints" will be generated for each actionable element on the frontmost window:
Simply type the assigned "hint-text" (eg. "ka") to perform a click at the location!
Activating Scroll-mode allows one to scroll through the scrollable areas of the frontmost window.
Upon activation, a red border surrounds the active scroll area:
HJKL keys can be used to scroll within the scroll area.
pod install
carthage build
open Vimac.xcworkspace
Modify the Signing and Capabilities to the following (note the Disable Library Validation
option):
Add Vimac and Xcode (for running AppleScript) to the list of Accessibility apps under System Preferences > Security & Privacy > Accessibility:
Keep System Preferences open under this section during development with the settings unlocked. This is because the grant-accessibility-permission-dev.scpt
AppleScript is scheduled to run after each build to re-grant Accessibility permissions.
The AppleScript simply checks and unchecks Vimac to re-grant permissions which are lost after a cleanbuild.
Build Vimac now! You may have to build it several times as the AppleScript may not run well the first time.
At this point running git status
would bring up:
modified: ViMac-Swift/ViMac_Swift.entitlements
modified: Vimac.xcodeproj/project.pbxproj
modified: grant-accessibility-permission-dev.scpt
Avoid committing them.
Feel free to contribute to Vimac. Make sure to open an issue / ask to work on something first!