Skip to main content

Emoji searcher for use with fzf

Project description

GitHub Workflow Status PyPI version PyPI pyversions License: MIT

emoji-fzf

Small utility for manipulating emojis via fzf's --preview hook!

Installation

  1. Install fzf if you don't have it already to use its preview browser:

    https://github.com/junegunn/fzf#installation

  2. Install the latest release of emoji-fzf from pypi:

    pip install emoji-fzf
    

See emoji-fzf --help for supported commands.

This project allows you to install the tool in an isolated environment: https://github.com/pipxproject/pipx

zsh plugin

There's an excellent zsh plugin available, see here (thanks @pschmitt !): https://github.com/pschmitt/emoji-fzf.zsh

Manually

Shell alias

You could add a shell alias like the following to your shell init script:

# if you aren't installing to a virtual env, you may need to add this to path
# (if it wasn't already) to access the tool from a pip installation
export PATH=$PATH:~/.local/bin

# add me to your ~/.bashrc or ~/.zshrc or whatnot
alias emoj="emoji-fzf preview | fzf -m --preview "emoji-fzf get --name {1}" | cut -d " " -f 1 | emoji-fzf get"
# to copy to xclip system keyboard (on mac use pbcopy) after selecting
emoj | xclip -selection c

vim

You can also add the following to a ~/.vimrc file (apologies for the kludgy vimscript, I'm not great at it), to enable C-e to open the emoji picker and insert the selected emoji:

" Use emoji-fzf and fzf to fuzzy-search for emoji, and insert the result
function! InsertEmoji(emoji)
    let @a = system('cut -d " " -f 1 | emoji-fzf get', a:emoji)
    normal! "agP
endfunction

command! -bang Emoj
  \ call fzf#run({
      \ 'source': 'emoji-fzf preview',
      \ 'options': '--preview ''emoji-fzf get --name {1}''',
      \ 'sink': function('InsertEmoji')
      \ })
" Ctrl-e in normal and insert mode will open the emoji picker.
" Unfortunately doesn't bring you back to insert mode 😕
map <C-e> :Emoj<CR>
imap <C-e> <C-o><C-e>

Alternative setup

If you prefer not to use fzf's preview feature and have the emojis appear before their aliases you can use the following alias instead:

alias emoj="emoji-fzf preview --prepend | fzf | awk '{ print \$1 }'"

Custom emoji aliases

emoji-fzf uses a pre-defined set of aliases for every emoji. If you want to define your own, ie add custom aliases for some emojis you can do this via the --custom-aliases flag.

Please note that these aliases will be appended to the list of pre-defined aliases and not replace them.

  1. First you need to create a JSON file with the following structure:

    [
      {
        "👍": ["my-custom-alias", "good-boy"]
      },
      {
        "💯": ["epic-victory-royale"]
      }
    ]
    
  2. Now you can call emoji-fzf like so:

    emoji-fzf --custom-aliases /path/to/your-custom-aliases.json preview
    

Development/testing

This uses a Dockerfile to keep the test build environment relatively clean and locked. The full test infrastructure is:

  • Docker container
  • tox to run the tests + build checks
  • pre-commit to run isort, black, etc.
  • check-wheel-contents for built wheel sanity

To run the test suite in docker just as CI does:

./test.sh

Publishing

This just uses old timey setuptools:

python setup.py sdist bdist_wheel

Use twine to upload to pypi.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emoji_fzf-0.10.0.tar.gz (78.9 kB view details)

Uploaded Source

Built Distribution

emoji_fzf-0.10.0-py2.py3-none-any.whl (72.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file emoji_fzf-0.10.0.tar.gz.

File metadata

  • Download URL: emoji_fzf-0.10.0.tar.gz
  • Upload date:
  • Size: 78.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for emoji_fzf-0.10.0.tar.gz
Algorithm Hash digest
SHA256 6c3acf082e418e4217ced8eb8d04f5b1ceade64522d9935122db9599944a6569
MD5 3bd090bd642eff26afe6f3a4abf292f4
BLAKE2b-256 424e7ef22e6e4d75ccd25689039b31200ce91db1f86356de26baabf5935efb5c

See more details on using hashes here.

File details

Details for the file emoji_fzf-0.10.0-py2.py3-none-any.whl.

File metadata

  • Download URL: emoji_fzf-0.10.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 72.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for emoji_fzf-0.10.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b67aaa80694791929593e66b0fa5c6ae676d810cdb66830f49a8d70511179cbc
MD5 10d3484e4191702c8bcaaaf52c73a9ea
BLAKE2b-256 800c31e0c2beb87f27173d37c07541fb28b8967c079968f65f5f9b04064b5565

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page