-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
54 additions
and
3 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,55 @@ | ||
Experimental xcb code, just testing ... | ||
# Xmoji – plain X11 emoji keyboard | ||
|
||
Xmoji is a simple emoji keyboard for X11 designed to work without relying on | ||
any toolkit or input method. It doesn't use a toolkit itself and instead | ||
renders its GUI using XRender requests. | ||
|
||
![Xmoji in fvwm3](.github/screenshots/xmoji.png?raw=true) | ||
|
||
This is currently work in progress and should become the successor of my | ||
[qXmoji](https://github.com/Zirias/qxmoji) tool which used Qt for its GUI. | ||
|
||
## Features | ||
|
||
* Left-clicking an emoji sends it to whatever X11 application currently has | ||
the keyboard focus using faked key press events. It automatically appends | ||
a zero-width space and for ZWJ sequences prepends another ZWJ, which helps | ||
some receiving X clients to get their display correct. This behavior will | ||
be made configurable in a future release. | ||
* Middle-clicking an emoji selects it, so it can be transferred using the X11 | ||
"primary selection" mechanism (typically middle-click again where you want | ||
to insert it). | ||
* Emojis are displayed in tabs with one tab per main group as suggested in | ||
Unicode files. | ||
* Emojis with skin-tone variants are grouped again, only the neutral version | ||
is shown and right-clicking it shows a fly-out style menu with all available | ||
versions. | ||
* There's also a search tab to find emojis by their name. | ||
|
||
## Building | ||
|
||
To obtain the source from git, make sure to include submodules, e.g. with the | ||
`--recurse-submodules` option to `git clone`. Release tarballs will include | ||
everything needed for building. | ||
|
||
Dependencies: | ||
|
||
* A C compiler understanding GNU commandline options and the C11 standard | ||
(GNU GCC and LLVM clang work fine) | ||
* GNU make | ||
* fontconfig | ||
* freetype | ||
* harfbuzz | ||
* xcb libs: libxcb-cursor, libxcb-image, libxcb-xkb and libxcb-xtest | ||
* xkbcommon and xkbcommon-x11 | ||
|
||
For example, on a Debian or Ubuntu system, you would install these packages: | ||
|
||
libfontconfig1-dev libfreetype-dev libharfbuzz-dev libxcb-cursor-dev | ||
libxcb-image0-dev libxcb-xkb-dev libxcb-xtest0-dev libxkbcommon-x11-dev | ||
|
||
To build and install Xmoji, you can simply type | ||
|
||
make | ||
make install | ||
|
||
Uses [poser](https://github.com/Zirias/poser) to provide a simple generic | ||
event loop. |