{"id":18560791,"url":"https://github.com/eepp/jome","last_synced_at":"2025-04-10T02:31:13.759Z","repository":{"id":37776403,"uuid":"182329319","full_name":"eepp/jome","owner":"eepp","description":"An emoji picker desktop application","archived":false,"fork":false,"pushed_at":"2025-04-03T14:00:33.000Z","size":71702,"stargazers_count":40,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T15:21:33.424Z","etag":null,"topics":["emoji","emoji-keyboard","emoji-picker","emoji-searcher","emojis"],"latest_commit_sha":null,"homepage":null,"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/eepp.png","metadata":{"files":{"readme":"README.adoc","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}},"created_at":"2019-04-19T21:46:43.000Z","updated_at":"2025-04-03T14:00:42.000Z","dependencies_parsed_at":"2025-03-17T18:36:48.071Z","dependency_job_id":null,"html_url":"https://github.com/eepp/jome","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eepp%2Fjome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eepp%2Fjome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eepp%2Fjome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eepp%2Fjome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eepp","download_url":"https://codeload.github.com/eepp/jome/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248144186,"owners_count":21054881,"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":["emoji","emoji-keyboard","emoji-picker","emoji-searcher","emojis"],"created_at":"2024-11-06T22:04:35.750Z","updated_at":"2025-04-10T02:31:08.744Z","avatar_url":"https://github.com/eepp.png","language":"C++","readme":"= jome 😏\nPhilippe Proulx \u003ceepp.ca\u003e\n:toc: left\n:icons: font\n:nofooter:\n\n**jome** (_joh_·_mee_) is a ⌨️ centric emoji picker 🖥 application.\n\nYou can also pick an emoji with the 🖱, don't worry.\n\njome has most of the interesting emojis of\nhttps://emojipedia.org/emoji-14.0/[Emoji{nbsp}14.0].\n\nI'm not a fan of the usual very broad categories of emojis which do not\nintersect so I made my own categories. A given emoji can be found in\nmore than 1️⃣ category. For example, 🦈 is found in both the _animals (no\nfaces)_ and _water_ categories. I find that it's easier to 🔍 by\ntheme than by very general category. Feel 🆓 to suggest more\ncategories.\n\njome is currently only tested on 🐧.\n\n\n== Preview\n\nimage::screenshots/all.png[]\n\nimage::screenshots/palm.png[]\n\nimage::screenshots/wom.png[]\n\nimage::screenshots/wom-fact.png[]\n\nimage::screenshots/transp-cat.png[]\n\nimage::screenshots/transp-cat-car.png[]\n\nimage::screenshots/transp-cat-car-lig.png[]\n\n\n[[build]]\n== 🏗\n\nYou need:\n\n* https://cmake.org/[CMake] ≥ 3.1.0\n* A {cpp}14 compiler\n* http://www.boost.org/[Boost] ≥ 1.58 (only to 🏗)\n* Qt 5 (_Core_, _GUI_, _Widgets_, and _Network_ modules)\n\n.🏗 jome\n----\n$ mkdir build \u0026\u0026 cd build \u0026\u0026 cmake -DCMAKE_BUILD_TYPE=release .. \u0026\u0026 make -j$(nproc)\n----\n\n[NOTE]\nYou need to _install_ jome for it to find the correct data 📄. If you\ndon't want to install it on your system, use\n`-DCMAKE_INSTALL_PREFIX=path/to/install/directory` when you run `cmake`.\n\n.Install jome\n----\n$ sudo make install\n----\n\n\n== Install on Arch Linux\n\nTo install on Arch Linux from the\nhttps://aur.archlinux.org/packages/jome-git[jome-git] AUR package:\n\n----\n$ yay -Sy jome-git\n----\n\n\n== Usage\n\njome's purpose is to help you _pick_ an emoji.\n\nWhen you \u003c\u003caccept-emoji,accept\u003e\u003e an emoji (with the ⌨️ or with the 🖱),\njome 🖨 the UTF-8 emoji or the Unicode codepoints (see the\n\u003c\u003copt-f,`-f`{nbsp}option\u003e\u003e), with an optional prefix (see the\n\u003c\u003copt-p,`-p`{nbsp}option\u003e\u003e) for each codepoint, to the standard output.\nAdditionally, jome can:\n\n* Copy the UTF-8 emoji or the Unicode codepoints to the clipboard. See\n  the \u003c\u003copt-b,`-b`{nbsp}option\u003e\u003e.\n\n* Execute a custom command which receives the UTF-8 emoji or the Unicode\n  codepoints, with an optional prefix for each codepoint, as its\n  last argument(s). See the \u003c\u003copt-c,`-c`{nbsp}option\u003e\u003e.\n\n* Send the UTF-8 emoji or the Unicode codepoints, with an optional\n  prefix for each codepoint, in response to a client which requested\n  picking an emoji. See the \u003c\u003copt-s,`-s`{nbsp}option\u003e\u003e.\n\nIf you close the 🪟 (you can 👇 **Escape** to do this), then jome 🖨\nnothing to the standard output and executes nothing.\n\nIf you don't start jome in \u003c\u003cserver-mode,server mode\u003e\u003e\n(\u003c\u003copt-s,`-s`{nbsp}option\u003e\u003e) and you don't specify the\n\u003c\u003copt-q,`-q`{nbsp}option\u003e\u003e, then jome immediately quits after you accept\nan emoji or close the 🪟.\n\n\n=== Graphical interface\n\nimage::screenshots/all.png[]\n\nThere are 4️⃣ sections:\n\n[[find-box]]🔍 box (⬆️)::\n    Input box where you can ⌨️ a query to \u003c\u003cfind-emojis,🔍 emojis\u003e\u003e.\n\nEmojis::\n    All emojis (with an empty 🔍 box) or 🔍 results.\n+\nWhen there's at least 1️⃣ emoji, there's always a selected emoji with a\n🔴 box around it.\n+\n🖱 an emoji to accept it.\n+\nHover an emoji to update the ⬇️ emoji info text temporarily.\n+\nUse the \u003c\u003copt-d,`-d`{nbsp}option\u003e\u003e to make the background behind emojis\ndark.\n\nCategory list::\n    List of available categories.\n+\nWhen all emojis are 👁 (the 🔍 box is empty), 🖱 a category\nname to scroll to this emoji category.\n+\nThe first category, _Recent_, is a special category with the recently\naccepted emojis.\n\nEmoji info text (⬇️)::\n    Name, Unicode codepoints, and Emoji version of the selected or\n    hovered emoji.\n\n\n[[find-emojis]]\n=== 🔍 emojis\n\nThe power of jome is its \u003c\u003cfind-box,🔍 box\u003e\u003e.\n\nWhen you launch jome, the 🔍 box is focused, and it should stay\nfocused unless you browse emojis manually with the intention of\naccepting one with the 🖱.\n\nThe format of a query is 1️⃣ of:\n\n* `_TERMS_`\n* `_CAT_/`\n* `_CAT_/_TERMS_`\n\nwhere:\n\n`_CAT_`::\n    Partial name of categories in which to 🔍.\n\n`_TERMS_`::\n    Space-separated list of 🔍 terms.\n+\nFor an emoji to be part of the results, at least 1️⃣ of its keywords\nmust contain _all_ the 🔍 terms.\n\n\n[[select]]\n=== Select and accept an emoji\n\nTo select an emoji, use the following ⌨️:\n\n⬅️, ➡️, ⬆️, ⬇️::\n    Go ⬅️/➡️/⬆️/⬇️.\n\n**Ctrl**pass:[+]⬅️, **Ctrl**pass:[+]➡️::\n    Go ⬅️/➡️ 5️⃣ emojis.\n\n**Page ⬆️**, **Page ⬇️**::\n    Go ⬆️/⬇️ 10 rows.\n\n**Home**::\n    Go to the first emoji.\n\n**End**::\n    Go to the last emoji.\n\n[[accept-emoji]]To accept the selected emoji, 👇:\n\n**Enter**::\n    Accept the selected emoji with the default skin tone\n    (if applicable).\n\n**F1**, **F2**, **F3**, **F4**, **F5**::\n    If the selected emoji supports skin tones, accept the selected\n    emoji with a light, medium-light, medium, medium-dark, or dark\n    skin tone.\n\nTo cancel, 👇 **Escape** or close the 🪟.\n\n\n=== Go to Emojipedia page\n\nTo go to the https://emojipedia.org/[Emojipedia] 📃 of the\n\u003c\u003cselect,selected\u003e\u003e emoji, 👇 **F12**.\n\nTo go to the Emojipedia 📃 of any emoji with the 🖱, right-click it and\nclick \"`Go to Emojipedia page`\".\n\n[[cl-options]]\n=== Command-line options\n\n[[opt-f]]`-f _FMT_`::\n    Set the output format to `_FMT_`:\n+\n--\n`utf-8` (default)::\n    UTF-8 emoji.\n\n`cp`::\n    Space-separated Unicode codepoints (hexadecimal).\n+\nExample: `1f645 200d 2642 fe0f`\n--\n\n[[opt-p]]`-p _PREFIX_`::\n    Set the prefix to be prepended to each Unicode codepoint.\n+\nFor example, with `-f cp` and `-p U+`: `U+1f645 U+200d U+2642 U+fe0f`.\n\n`-n`::\n    Do not 🖨 a newline after 🖨 the emoji or codepoints.\n\n[[opt-c]]`-c _CMD_`::\n    When you accept an emoji, execute command `_CMD_` 20{nbsp}ms\n    _after_ closing the jome 🪟.\n+\njome interprets `_CMD_` like a 🐚 does, so you can have arguments\ntoo.\n+\n`_CMD_` receives the UTF-8 emoji or the Unicode codepoints (depending on\nthe \u003c\u003copt-f,`-f`{nbsp}option\u003e\u003e) with their optional prefix as its last\nargument(s).\n+\nExamples with https://www.semicomplete.com/projects/xdotool/[xdotool]:\n+\n----\n$ jome -c 'xdotool type'\n$ jome -f cp -p U -c 'xdotool key --delay 20'\n----\n\n[[opt-b]]`-b`::\n    When you accept an emoji, copy the UTF-8 emoji or the Unicode\n    codepoints (depending on the \u003c\u003copt-f,`-f`{nbsp}option\u003e\u003e) to the 📋.\n\n[[opt-q]]`-q`::\n    Do not quit when you \u003c\u003caccept-emoji,accept\u003e\u003e an emoji.\n+\nBy default, when you accept an emoji (with the ⌨️ or with the 🖱), jome:\n+\n--\n. 🖨 the accepted emoji or its codepoints to the standard output.\n. Hides its 🪟.\n. **Optional**: Copies the accepted emoji/codepoints to the\n  clipboard (see the \u003c\u003copt-b,`-b`{nbsp}option\u003e\u003e).\n. **Optional**: Executes a command (see the \u003c\u003copt-c,`-c`{nbsp}option\u003e\u003e)\n  after 20{nbsp}ms.\n. **If not running in server mode**, quits (see the\n  \u003c\u003copt-s,`-s`{nbsp}option\u003e\u003e).\n--\n+\nWith the `-q`{nbsp}option, jome does not hide its 🪟 and does not quit\nwhen you accept an emoji so that you can make it 🖨 multiple emojis\nand/or execute a command multiple ⏲ with multiple emojis without\nrestarting the application.\n+\nYou cannot specify the `-q` and \u003c\u003copt-s,`-s`\u003e\u003e{nbsp}options at the same\n⏲.\n\n[[opt-s]]`-s _NAME_`::\n    Start jome in \u003c\u003cserver-mode,server mode\u003e\u003e and set the server name\n    to `_NAME_`.\n+\nOn Unix, this creates the socket 📄 `/tmp/_NAME_` which must _not exist_\nbefore you start jome.\n+\nYou cannot specify the `-s` and \u003c\u003copt-q,`-q`\u003e\u003e{nbsp}options at the same\n⏲.\n\n[[opt-d]]`-d`::\n    Use a dark background for emojis.\n\n[[opt-w]]`-w _WIDTH_`::\n    Set the width of individual emojis to `_WIDTH_`{nbsp}pixels, amongst\n    16, 24, 32 (default), 40, or 48.\n\n\n[[server-mode]]\n=== Server mode\n\njome features a server mode to avoid creating a process (a Qt 🪟 can\nbe quite long to create) every ⏲ you need to pick an emoji. With this\nmode, you can 👁 the jome 🪟 instantaneously.\n\nTo start jome in server mode, use the \u003c\u003copt-s,`-s`{nbsp}option\u003e\u003e to\nspecify the server name:\n\n----\n$ jome -s mein-server\n----\n\nThis creates a local server named `mein-server`. On Unix, it creates the\nsocket 📄 `/tmp/mein-server`.\n\n[IMPORTANT]\n--\nOn Unix, the server mode won't work if the socket 📄\nalready exists. Remove the 📄 before you start jome in server mode:\n\n----\n$ rm -f /tmp/mein-server\n$ jome -s mein-server\n----\n--\n\nWhen jome starts in server mode, it does not 👁 its 🪟. Instead,\nit ⌛ for a command sent by the client, `jome-ctl`. To 👁 the\n🪟:\n\n----\n$ jome-ctl mein-server\n----\n\nWhen you \u003c\u003caccept-emoji,accept\u003e\u003e an emoji, `jome-ctl` 🖨 what jome\nalso 🖨 to the standard output and quits with exit code 0️⃣.\nTherefore, the output format of `jome-ctl` is 🎛 by the\n\u003c\u003ccl-options,options\u003e\u003e passed to `jome`.\n\nIf you cancel jome (press **Escape** or close the 🪟), `jome-ctl`\n🖨 nothing and returns with exit code 1️⃣.\n\nIn server mode, jome does not quit once you accept an emoji or cancel:\nit hides the 🪟 and keeps 👂. To make it quit gracefully,\nwhich also removes the socket 📄:\n\n----\n$ jome-ctl mein-server quit\n----\n\nYou don't need to use what `jome-ctl` 🖨 to the standard output. You can\nuse jome in server mode with the \u003c\u003copt-c,`-c`{nbsp}option\u003e\u003e to make jome\nexecute a command itself. For example:\n\n----\n$ rm -f mein-server\n$ jome -s mein-server -c 'xdotool type'\n----\n\nThen, bind a ⌨️ shortcut to:\n\n----\n$ jome-ctl mein-server\n----\n\n\n== ⌨️ the accepted emoji\n\nHere are Bash 📜 to ⌨️ the accepted emoji with\nhttps://www.semicomplete.com/projects/xdotool/[xdotool].\n\n\n=== Non server mode\n\nWith `xdotool key`::\n+\n[source,bash]\n----\n#!/usr/bin/bash\n\ncodepoints=\"$(jome -f cp -p U)\"\n\nif [ $? -ne 0 ]; then\n    exit 1\nfi\n\nxdotool key --delay 20 $codepoints\n----\n\nWith `xdotool type`::\n+\n[source,bash]\n----\n#!/usr/bin/bash\n\nemoji=\"$(jome)\"\n\nif [ $? -ne 0 ]; then\n    exit 1\nfi\n\nxdotool type \"$emoji\"\n----\n\n\n=== Server mode\n\nWith `xdotool key`::\n+\n[source,bash]\n----\n#!/usr/bin/bash\n\nsocket_name=\"jome.socket.$(id -u)\"\n\nif ! pidof jome \u0026\u003e/dev/null; then\n    rm -f \"/tmp/$socket_name\"\n    jome -s \"$socket_name\" -f cp -p U -c 'xdotool key --delay 20' \u0026 disown\n\n    while [ ! -e \"/tmp/$socket_name\" ]; do\n        sleep .1\n    done\nfi\n\njome-ctl \"$socket_name\"\n----\n\nWith `xdotool type`::\n+\n[source,bash]\n----\n#!/usr/bin/bash\n\nsocket_name=\"jome.socket.$(id -u)\"\n\nif ! pidof jome \u0026\u003e/dev/null; then\n    rm -f \"/tmp/$socket_name\"\n    jome -s \"$socket_name\" -c 'xdotool type' \u0026 disown\n\n    while [ ! -e \"/tmp/$socket_name\" ]; do\n        sleep .1\n    done\nfi\n\njome-ctl \"$socket_name\"\n----\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feepp%2Fjome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feepp%2Fjome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feepp%2Fjome/lists"}