table of contents
| JOME(1) | JOME | JOME(1) |
NAME¶
jome - a keyboard centric desktop emoji picker
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:
See the -b option.
See the -c option.
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)
Emoji grid
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)
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)
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:
where:
CAT
TERMS
For an emoji to be part of the results, its name and keywords must contain ALL the searched terms.
CODEPOINT
Everything is case-insensitive.
Select and accept an emoji¶
To select an emoji, use the following keys:
←, →, ↑, ↓
Ctrl+←, Ctrl+→
Page ↑, Page ↓
Home
End
To accept the selected emoji, press:
Enter
Without the -t option
With the -t option
Shift+Enter
See the -V option option.
F1 to F5
Shift+F1 to Shift+F5
See the -V option 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
extra-keywords
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¶
Output¶
-f FMT
utf-8 (default)
cp
Example: 1f645 200d 2642 fe0f
Prepend a prefix to each codepoint with the -p option.
-p PREFIX
For example, with -f cp and -p U+:
U+1f645 U+200d U+2642 U+fe0f
-n
-V
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 a red heart.
There are applications/fonts which don’t like VS-16.
-t TONE
L
ML
M
MD
D
The F1 to F5 keys still acept an emoji with a specific skin tone.
Action¶
-c CMD
jome interprets CMD like a shell does, so you can have arguments too.
CMD receives the UTF-8 emoji or the Unicode codepoints (depending on the -f option) with their optional prefix as its last argument(s).
Examples with xdotool:
$ jome -c 'xdotool type' $ jome -f cp -p U -c 'xdotool key --delay 20'
-b
Warning
This uses QClipboard and is known not to always work,
depending on your window manager.
-q
By default, when you accept an emoji (with the keyboard or with the mouse), jome:
With the -q option, jome doesn’t hide its window and doesn’t quit when you accept an emoji so that 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 -q and -s options together.
-s NAME
On Unix, this creates the socket file /tmp/NAME which must NOT exist before you start jome.
You cannot specify the -s and -q options together.
User interface¶
-d
-C
-L
-R
-r
In this case, jome shows the recently accepted emojis first within the result grid.
-k
-w WIDTH
-P PERIOD
The selection box doesn’t flash by default.
-H COUNT
FILES¶
~/.config/jome/emojis.json
See the “User-defined emoji keywords” section above.
EXIT STATUS¶
0 when you accept an emoji or 1 otherwise.
ABOUT¶
jome was originally written by and is maintained by, as of jome 1.4.1, Philippe Proulx (eepp).
GitHub project: ⟨https://github.com/eepp/jome⟩.
SEE ALSO¶
| 14 April 2025 | JOME |