JOME(1)
π jome(1) β a keyboard centric desktop emoji picker π
πΈ NAME πΈ
jome β a keyboard centric desktop emoji picker. That's the whole vibe, bestie. π
β¨ SYNOPSIS β¨
jome [-f cp [-p PREFIX]] [-n] [-V] [-t (L | ML | M | MD | D)]
[-c CMD] [-b] [-q | -s NAME]
[-d] [-C] [-L] [-R] [-k]
[-w (16 | 24 | 32 | 40 | 48)] [-P] [-H COUNT]
π DESCRIPTION π
jome (johΒ·mee) is a keyboard centric emoji picker desktop application.
jomeβs sole 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 tools such as xdotool(1) to βtypeβ it or xsel(1) to copy it to the clipboard. See the βType the accepted emojiβ section below and the -c option for a starting point.
When you accept an emoji (with the keyboard or with the mouse), jome prints the UTF-8 emoji or the Unicode codepoints (see the -f option), with an optional prefix (see the -p option) for each codepoint, to the standard output.
Additionally, jome can:
- Copy the UTF-8 emoji or the Unicode codepoints to the clipboard. See the
-boption. - Execute a custom command which sends the UTF-8 emoji or the Unicode codepoints, with an optional prefix for each codepoint, as its last argument(s). See 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. See the βServer modeβ section below.
If you close the window (you can press Escape or Ctrl+C to do this), then jome prints nothing to the standard output, executes nothing, and exits with status 1.
If you donβt start jome in server mode (-s option) and you donβt specify the -q option, then jome immediately exits with status 0 after you accept an emoji or close the window.
π Graphical interface π
There are four sections:
Find box (top)
Input box where you can type a query to find emojis.
Emoji grid
All emojis (with an empty find box) or find results.
When thereβs at least one emoji, thereβs always a selected emoji with a square box around it.
Click an emoji to accept it. Press Shift when clicking to not print VS-16 codepoints (see the -V option).
Hover an emoji to update the bottom emoji info text temporarily.
Make the background behind emojis dark with the -d option.
Hide the category labels with the -L option.
Hide the βRecentβ category with the -R option.
Category list (right)
List of available categories.
When all emojis are viewed (the find box is empty), click a category name to scroll to this emoji category.
The first category, βRecentβ, is a special category with the recently accepted emojis.
Override the maximum number of recently accepted emojis with the -H option.
Hide the βRecentβ category with the -R option.
Hide the whole category list with the -C option.
Emoji info text (bottom)
Name, Unicode codepoints, Emoji standard version, and keywords of the selected or hovered emoji.
Hide the keyword list with the -k option.
π Find emojis π
The power of jome is its find box (top).
When you launch jome, the find box is focused, and it should stay focused unless you browse emojis manually with the intention of accepting one with the mouse.
The format of a query is one of:
TERMSCAT/CAT/TERMSCODEPOINTCAT/CODEPOINT
where:
CATβ Partial name of categories in which to find.TERMSβ Space-separated list of search terms. For an emoji to be part of the results, its name and keywords must contain ALL the searched terms.CODEPOINTβ A single Unicode codepoint using the standardU+ABCDnotation.
Everything is case-insensitive.
π¦ Select and accept an emoji π¦
To select an emoji, use the following keys:
- β, β, β, β β Go left/right/up/down.
- Ctrl+β, Ctrl+β β Go left/right five emojis.
- Page β, Page β β Go up/down ten rows.
- Home β Go to the first emoji.
- End β Go to the last emoji.
To accept the selected emoji, press:
- Enter β Accept the selected emoji with, if applicable:
- Without the
-toption β No skin tone (βyellowβ). - With the
-toption β The default skin tone (value of-t).
- Without the
- Shift+Enter β Like Enter, but do not print VS-16 codepoints. See the
-Voption option. - F1 to F5 β If the selected emoji supports skin tones, accept the selected emoji with a light, medium-light, medium, medium-dark, or dark skin tone, overriding the
-toption (if any). - Shift+F1 to Shift+F5 β Like F1 to F5, but do not print VS-16 codepoints. See the
-Voption option.
To cancel, press Escape or Ctrl+C, or close the window.
π Go to Emojipedia page π
To go to the Emojipedia β¨https://emojipedia.org/β© page of the selected emoji, press F12.
To go to the Emojipedia page of any emoji with the mouse, right-click it and click βGo to Emojipedia pageβ.
π User-defined emoji keywords π
You can either replace or augment the built-in list of keywords which jome searches when you find emojis.
To set user-defined keywords, create an emojis.json file within ~/.config/jome/.
emojis.json must contain a JSON object where keys 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 augments either the built-in keywords or the keywords of thekeywordsentry 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 window can be quite long to create) every time you need to pick an emoji. With this mode, you can view the jome window instantaneously.
To start jome in server mode, use the -s option to specify the server name:
$ jome -s mein-server
This creates a local server named mein-server. On Unix, it creates the socket file /tmp/mein-server.
Important: On Unix, the server mode wonβt work if the socket file already exists. Remove the file 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 show its window. Instead, it waits for a command sent by the client, jome-ctl(1). To show the window:
$ jome-ctl mein-server
When you accept an emoji, jome-ctl(1) prints what jome also prints to the standard output and quits with exit code 0. Therefore, the options passed to jome(1) control the output format of jome-ctl(1).
If you cancel jome (press Escape or Ctrl+C, or close the window), jome-ctl(1) prints nothing and returns with exit code 1.
In server mode, jome doesnβt quit once you accept an emoji or cancel: it hides the window and keeps listening. To make it quits gracefully, which also removes the socket file:
$ jome-ctl mein-server quit
You donβt need to use what jome-ctl(1) prints 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 keyboard shortcut to:
$ jome-ctl mein-server
π Type the accepted emoji π
Here are Bash scripts to type the accepted emoji with xdotool(1).
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
β¨ OPTIONS β¨
Okay bestie, this is the part where you tell jome how to talk, how to act, and how to look. Every flag is a little lewk. π
π Output π
-f FMTβ choose the output format,FMT, and here are your options:utf-8(the default) β gives you straight-up UTF-8 emoji. π¦cpβ spits out space-separated Unicode codepoints in hexadecimal. β¨ Example:
1f645 200d 2642 fe0f
You can prepend a prefix to each codepoint with the -p option.
-p PREFIXβ set the prefix that gets prepended to each Unicode codepoint when you use-f cp. For example, with-f cpand-p U+:
U+1f645 U+200d U+2642 U+fe0f
-nβ do not print a newline after printing the emoji or codepoints. No extra line break, periodt. π-Vβ do not print Variation Selector-16 β¨https://emojipedia.org/variation-selector-16β© (VS-16) codepoints. So what is VS-16? It's a suffix codepoint that says βhey, display the character before me with emoji presentation.β Like, β₯ (which predates Unicode emojis) plus VS-16 becomes a red heart. But some apps and fonts are not fans of VS-16, so this flag is your escape hatch.-t TONEβ set the default skin tone toTONEinstead of none:Lβ Light.MLβ Medium-light.Mβ Medium.MDβ Medium-dark.Dβ Dark. The F1 to F5 keys still acept an emoji with a specific skin tone. π
π¬ Action π¬
-c CMDβ when you accept an emoji, run the commandCMD20 ms after the jome window closes. jome interpretsCMDthe way a shell does, so you can include arguments too.CMDreceives the UTF-8 emoji or the Unicode codepoints (depending on the-foption) with their optional prefix as its last argument(s). Examples withxdotool:
$ jome -c 'xdotool type'
$ jome -f cp -p U -c 'xdotool key --delay 20'
-bβ when you accept an emoji, copy the UTF-8 emoji or the Unicode codepoints (depending on the-foption) to the clipboard.
Warning β This uses QClipboard and is known not to always work, depending on your window manager. π
-qβ do not quit when you accept an emoji. By default, when you accept an emoji (with the keyboard or with the mouse), jome does this little routine:- Prints the accept emoji or its codepoints to the standard output.
- Hides its window.
- Optional: Copies the accept emoji/codepoints to the clipboard (see the
-boption). - Optional: Executes a command (see the
-coption) after 20 ms. - If not running in server mode, quits (see the
-soption). With the-qoption, jome doesnβt hide its window and doesnβt quit when you accept an emoji, so you can make it print multiple emojis and/or execute a command multiple time with multiple emojis without restarting the application. π₯ You cannot specify the-qand-soptions together.
-s NAMEβ start jome in server mode and set the server name toNAME. On Unix, this creates the socket file/tmp/NAMEwhich must NOT exist before you start jome. β οΈ You cannot specify the-sand-qoptions together.
πΈ User interface πΈ
-dβ use a dark background for emojis.-Cβ hide the category list.-Lβ hide the category labels in the emoji grid.-Rβ hide the βRecentβ category.-rβ include the recently accepted emojis in the results when finding emojis. In this case, jome shows the recently accepted emojis first within the result grid. π-kβ hide the keyword list.-w WIDTHβ set the width of individual emojis toWIDTHpixels, amongst16,24,32(default),40, or48.-P PERIODβ set the flashing period of the selection box toPERIODms (greater than or equal to32). The selection box doesnβt flash by default.-H COUNTβ set the maximum number of recently accepted emojis toCOUNTinstead of30.
π FILES π
~/.config/jome/emojis.jsonβ User-defined emoji keywords. See the βUser-defined emoji keywordsβ section above.
πͺ EXIT STATUS πͺ
0 when you accept an emoji or 1 otherwise. Simple as that.
π ABOUT π
jome was originally written by and is maintained by, as of jome 1.5.0, Philippe Proulx (eepp).
GitHub project: β¨https://github.com/eepp/jomeβ©. π¦
π SEE ALSO π
jome-ctl(1) β go check it out, bestie. π
And that's the page, bestie! This one is JOME(1), source JOME, dated 14 April 2025. Go forth and emoji. πβ¨
π¦ where this page comes from
- ubuntu stonking: jome 1.5.0-1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms