marty-oehme / bemoji Goto Github PK
View Code? Open in Web Editor NEWEmoji picker that remembers your favorites, with support for bemenu/wofi/rofi/dmenu and wayland/X11.
License: MIT License
Emoji picker that remembers your favorites, with support for bemenu/wofi/rofi/dmenu and wayland/X11.
License: MIT License
Probably a stupid question, but where do I define the environment variables such as BEMOJI_PICKER_CMD? Is it a config file stored somewhere?
It looks like I should setting the BEMOJI_PICKER_CMD to "fuzzel", but I don't know where.
There's a new directory in (XDG) town and it looks like a perfect fit for the emoji history file: XDG_STATE_HOME
.
It is intended for basically exactly this:
$XDG_STATE_HOME defines the base directory relative to which user-specific state files should be stored. If $XDG_STATE_HOME is either not set or empty, a default equal to $HOME/.local/state should be used.
More here: https://teddit.net/r/linux/comments/ny34vs/new_xdg_state_home_in_xdg_base_directory_spec/
and here: https://wiki.debian.org/XDGBaseDirectorySpecification#state
One consideration is if it should, by default, still fall back to the old XDG_DATA_HOME
directory or break with it and follow the new XDG spec more closely.
If your search matches an emoji with skin tones, your results can be spammed with all the skin tone variations of one or two emojis rather than showing you 10 or more different emojis. The result you are looking for may be pushed off the first page by all the skin tone variations.
For example, if you search for red
, there are 6 entries for "man with red hair", 6 entries for "woman with red hair" and 6 more for "person with red hair".
If a skin tone could be set on the CLI, there could be only 3 results instead of 18:
bemoji --skin-tone="medium"
Or, perhaps even cleaner is not mention the skin tone at all when it's given on the CLI, so the results could be simply:
In this case "man: red hair" would actually show and select "man: medium skin tone, red hair" instead of the generic "man: red hair" emoji.
Somebody nicely packaged the project for Archlinux systems in the AUR.
The readme should indicate this easy method of installation.
Could we get an official release with the new fuzzel picker included? That would be awesome ๐บ
Hi Marty!
I use bemoji -t
with instant typing parameter to paste an emoji character into an active input. I've discovered that xdotool
also typing a following string: --delay30
:
So I decided to fix it, here is my PR: #2
Hi,
How can I make it work with the Clipman clipboard https://docs.xfce.org/panel-plugins/xfce4-clipman-plugin/start ?
Thank you.
Having bemenu
installed and in my path, running the command bemoji -n
, I get "No suitable picker tool found." as the first entry in the picker. Except for that, it works like a charm. All the other entries are actual emoji, and copying them works.
How can i pass bemenu arguments?
This would be helpful for scripting purposes when you abandon selection on Esc. bemenu does so.
Currently, once there are lists existing in the bemoji data directory, the program will never download additional lists.
This holds, even if you specifically supply the program with the -D
option which tells the program which lists you would like downloaded.
That means, for most people, after running the program once they will not be able to download additional lists and the -D
option becomes largely useless.
What would improve usability instead, I believe, would be to change -D
into a command switch, akin to -t
, -c
and -e
currently, which starts a download of all lists supplied - no matter the current state of the data directory.
This will allow downloading additional lists at any point and makes the -D
switch a little less useless after the initial run.
Currently, the complete history of emoji (though only unique entries) is displayed whenever the program is called up with history function.
This is no problem when only the default emoji set is used since matching emoji are removed from the output list.
But if multiple changing and unique emoji sets are used, more and more emoji from those will pile up which might prove to be a problem.
A new argument flag that gives the user a choice to download Unicode characters dictionary from the source (This one can be used).
Having emoji and Unicode together can have conflict so we can have different search patterns to make it easier
e.g normal search results in emoji on top
searching with u:<name>
should result in Unicode on top
This can be achieved by adding u:
at the start of the Unicode description .txt and for bemenu we can sed it and remove it when the user invokes it.
As the emoji Db is mere simple .txt
we can prompt the user at first start if he wants to have the Nerd Font Cheat Sheet database appended to it to have access to much more glyphs.
I'm not sure if this is only my setup issue but, bemoji outputs empty list. I already have noto-fonts-emoji
installed on my arch. I'm using fuzzel btw. Should I do something more ?
$[~]$ echo $BEMOJI_PICKER_CMD
fuzzel --dmenu
$[~]$ bemoji
info: main.c:1154: version: 1.9.2 +cairo +png +svg(nanosvg) -assertions
info: config.c:1475: loading configuration from /etc/xdg/fuzzel/fuzzel.ini
info: wayland.c:2018: HDMI-A-1: 1920x1080+0x0@60Hz DELL S2216H 21.68" scale=1 PPI=106x108 (physical) PPI=106x108 (logical), DPI=101.60
info: fcft.c:338: fcft: 3.1.6 +graphemes +runs +svg(nanosvg) -assertions
info: fcft.c:377: fontconfig: 2.14.2, freetype: 2.13.2, harfbuzz: 8.3.0, utf8proc: 2.9.0 (Unicode 15.1.0)
info: fcft.c:838: /usr/share/fonts/TTF/iosevka-regular.ttc: size=12.00pt/17px, dpi=101.60
info: main.c:455: theme: hicolor
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- settings go here -->
<!-- Fallback fonts preference order -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Open Sans</family>
<family>Droid Sans</family>
<family>Roboto</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Droid Serif</family>
<family>Roboto Slab</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Iosevka</family>
<family>Noto Sans Mono</family>
<family>Droid Sans Mono</family>
<family>Roboto Mono</family>
</prefer>
</alias>
</fontconfig>
There is another more populate software project named "bemoji" , that fills up most of the search results of the first couple pages when searching exactly for the name:
https://www.google.com/search?hl=en&q=bemoji
Also consider adding some Github tags to make it easier to find, as the dmenu-emoji
project did. This project generally works great, but is a little hard to find.
How can i copy and type the emoji at the same time ?
I'm confused about how custom typing tool selection is supposed to work at https://github.com/marty-oehme/bemoji/blob/main/bemoji#L171.
I'm using autotype for typing, which supports both stdin and the first argument selection.
The workaround is to let bemoji echo output and pipe it to the tool, but that defeats the whole point of supporting custom typing tooling selection that's built in:
$ bemoji -ne | autotype
I miss the ๐ชฟ.
And maybe it makes sense to put URLs for both emojis and math symbols at the top as variables, so all hardcoded values are clearly visible and not buried in the code.
Currently we allow the user to set a completely custom picker tool (via envvar BEMOJI_PICKER_CMD
) or relying on the tool selecting a picker for them from an in-built list.
There is no in-between option for a user to select their picker from the built-in list.
If the BEMOJI_PICKER_CMD
first goes through the existing default pickers and chooses the right one and then simply uses the input as-is we could satisfy both conditions.
I.e. BEMOJI_PICKER_CMD=rofi
would select rofi from the default, while BEMOJI_PICKER_CMD="mypicker -mode dmenu"
directly use the option as command. For that matter, BEMOJI_PICKER_CMD="rofi -dmenu -p EMOJI"
would also directly work as command.
While doing this it might make sense to think about allowing this option to be set through a command line option as well.
I have changed the picker using the env like this into my .bashrc
export BEMOJI_PICKER_CMD=fuzzel
But now when I try to execute bemoji, the emojis are not being displayed, instead the default fuzzel with the .desktop icons appears
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.