Skip to content
πŸ™ƒ Like mojibar, but written in reasonml
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin working on a menu button Jan 30, 2019
bundler add bundler n stuff Jan 29, 2019
esy.lock working on a menu button Jan 30, 2019
src tracking down memory leaks Jan 31, 2019
.gitignore add bundler n stuff Jan 29, 2019
dune-project bring in esy source files! Jan 29, 2019
esy.json working on a menu button Jan 30, 2019
memory.png shots Jan 25, 2019
qmoji.opam bring in esy source files! Jan 29, 2019

Ok folks, here it is. The source code is still living over in the fluid repo, because I'm using it to field test the Fluid api & macos bindings. But I made this separate repositories so that releases will make sense. Also I'll probably move the source code over here eventually.

Inspired by the excellent mojibar.

that's what I'm talkin bout

definitely saving on the ram side of things too


Mojave note:

user @Tibfib writes:

Every time I update the app (by downloading the new one and replacing in my Applications folder), the app is no longer able to insert emojis.

I have to go to the System Preferences -> Security & Privacy -> Privacy -> Accessibility -> Uncheck -> Check and it works again.

I'm developing on High Sierra so I can't verify.



  • trigger with option-cmd-space ()
  • tab & shift-tab to move the selection
  • enter to use the current emoji (it types it into the last-active application for you)
  • escape to clear the search text, or if it's empty then it closes the window


  • click an emoji to select it
  • right-click an emoji to remove from "recently used" list


Install esy version 0.4.9

npm i -g esy@0.4.9

then run esy in this directory to build.

And then esy start to run the development build.

Why make this?

I'm making a react-like UI framework for native reasonml & I wanted to try cloning a simple electron-based app as a proof of concept. joakin suggested mojibar, and so here we are. It turned out to be more of a stress test than I was expecting (rendering 1500 views turned out to be prohibitively expensive, so I ended up exploring the wonderful world of drawRect: & custom NSViews), but I'm pretty happy with how it's turned out.

Future work

that I'll probably do because I already like this better than mac's builtin picker

  • memory of most-frequently used
  • fuzzy search
  • option to start at login
  • skin tone modifier selection
  • more perf optimization for click / hover state (I currently invalidate the whole view when you click, which is hugely wasteful)
  • customize the global shortcut (maybe, idk)

Supported platforms

This is macos only, and I don't really expect to port it to windows or linux -- the menubar stuff & the "send a keypress to the next active window" seems quite platform-specific. I am planning on making fluid cross-platform though (it currently supports js & native macos).

You can’t perform that action at this time.