{"id":51831565,"url":"https://github.com/floatpane/jify","last_synced_at":"2026-07-22T16:02:04.598Z","repository":{"id":367308030,"uuid":"1280204931","full_name":"floatpane/jify","owner":"floatpane","description":"Native shortcode emoji picker anywhere! MacOS, Linux, Windows","archived":false,"fork":false,"pushed_at":"2026-06-25T13:11:34.000Z","size":50,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-25T13:15:23.003Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://jify.floatpane.com/","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/floatpane.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-25T11:13:26.000Z","updated_at":"2026-06-25T13:14:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/floatpane/jify","commit_stats":null,"previous_names":["floatpane/jify"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/floatpane/jify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatpane%2Fjify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatpane%2Fjify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatpane%2Fjify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatpane%2Fjify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/floatpane","download_url":"https://codeload.github.com/floatpane/jify/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floatpane%2Fjify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35768236,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-22T02:00:06.236Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-07-22T16:02:03.376Z","updated_at":"2026-07-22T16:02:04.589Z","avatar_url":"https://github.com/floatpane.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" alt=\"jify logo\" width=\"120\" height=\"120\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003ejify\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eEmoji, everywhere you type.\u003c/p\u003e\n\n---\n\nNative shortcode emoji picker. Type a trigger character (`:` by default)\nfollowed by an emoji name in **any** application and jify pops up native\nsuggestions — press \u003ckbd\u003eEnter\u003c/kbd\u003e to replace the shortcode with the emoji.\n\n```\n:fire        -\u003e  🔥\n:thumbsup    -\u003e  👍\n:rocket      -\u003e  🚀\n```\n\n## Features\n\n- **Works everywhere** — a global keyboard hook watches your typing system-wide.\n- **Native popup on every OS**\n  - **macOS** — \"liquid glass\" (`NSGlassEffectView`) on macOS 26+, falling back\n    to a frosted `NSVisualEffectView` on older releases.\n  - **Windows** — an acrylic-blur, rounded-corner layered window (Win10/11).\n  - **Linux** — a GTK 3 popup styled with CSS (rounded, translucent, color\n    emoji via Pango).\n- **Configurable** — trigger character, result count, theme and per-app\n  blacklist all live in a JSON config.\n- **App blacklist** — disable jify in specific apps (e.g. password managers).\n\n## Selection UX\n\n- **macOS / Windows** — keystrokes can be intercepted, so the popup is fully\n  interactive: \u003ckbd\u003e↑\u003c/kbd\u003e/\u003ckbd\u003e↓\u003c/kbd\u003e to move, \u003ckbd\u003eEnter\u003c/kbd\u003e/\u003ckbd\u003eTab\u003c/kbd\u003e\n  to insert, \u003ckbd\u003eEsc\u003c/kbd\u003e to cancel.\n- **Linux (X11)** — X11's `XRecord` can observe but not swallow keys, so\n  selection uses the **closing-trigger** style: type `:smile:` (trigger, name,\n  trigger) to insert the top suggestion. The popup updates live as you type.\n- **Any platform** — you can also **click** a suggestion in the popup to insert\n  it (rows highlight on hover).\n\n## Install\n\n**macOS (Homebrew):**\n\n```sh\nbrew install floatpane/jify/jify\n```\n\n**Linux (Snap):**\n\n```sh\nsudo snap install jify --classic\n```\n\n**Windows / manual:** download the archive for your OS from the\n[releases page](https://github.com/floatpane/jify/releases) and put `jify` on\nyour `PATH`.\n\n## Build from source\n\nRequires Go 1.24+.\n\n```sh\n# macOS  (needs the Xcode command line tools for cgo / Objective-C)\nCGO_ENABLED=1 go build -o jify .\n\n# Windows (pure Go, no cgo)\nGOOS=windows CGO_ENABLED=0 go build -o jify.exe .\n\n# Linux (needs gtk+-3.0, libx11 and libxtst dev packages, e.g. on Debian:\n#   sudo apt install libgtk-3-dev libx11-dev libxtst-dev)\nCGO_ENABLED=1 go build -o jify .\n```\n\n## Usage\n\n```sh\n./jify            # start jify in the background (type \":name\" anywhere)\n./jify -f         # run in the foreground (don't detach; for debugging)\n./jify enable     # start jify automatically at login\n./jify disable    # stop starting jify at login\n./jify status     # show whether autostart is enabled\n./jify config     # print the config file path\n./jify help       # show help\n```\n\n### Running in the background \u0026 at login\n\njify is designed to run as a background agent (no dock icon on macOS, no window\nuntil the popup appears). Running `jify` from a terminal detaches it and returns\nyour prompt immediately; its output goes to a log file next to the config\n(`\u003cconfig-dir\u003e/jify/jify.log`). Use `jify -f` to stay in the foreground. When\nlaunched by launchd/systemd/snap it runs in the foreground so the supervisor can\ntrack it.\n\nIt also registers itself to launch at login automatically on first run —\ncontrolled by the `autostart` config field, which is reconciled with the OS every\ntime jify starts. Use `jify disable` to turn it off.\n\nLogin mechanism per OS:\n\n- **macOS** — a LaunchAgent at `~/Library/LaunchAgents/com.floatpane.jify.plist`.\n- **Windows** — an `HKCU\\…\\CurrentVersion\\Run` registry value.\n- **Linux** — `~/.config/autostart/jify.desktop`.\n\n\u003e **Windows:** build with the GUI subsystem so no console window appears:\n\u003e `GOOS=windows CGO_ENABLED=0 go build -ldflags=\"-H windowsgui\" -o jify.exe .`\n\nOn first launch macOS will ask for **Accessibility** permission\n(System Settings → Privacy \u0026 Security → Accessibility). This is required for the\nglobal key event tap. Grant it and relaunch.\n\n- Type the trigger character followed by a name to open the popup.\n- \u003ckbd\u003e↑\u003c/kbd\u003e/\u003ckbd\u003e↓\u003c/kbd\u003e to move the selection.\n- \u003ckbd\u003eEnter\u003c/kbd\u003e / \u003ckbd\u003eTab\u003c/kbd\u003e to insert the highlighted emoji.\n- \u003ckbd\u003eEsc\u003c/kbd\u003e or any space/punctuation cancels.\n\n## Configuration\n\nThe config file is created with defaults on first run at:\n\n```\n~/Library/Application Support/jify/config.json   (macOS)\n~/.config/jify/config.json                        (Linux)\n```\n\nSee [`config.example.json`](config.example.json):\n\n| Field             | Description                                                        |\n| ----------------- | ------------------------------------------------------------------ |\n| `trigger`         | Character that starts a suggestion session (default `:`).          |\n| `maxSuggestions`  | Maximum emojis shown in the popup.                                 |\n| `blacklistedApps` | App bundle ids (`com.apple.Terminal`) or names where jify is off.  |\n| `theme`           | `native`, `dark` or `light`.                                       |\n| `autostart`       | Launch jify at login (default `true`).                             |\n\n## Platform support\n\n| Platform | Backend                              | Hook / inject              | Popup            |\n| -------- | ------------------------------------ | -------------------------- | ---------------- |\n| macOS    | `darwin.m` (cgo / Objective-C)       | `CGEventTap` / `CGEvent`   | NSGlassEffectView |\n| Windows  | `windows.go` (pure Go, Win32)        | `WH_KEYBOARD_LL` / SendInput | acrylic layered window |\n| Linux    | `linux.c` (cgo / GTK3 + X11)         | `XRecord` / `XTest`        | GTK CSS popup    |\n\nThe Go core (`pkg/config`, `pkg/emoji`) is platform-independent. The cgo\nbackends (macOS, Linux) call the shared exported callbacks in `bridge.go`\n(`jifyQuery`, `jifyIsBlacklisted`, `jifyTriggerRune`); the Windows backend is\npure Go and calls the core directly.\n\n### Notes \u0026 permissions\n\n- **macOS** needs **Accessibility** permission for the event tap.\n- **Linux** requires an **X11** session (works under XWayland for most apps) with\n  the `RECORD` and `XTEST` extensions, which are standard.\n- **Windows** needs no special permission; if jify is used in an elevated\n  (admin) window, run jify elevated too so the hook can see those keystrokes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloatpane%2Fjify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffloatpane%2Fjify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloatpane%2Fjify/lists"}