jome π
jome (johΒ·mee) is a β¨οΈ centric emoji picker π₯οΈ application.
You can also pick an emoji with the π±οΈ, donβt worry.
jome has all the emojis of β¬οΈ to Emoji 16.0, including with skin tones.
Iβm not a fan of the usual very broad categories of emojis which do not intersect so I made my own categories. A given emoji can be found in more than 1οΈβ£ category. For example, π¦ is found in both the animals (no faces) and water categories. I find that itβs easier to π by theme than by very general category. Feel π to suggest more categories.
jome is currently only tested on π§.
Preview
- Default view
- π mode
- Specific category
- π emojis matching βpalmβ
- π emojis matching βwomβ
- π emojis matching βwomβ and βfactβ
- π all emojis of the transportation category
- π emojis matching βboaβ within the transportation category
- π emojis matching βboaβ and βsaβ within the transportation category
- If you prefer a minimal look
-
This is
π jome
You need:
-
CMake β₯ 3.30.0
-
A C++14 compiler
-
Boost β₯ 1.70 (only to π)
-
JSON for Modern C++ (only to π, automatically π₯ by CMake if not found locally)
-
{fmt} (only to π, automatically π₯ by CMake if not found locally)
-
Qt 5 (Core, GUI, Widgets, and Network modules)
π jome
$ mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=release .. && make -j$(nproc)
|
Note |
You need to install jome for it to find the correct data π. If you
donβt want to install it on your system, use
-DCMAKE_INSTALL_PREFIX=path/to/install/directory when you run cmake.
|
Usage
jomeβs purpose is to help you pick an emoji. In other words, it
doesnβt really care what you do with the chosen emoji afterwards: you
can leverage π οΈ such as xdotool(1) to βtypeβ it or xsel(1)
to copy it to the π. See β¨οΈ the β
emoji
and the -c option for a starting point.
When you β
an emoji (with the β¨οΈ or with the π±οΈ),
jome π¨οΈ the UTF-8 emoji or the Unicode codepoints (π the
-f option), with an optional prefix (π the
-p option) for each codepoint, to the standard output.
Additionally, jome can:
-
Copy the UTF-8 emoji or the Unicode codepoints to the π. π the
-boption. -
Execute a custom command which π¨ the UTF-8 emoji or the Unicode codepoints, with an optional prefix for each codepoint, as its last argument(s). π the
-coption. -
Send the UTF-8 emoji or the Unicode codepoints, with an optional prefix for each codepoint, in response to a client which requested picking an emoji. π the
-soption.
If you close the πͺ (you can π Escape or Ctrl+C to do this), then jome π¨οΈ nothing to the standard output and executes nothing.
If you donβt start jome in server mode
(-s option) and you donβt specify the
-q option, then jome immediately π after you β
an emoji or close the πͺ.
Graphical interface
There are 4οΈβ£ sections:
- π box (β¬οΈ)
-
Input box where you can β¨οΈ a query to π emojis.
- Emoji grid
-
All emojis (with an empty π box) or π results.
When thereβs at least 1οΈβ£ emoji, thereβs always a selected emoji with a π² box around it.
π±οΈ an emoji to β it. Press Shift when clicking to donβt π¨οΈ VS-16 codepoints (see the
-Voption).Hover an emoji to update the β¬οΈ emoji info text temporarily.
Make the background behind emojis π with the
-doption.π the category π·οΈ with the
-Loption.π the βRecentβ category with the
-Roption. - Category π
-
π of available categories.
When all emojis are ποΈ (the π box is empty), π±οΈ a category name to scroll to this emoji category.
The first category, βRecentβ, is a special category with the recently β emojis.
Use the
-Hoption to override the maximum number of recently β emojis.π the βRecentβ category with the
-Roption.π the whole category π with the
-Coption. - Emoji info text (β¬οΈ)
-
Name, Unicode codepoints, Emoji standard version, and keywords of the selected or hovered emoji.
π the keyword list π with the
-koption.
π emojis
The power of jome is its π box.
When you launch jome, the π box is focused, and it should stay focused unless you browse emojis manually with the intention of β one with the π±οΈ.
The format of a query is 1οΈβ£ of:
-
TERMS -
CAT/ -
CAT/TERMS -
CODEPOINT -
CAT/CODEPOINT
where:
CAT-
Partial name of categories in which to π.
TERMS-
Space-separated π of π terms.
For an emoji to be part of the results, its name and keywords must contain all the π terms.
CODEPOINT-
A single Unicode codepoint using the standard
U+ABCDnotation.
Everything is πΌ-insensitive.
Select and β an emoji
To select an emoji, use the following β¨οΈ:
- β¬ οΈ, β‘οΈ, β¬οΈ, β¬οΈ
-
Go β¬ οΈ/β‘οΈ/β¬οΈ/β¬οΈ.
- Ctrl+β¬ οΈ, Ctrl+β‘οΈ
-
Go β¬ οΈ/β‘οΈ 5οΈβ£ emojis.
- Page β¬οΈ, Page β¬οΈ
-
Go β¬οΈ/β¬οΈ 10 rows.
- Home
-
Go to the first emoji.
- End
-
Go to the last emoji.
To β the selected emoji, π:
- Enter
-
β the selected emoji with, if applicable:
- Without the
-toption -
No skin tone (π‘).
- With the
-toption -
The default skin tone (value of
-t).
- Without the
- Shift+Enter
-
Like Enter, but do not π¨οΈ VS-16 codepoints.
See the
-Voption option. - F1
- F2
- F3
- F4
- F5
-
If the selected emoji supports skin tones, β the selected emoji with a light, medium-light, medium, medium-dark, or dark skin tone, overriding the
-toption (if any). - Shift+F1
- Shift+F2
- Shift+F3
- Shift+F4
- Shift+F5
-
Like F1 to F5, but do not π¨οΈ VS-16 codepoints.
See the
-Voption option.
To β, π Escape or Ctrl+C, or close the πͺ.
Go to Emojipedia page
To go to the Emojipedia π of the selected emoji, π F12.
To go to the Emojipedia π of any emoji with the π±οΈ, right-click it and click βGo to Emojipedia pageβ.
π€-defined emoji keywords
You can either replace or β the built-in π of keywords which jome searches when π emojis.
To set π€-defined keywords, create an emojis.json π within:
| On π§ |
|
| On π |
|
| On πͺ |
|
emojis.json must contain a JSON object where π are emojis and
values are objects. Each value may contain one of:
keywords-
An array of keywords which replaces the built-in keywords entirely for this emoji.
extra-keywords-
An array of keywords which β either the built-in keywords or the keywords of the
keywordsentry for this emoji.
Example:
{
"π": {
"extra-keywords": ["canada", "laurentides"]
},
"π": {
"keywords": ["yay", "hourra"]
},
"π¬": {
"extra-keywords": ["claude poirier"]
},
"π«": {
"extra-keywords": ["canada dry", "martin deschamps"]
}
}Server mode
jome features a server mode to avoid creating a process (a Qt πͺ can be quite long to create) every β you need to pick an emoji. With this mode, you can ποΈ the jome πͺ instantaneously.
To start jome in server mode, use the -s option to
specify the server name:
This creates a local server named mein-server. On Unix, it creates the
socket π /tmp/mein-server.
|
Important |
On Unix, the server mode wonβt work if the socket π already exists. Remove the π before you start jome in server mode: $ rm -f /tmp/mein-server $ jome -s mein-server |
When jome starts in server mode, it doesnβt ποΈ its πͺ. Instead,
it β for a command sent by the client, jome-ctl. To ποΈ the
πͺ:
When you β
an emoji, jome-ctl π¨οΈ what jome
also π¨οΈ to the standard output and π with exit code 0οΈβ£.
Therefore, the output format of jome-ctl is π by the
options passed to jome.
If you β jome (π Escape or Ctrl+C, or
close the πͺ), jome-ctl π¨οΈ nothing and returns with exit code 1οΈβ£.
In server mode, jome doesnβt π once you β an emoji or β: it π the πͺ and keeps π. To make it π gracefully, which also removes the socket π:
$ jome-ctl mein-server quit
You donβt need to use what jome-ctl π¨οΈ to the standard output. You can
use jome in server mode with the -c option to make jome
execute a command itself. For example:
$ rm -f /tmp/mein-server $ jome -s mein-server -c 'xdotool type'
Then, bind a β¨οΈ shortcut to:
Command-line options
| Option | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
||||||||||
|
|||||||||||
|
Do not π¨οΈ a newline after π¨οΈ the emoji or codepoints. |
||||||||||
|
Do not π¨οΈ Variation Selector-16 (VS-16) codepoints. VS-16 is a suffix codepoint which specifies that the preceding character should be displayed with emoji presentation. For example, β₯ (which predates Unicode emojis) followed with VS-16 becomes β₯οΈ. There are applications/fonts which donβt like VS-16. |
||||||||||
|
Set the default skin tone to
The F1 to F5 keys still β an emoji with a specific skin tone. |
||||||||||
|
When you β
an emoji, execute the command jome interprets
Examples with xdotool: $ jome -c 'xdotool type' $ jome -f cp -p U -c 'xdotool key --delay 20' |
||||||||||
|
When you β
an emoji, copy the UTF-8 emoji or the Unicode
codepoints (depending on the
|
||||||||||
|
Do not π when you β an emoji. By default, when you β an emoji (with the β¨οΈ or with the π±οΈ), jome: With the You cannot specify the |
||||||||||
|
Start jome in server mode and set the server name
to On Unix, this creates the socket π You cannot specify the |
||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
|||||||||||
|
β¨οΈ the β emoji
Here are Bash π to β¨οΈ the β emoji with xdotool.
Direct mode
- With
xdotool key -
#!/usr/bin/bash codepoints=$(jome -f cp -p U) if (($? != 0)); then exit 1 fi xdotool key --delay 20 "$codepoints"
- With
xdotool type -
#!/usr/bin/bash emoji=$(jome) if (($? != 0)); then exit 1 fi xdotool type "$emoji"
Server mode
- With
xdotool key -
#!/usr/bin/bash socket_name=jome.socket.$(id -u) if [[ ! -e "/tmp/$socket_name" ]]; then jome -s "$socket_name" -n -w48 -f cp -p U & disown until [[ -e "/tmp/$socket_name" ]]; do sleep .1 done fi codepoints=$(jome-ctl "$socket_name") if (($? == 0)); then sleep .02 xdotool key --delay 20 "$codepoints" fi
- With
xdotool type -
#!/usr/bin/bash socket_name=jome.socket.$(id -u) if [[ ! -e "/tmp/$socket_name" ]]; then jome -s "$socket_name" -n -w48 & disown until [[ -e "/tmp/$socket_name" ]]; do sleep .1 done fi emoji=$(jome-ctl "$socket_name") if (($? == 0)); then sleep .02 xdotool type "$emoji" fi









