[HN Gopher] Show HN: Vimac - Productive macOS keyboard-driven na...
       ___________________________________________________________________
        
       Show HN: Vimac - Productive macOS keyboard-driven navigation
        
       Author : dexterleng
       Score  : 244 points
       Date   : 2020-08-30 15:07 UTC (7 hours ago)
        
 (HTM) web link (vimacapp.com)
 (TXT) w3m dump (vimacapp.com)
        
       | ivan888 wrote:
       | Really want a way to have vi-mode input in all text inputs
       | throughout the OS, hopefully that is a future possibility
        
         | wavesplash wrote:
         | You may know this already but emacs keys are supported in all
         | text input areas on Mac. Carl-a (start of text), Carl-e (end of
         | text) Carl-k (cut Text to end of line) Carl-y (yank/paste cut
         | text) and many more.
        
           | mkskm wrote:
           | It's possible to customize these as well, see e.g.
           | https://www.hcs.harvard.edu/%7Ejrus/Site/cocoa-text.html,
           | http://www.deepsky.com/~misaka/MacOSX/DefaultKeyBinding.dict.
        
           | narwally wrote:
           | And the Mac kill ring is separate from the clipboard so that
           | means you can have two things copied at once and insert them
           | with separate keybindings. Unfortunately the kill ring only
           | contains a single element, so has no history.
           | 
           | some other useful ones are C-h/C-d (backwords/forwards
           | delete), C-o (insert line), and the main Emacs movement keys
           | C-n, C-p, C-b, C-f. Remapping Capslock to be a second Control
           | makes using these regularly much more natural. Karabiner is a
           | good app for easily remapping keys on macOS.
        
         | mkskm wrote:
         | This is the most promising project I've come across:
         | https://github.com/glacambre/firenvim, although it only applies
         | to the browser. The last time I tried it out it had some
         | performance issues though.
        
       | asjldkfin wrote:
       | Love this app. Absolutely check it out if you are serious about
       | keyboard navigation.
       | 
       | The only suggestion I'd make is to have the cursor return to its
       | old position after an action. But it's a minor nitpick.
        
         | dexterleng wrote:
         | I'm glad you like it!
         | 
         | > cursor return to its old position after an action
         | 
         | Will do!
        
       | justnotworthit wrote:
       | I've been using Shortcat for this and Amethyst for tiling. Glad
       | to see another project. Anyone know Windows OS equivalents?
        
       | rado wrote:
       | Two letters appeared on a Safari tab, I typed them and nothing
       | happened. Why?
        
       | submeta wrote:
       | Wow, seems phantastic. Love vimium in Firefox and all automation
       | / keyboard remapping tools on the Mac (Keyboard Maestro, Alfred
       | App, Karabiner Elements). Will definitely check this out.
        
       | dexterleng wrote:
       | Hello all! I am a student from Singapore who was introduced to
       | Vimium by a friend two years ago. Vimac is my attempt to
       | implement Vimium on an OS level.
       | 
       | I have shared this app on Reddit about a year ago. Since then,
       | the notable changes would be a major performance buff in
       | webkit/electron, force keyboard layout, and reducing the
       | overwhelming no. of hints to what is just "clickable".
       | 
       | It is open source at https://github.com/dexterleng/vimac/.
       | 
       | Do let me know if you have any questions!
        
         | atsaloli wrote:
         | Thank you!! Can't wait to try this out.
        
         | pazimzadeh wrote:
         | I don't know vim. If I get used to this, will I be halfway to
         | knowing vim?
        
           | jagged-chisel wrote:
           | Nope. This is really just making your GUI work better with
           | the keyboard. Editing text is fundamentally different than
           | manipulating a graphical interface, so this doesn't mimic any
           | vim functionality (with one exception: when this app is in
           | scroll mode, you can use HJKL keys to scroll windows
           | contents.)
        
           | dexterleng wrote:
           | It's very much like Vimium, which is nothing like Vim, so no.
           | I see Vimium being referred to as "vim bindings" for chrome
           | which I never got. Maybe someone could enlighten me on this.
        
             | nchudleigh wrote:
             | well i mean vimium implements a lot of similar bindings
             | from com.
             | 
             | navigation visual selection find scroll
        
         | johne20 wrote:
         | Great work! I am just trying it out, but realized it doesn't
         | highlight links/buttons in Firefox. Is that outside the scope
         | of this tool? If so, do you just suggest using Vimac in
         | combination with Vimium?
        
           | dexterleng wrote:
           | It actually technically could support Firefox/chrome, but I
           | have disabled it because enabling accessibility on chrome
           | breaks window managers.
           | 
           | Also vimium will always be faster than vimac due to how slow
           | the accessibility API is.
           | 
           | I would recommend using both for now.
        
             | mkskm wrote:
             | One missing piece worth noting is Vimium doesn't seem to
             | support navigating preferences, bookmarks, etc. in Firefox
             | or anything in the toolbar. Not sure if that is possible
             | solely with the WebExtensions API.
        
         | nikivi wrote:
         | One issue I had with running this aside from it taking quite a
         | lot of CPU is that when opening Discord, I'd always get a
         | warning that I am using a screen reader.
         | 
         | Was it solved in new versions?
        
           | dexterleng wrote:
           | > it taking quite a lot of CPU
           | 
           | Yes that is fixed.
           | 
           | The reason for slow performance + high cpu usage on
           | electron/webkit apps was just the sheer amount of mach ipc
           | calls (from the many many <div> layers) needed to be made to
           | fetch the entire UI element tree.
           | 
           | This has been fixed two days ago Heres the solution for those
           | interested: https://github.com/dexterleng/vimac/pull/190
           | 
           | I was also using a bunch of async queues instead of just a
           | single NSThread which likely contributed to high cpu usage,
           | and that has also been fixed.
           | 
           | > warning that I am using a screen reader.
           | 
           | Nope, you should get this warning, although it was a one time
           | prompt for me. This is because Accessibility is opt-in for
           | electron apps for performance reasons, and I have to ask for
           | it through setting the AXManualAccessibility attribute (see h
           | ttps://electronjs.org/docs/tutorial/accessibility#assistive..
           | .), which I guess triggers the prompt.
        
             | fny wrote:
             | Why did you choose to use electron for something so
             | specific to MacOS?
             | 
             | Awesome project by the way. This will save my wrists from a
             | lot of pain.
        
               | hibiscus4156 wrote:
               | > Why did you choose to use electron for something so
               | specific to MacOS?
               | 
               | I think you're mistaken. OP is referring to Discord as
               | the webkit/electron app.
        
               | messe wrote:
               | I don't think they did. They're just talking about the
               | high cpu usage when trying to navigate an electron app
               | while using vimac.
        
               | dexterleng wrote:
               | The app is written in Swift, not Electron.
               | 
               | Vimac had major performance issues previously when
               | traversing the UI Element tree of Electron/Webkit apps.
        
         | victoriasun wrote:
         | I love this! As a colemak-dh user, is there a way to easily re-
         | kebind hjkl?
        
           | dexterleng wrote:
           | Yes, you can do so!
        
       | nchudleigh wrote:
       | yes yes yes yes yes. can't wait to try this out. heavy vimium
       | user
        
       | mkskm wrote:
       | This is great, thank you! Although, the name seems like a bit of
       | a misnomer since there's not much in common with vim aside from
       | the HJKL keys. It's more like EasyMotion or avy-mode.
        
       | wakkaflokka wrote:
       | I have been looking for something like this for a LONG time.
       | Impressive! My ideal state is to be able to navigate anything and
       | everything with VIM keybindings. Including the physical world :)
        
         | steffan wrote:
         | I'm sure there's a way to hack this into a Tesla
        
       | RMPR wrote:
       | I remember when you posted this on Reddit[0] very happy you
       | continued to work on it. At one point I might even switch to
       | macOS :)
       | 
       | 0:
       | https://reddit.com/r/vim/comments/dc95by/vimac_vimium_for_ma...
        
       | [deleted]
        
       | [deleted]
        
       | toptal wrote:
       | Can someone please create this for Cubase, Logic, etc.
        
       | stefanfisk wrote:
       | I've been thinking about implementing something like this for
       | years - it's great to see that someone actually went ahead and
       | did it!
       | 
       | The accessibility API is one thing that I really miss since
       | mostly leaving macOS for Linux. Most apps support it in at least
       | a rudimentary way, and it allows for a bunch of neat tricks.
        
       | tkainrad wrote:
       | Great job! Always amazing when a single person sees a problem and
       | engineers the hell out of it.
       | 
       | For everyone interested in efficient keyboard usage: You might
       | enjoy KeyCombiner - a web app to organize, learn, and practice
       | keyboard shortcuts.
       | 
       | https://keycombiner.com/
        
       | ndand wrote:
       | Very handy!
       | 
       | My right wrist used to pain a lot because of excessive mouse
       | usage. I had tried out various keyboard-driven apps but I didn't
       | find any app practical enough for my needs, so I made one.
       | 
       | I'd like to share here my "generic" keyboard-driven navigation
       | app for Windows:
       | 
       | https://github.com/ndandoulakis/SlickCursor
        
       | siproprio wrote:
       | I really want a version of this for Windows as well!
        
         | dmortin wrote:
         | I wonder why people are downvoting you for asking for a windows
         | version. Is everyone a mac user here?
        
         | ziftface wrote:
         | Would also love a gnome/linux version.
        
         | dexterleng wrote:
         | I have yet to try it out:
         | 
         | https://github.com/zsims/hunt-and-peck
        
       | tcoff91 wrote:
       | This is incredible! wow!
        
       | xenonite wrote:
       | macOS 10.14 or later required. (Still on 10.11 here)
        
         | Fang_ wrote:
         | 10.12 reporting in. Wondering how hard it would be to backport
         | this... I'm not too familiar with ~macdev.
        
         | vivab0rg wrote:
         | macOS 10.13 is the last macOS supported on my one and only
         | Macbook Air 13" Mid-2011 :(
        
       ___________________________________________________________________
       (page generated 2020-08-30 23:00 UTC)