Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Emoji, unicode and general character picker for rofi and rofi-likes

License

NotificationsYou must be signed in to change notification settings

fdw/rofimoji

Repository files navigation

Do you want to use one of those fancy emojis? Or one of those other interesting characters Unicode offers? But you haven't found a good picker yet?

Fear no more,rofimoji invokes the power ofrofi (andother dmenu-derivatives) to give you exactly the picker you always wanted.

Main features

How does it look?

Default

Screenshot of rofimoji

Screenshot of rofimoji with a grid theme

Usage

Standalone

Callrofimoji as a standalone tool.

  1. Runrofimoji
  2. Search for the character you want
  3. (optional) Select multiple emoji withshift+enter
  4. Hitenter to for the default action or use one of theshortcuts to do something else.
    alt+1 directly chooses the most most recently used character (alt+2 for the second most recently one etc.)
  5. Maybe select a skin color
  6. 🦾

As a rofi mode

Integraterofimoji as just another rofi mode.

  1. Call rofi withrofi -modi "emoji:rofimoji" -show emoji
  2. Search for the character you want
  3. Hitenter to execute your default action;
    Alt+Shift+1 for copying to the clipboard
    Alt+Shift+3 for the "clipboard" insertion method
    alt+1 inserts the most recently used character (alt+2 for the second most recently one etc.)
  4. Maybe select a skin color
  5. 🐉

Caveats when runningrofimoji as a rofi mode

There are some limitations to this approach, though:Running as rofi mode has several drawbacks that cannot be changed:

  • Becauserofi is the main process,rofimoji cannot directly type to any window. Only copying the character works, so set the--action accordingly.
  • You can only select one character at a time.
  • The custom keyboard shortcuts are still there, but mapped toAlt+Shift+1 (on a Qwerty keyboard) etc.

The configuration still works as described. You can have several modes in acombi for different character sets, for example, or set a default action and skin tone.

Configuration

You can configurerofimoji either with cli arguments or with a config file called$XDG_CONFIG_HOME/rofimoji.rc. For the file, use the long option names without double dashes.

Options

long optionshort optionpossible valuesdefault valuedescription
--action-atype,copy,clipboard,unicode,copy-unicode,print,menutypeChoose whatrofimoji should do with the selected characters. SeeActions below for details.
--files-fall,<yourfile> orany of the files indataemojisDefine which file(s) to load characters from. A file name without extension (f.e.emojis_smileys_emotion) is enough for the distributed ones or any in${XDG_DATA_HOME}/rofimoji/data. Globbing with* is possible.
all is a shortcut for all default files at once. Use with caution, that is alot.
--skin-tone-slight,medium-light,moderate,dark brown,black, as well asneutral andaskaskDefine the skin tone of supporting emojis.ask will always ask the user.
--max-recent0-1010Show at most this many recently picked characters. The number will be capped at 10. Set to0 to disable the whole feature.
--no-frecency
(no-frecency=True in the config file)
-<false>By default,rofimoji shows frequently used items first. With this option, they're shown in the order of the file.
--hidden-descriptions
(hidden-descriptions=True in the config file)
-<false>Only list the characters, but not their description. This is useful forgrid themes inrofi. Note that they're still searchable, even though the description is not shown. Not used with other selectors.
--use-iconsfalseShow characters as icons inrofi. Not used for other selectors.
--prompt-rany string😀Define the prompt text forrofimoji.
--selector-argsDefine arguments thatrofimoji will pass through to the selector.
Please note that you need to specify it as--selector-args="<selector-args>" or--selector-args " <selector-args>" because of abug in argparse
--selectorrofi,wofi,fuzzel,dmenu,tofi,bemenu,wmenu(automatically chosen)Show the selection dialog with this application.
--clipboarderxsel,xclip,wl-copy(automatically chosen)Access the clipboard with this application.
--typerxdotool,wtype(automatically chosen)Type the characters using this application.
--keybinding-copy,--keybinding-type,--keybinding-clipboard,--keybinding-unicode,--keybinding-copy-unicodeAlt+c,Alt+t,Alt+p,Alt+u,Alt+iChoose different keybindings than the default values.

Example config file

~/.config/rofimoji.rc:

action = copyfiles = [emojis, math]skin-tone = moderate

Actions

The--action (-a) option defines what action will be taken when a character is selected. Multiple actions can be specified with a space character in between (for example:-a type copy).The options are:

nameshortcutdescription
typealt+tDirectly type the characters into the last active window. This is thedefault
copyalt+cCopy them to the clipboard.
clipboardalt+pInsert the selected characters through pasting from the clipboard, instead of directly typing them. SeeInsertion Method.
unicodealt+uType the unicode codepoints of the selected characters.
copy-unicodealt+iCopy the codepoints to clipboard.
printPrint the chosen characters tostdout.

Insertion method

By default,rofimoji types the characters using eitherxdotool orwtype (seedisplay server support). You can enforce this behavior with--action type (-a type).

For some applications (f.e. Firefox), this does not work reliably. To work around this,rofimoji can copy the emojis to your clipboard and insert them from there withshift+insert. Afterwards, it will restore the previous contents.Unfortunately, it depends on the receiving application whethershift+insert uses the clipboard or the primary selection.Therefore,rofimoji uses both and also restores both.To use this workaround, you can either use the keybindingalt+p or start it asrofimoji --action clipboard (-a clipboard).If you want to have it directly typed instead, you can hitalt+t, even though it was started with--action clipboard. Note that you canchange the keybindings.

Finally, with--action copy (or-a copy) you can also tellrofimoji to only copy the selected characters to your clipboard.

Display server support

rofimoji supports both X11 and Wayland by using the correct tools for each environment (seeSupported Selectors). It tries to automatically choose the right one for the currently running session.If you want to manually overwrite this, have a look at the--selector,--clipboarder and--typer optionsabove.

Most recently used characters

By default,rofimoji will show the last ten recently used characters separately; you can insert them withalt+1,alt+2 and so on. It will use the defaultinsertion method.If you don't want this, you can set--max-recent to0.

Additionally,rofimoji also remembers in general which characters are used more frequently and sorts the list accordingly. You can disable this behavior with--no-frecency.

Rofi theming

By default,rofimoji re-uses the existing rofi configuration, but you can pass your own using--selector-args (for example--selector-args="-theme ~/your-rofi-theme.rasi").

If you would like a more character-focused theme, you can use packagedgrid.rasi together with the--hidden-descriptions parameter. This theme still imports the existingrofi configuration but moves the entries into a grid. Of course, you can base your own theme on this. (If you have improvements, please open a PR!)To use the arrow keys inrofi only for the grid and not the query, pass these-selector-args:-kb-row-left Left -kb-row-right Right -kb-move-char-back Control+b -kb-move-char-forward Control+f.

Screenshot of rofimoji with a grid theme

Supported characters

If you miss something, please open an issue!

Custom character files and descriptions

If the predefined ones are not enough, you can define additional character files and load them with-f (seeoptions). In each line, one 'character' can be defined, followed by a single space character (). After that, you can write whatever description you want.

If the character is also in another selected file, all descriptions will be combined. If you give it the same name as one of those included withrofimoji, yours will be preferred.

For added comfort,rofimoji will automatically load an "additional" file for predefined ones. This file needs to called<filename>.additional.csv and lie in${XDG_DATA_DIR}/rofimoji/data/. For example, if you want to extendemojis_smileys_emotion, call the fileemojis_smileys_emotions.additional.csv. This is helpful if you want additional descriptions: You can define such an additional character file, add the character and your description and your descriptions will now also be shown.

If you think your file is useful to others, please open a PR to include it in a future version ofrofimoji.

Installation

From distribution repositories

Packaging status

From PyPI

rofimoji is onPyPI. You can install it withpipx install rofimoji (orsudo pipx install rofimoji).

From Github

Download the wheel file of thelatest release and install it withsudo pip install $filename (or you can usepip install --user $filename to only install it for the local user).Afterwards, there should be arofimoji on your$PATH.This also installs the python dependencyconfigargparse.

Dependencies

What else do you need:

  • Python 3.8 or higher
  • A font that can display your scripts, (for emojis,EmojiOne orNoto Emoji work)
  • Optionally, a tool to programmatically type characters into applications. Eitherxdotool for X11 orwtype for Wayland
  • Optionally, a tool to copy the characters to the clipboard.xsel andxclip work on X11;wl-copy on Wayland

Supported Selectors

Please note that several advanced features are only supported byrofi (both on X and Wayland):

  • custom keyboard shortcuts
  • --use-icons and--hidden-descriptions, and thus a grid theme
  • multiple selections
  • recently used characters

All other selectors can be used for the basic functionality.

X.org

Wayland


[8]ページ先頭

©2009-2025 Movatter.jp