Skip to main content

Emoji searcher for use with fzf

Project description

Code style: black 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, based on Ubuntu 20.04
  • 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

Building package for 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.9.0.tar.gz (54.5 kB view details)

Uploaded Source

Built Distribution

emoji_fzf-0.9.0-py2.py3-none-any.whl (51.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file emoji-fzf-0.9.0.tar.gz.

File metadata

  • Download URL: emoji-fzf-0.9.0.tar.gz
  • Upload date:
  • Size: 54.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for emoji-fzf-0.9.0.tar.gz
Algorithm Hash digest
SHA256 5c195439f82bee9e80febbd1cf9c9b2da0b707304c3cb8c5f8c35dfce4ff3b0e
MD5 277e625d3d6d5a52737b89b979fc7708
BLAKE2b-256 910a0d837eeea98d49e696468d7fc1d0ffeb1763a2e3e2a0a01c9d57a9b48ce8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: emoji_fzf-0.9.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 51.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for emoji_fzf-0.9.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 670a09c4e9f1d30cfa9e172bb7aba9a58423a19ae893c1ae8ac5bc977825f95d
MD5 a5b053a94196ddd308541d376dedf94f
BLAKE2b-256 431c48feef19ddb3510c683373e1758547f1a001418cf107a838bd853f62c423

See more details on using hashes here.

Supported by

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