||3 years ago|
|README.md||3 years ago|
|font-awesome.txt||3 years ago|
|rofimoji.py||3 years ago|
|screenshot-fork.png||3 years ago|
|unicode.txt||3 years ago|
rofimoji (an emoji picker for rofi) with unicode search
This is a fork of rofimoji by fdw with the addition of over 25'000 unicode characters from /u/fe80c0ffee. Unicode characters are sorted to be shown first when invoking rofimoji. A .txt file with Awesome font from /u/Delearyus is supplied too, but not included by default; one can just copy/paste its content into
emoji_list = """ and
Recommended command line to run rofimoji from a keybinding:
python3 /path/to/rofimoji/rofimoji.py -s ask --rofi-args="-columns 2; -width 50%; -no-click-to-exit; -theme sidebar"
The theme used in the above screenshot is sidebar by qball, which can be selected as default using
rofi-theme-selector in terminal.
Alternative with rofi scripts: rofiemoji-rofiunicode (preferred)
Inspired by nkoehring/rofiemoji, the rofi script version of the above emoji-unicode-picker, matf/rofiemoji-rofiunicode is the combination of two rofi scripts to search emojis or unicode characters directly in rofi. Unicode characters and emojis show up as separate tabs when rofi is invoked. rofiemoji-rofiunicode does not allow multiple selection and requires using the clipboard, but the window can be customized further and it offers a solution unified with regular rofi. This is the version I use and therefore it is more likely to be updated.
Original README from fdw:
How often did you want to insert one of those Unicode emoji only to learn that there is no nice picker for Linux? Fear no more, this script uses the power of rofi to present exactly the picker you always wanted. Inserts the selected emoji directly, or copies it to the clipboard.
- Search for the emoji you want
- (optional) Select multiple emoji with
enterto insert the emoji directly
alt+cto copy it to the clipboard
alt+pcan be used to select a specific input method
- Maybe select a skin color
How does it look?
For some applications,
xdotool cannot type emojis (f.e. Firefox). To work around this,
rofimoji can copy the emojis to your clipboard and insert them from there with
shift+insert. Afterwards, it will restore the previous contents.
Unfortunately, it depends on the receiving application whether
shift+insert uses the clipboard or the primary selection. Therefore,
rofimoji uses both and also restores both 😐.
xdotool type. To choose to spam your clipboards, you can either use the keybinding
alt+p or start it as
rofimoji --use-clipboard (
-c). If you want to use typing, you can hit
alt+t, even though it was started with
You can choose a skin tone with the
-s) parameter. The available values are
black, as well as
ask to be shown the prompt (this is also the default).
If you have any arguments for rofi, you can make
rofimoji pass them through like this:
rofimoji --rofi-args="-columns 3".
You can also define your own set of emojis (or whatever) and use
rofimoji to pick them by providing the
-f) parameter. This could be helpful if you want them ordered in some way, only use a subset or if you want non-English descriptions.
A kind soul has packaged it as rofimoji. To, install, use
sudo pacman -Syu rofimoji.
rofimoji.py and move it somewhere on your path, for example
What else do you need:
- Python 3
- A font that can display emoji, for example EmojiOne or Noto Emoji
- xdotool for typing the emoji
- xsel to copy the emoji to the clipboard
For Ubuntu zesty:
sudo aptitude install fonts-emojione python3 rofi xdotool xsel
sudo pacman -Syu emoji-font python rofi xdotool xsel
Updating the emojis
This is only needed if a new Unicode version came out and you can't wait for the official update!
- Install Python 3 and
pip install -r requirements-dev.txt
extract_emojis.py- this downloads the complete list from https://unicode.org/emoji/charts-12.0/full-emoji-list.html, so don't do it too often!
- A new file
emojis.pyshould have been created. Open it and copy the contents
rofimoji.pyand replace the emoji list with the contents of
Why is it so pedestrian? Why not simply import from
Because now you only have to download one file, and it works Additionally, we need no separate I/O just to load the emojis. This is good, right?