🚦πŸš₯ ... ok it works πŸŒ‹

A super-simple #emoji keyboard for #x11.

Well, I *did* have to fiddle with the keymap.

And I had to add delays πŸ€―πŸ‘Ή (otherwise there are races between keymap changes and keyboard events).

And I had to misuse the #Xtest extension, cause applications ignore "synthetic" events. πŸ«₯😣

But hey, it works πŸ•Ί

Now needs some basic, uhm, "features" (like recently used, like search by name).

https://github.com/Zirias/qxmoji
#BSD #FreeBSD #Linux

GitHub - Zirias/qxmoji: Barebones X11 emoji keyboard with Qt GUI

Barebones X11 emoji keyboard with Qt GUI. Contribute to Zirias/qxmoji development by creating an account on GitHub.

GitHub

Fixed build with #Qt6 now (and defaulting to that, but #Qt5 still supported).

I also added a README.md explaining the uglyness of what it does with #X11 / #xcb. But again, hey, it works πŸ™ˆπŸ„πŸΈπŸ¦‰ (lots of emojis for no purpose, sorry πŸ˜‚)

The looks with completely unconfigured #Qt6 tell me it needs yet another feature: Configurable scale factor. These emojis are just TOO small 🧌

https://github.com/Zirias/qxmoji
#emoji #keyboard

GitHub - Zirias/qxmoji: Barebones X11 emoji keyboard with Qt GUI

Barebones X11 emoji keyboard with Qt GUI. Contribute to Zirias/qxmoji development by creating an account on GitHub.

GitHub

First "features" added ...

* Can now select 5 "scale factors" for the size of the emojis, "Tiny" being the same size as default window text (which is normally indeed tiny for emojis)

* Auto-stores these settings as well as the window dimensions (not position!)

#qxmoji #qt #x11 #emoji #keyboard

#qXmoji v0.1 and v0.2 released 😎

Functionally the same (just clickable emojis in tabbed groups, display size and wait-time for restoring the X11 keyboard map configurable), but v0.2 has correct README info and build-fixes, so Qt tools are found without fiddling with make variables πŸ™ˆ so, use v0.2 😎

https://github.com/Zirias/qxmoji/releases/tag/v0.2

#X11 #emoji #keyboard #Linux #FreeBSD

Release qxmoji-0.2 Β· Zirias/qxmoji

Fix README.md (typos and outdated info) Improve build system, properly find required Qt utilities

GitHub

πŸ₯³ #qXmoji v0.3 released πŸ»πŸ•

Now there are the "basic" features you'd expect from an emoji keyboard:

βœ… Search as you type
βœ… Recently used

https://github.com/Zirias/qxmoji/releases/tag/v0.3

#X11 #emoji #keyboard #Linux #FreeBSD

Release qxmoji-0.3 Β· Zirias/qxmoji

Add "search as you type" feature Add list of recently used emojis

GitHub

Found a small bug, #xcb requests were synchronously checked, but this only works when calling the _checked() flavor of them ... πŸ™ˆ

Fixed in #qXmoji v0.4

Also added a clear button to the search field, this seems somewhat useful πŸ˜‰

https://github.com/Zirias/qxmoji/releases/tag/v0.4

#X11 #emoji #keyboard #Linux #FreeBSD

Release qxmoji-0.4 Β· Zirias/qxmoji

Bugfix: used checked xcb requests Add a clear button to the search field

GitHub

Thinking about what to include in #qxmoji v0.5. Many questions in mind...

I'll definitely "outscope" #l10n. Would be nice, but would also mean to import localized emoji names somehow (and, where to find them? πŸ€”)

For now:

πŸ”ΉUnify persisting settings. history and window size are persisted on exit, wait time and display scale on every change. Not sure which one is the "better" approach...
πŸ”ΉShould it be "single instance"? Should it offer an option for a "tray icon"?
πŸ”ΉAdd an "About dialog". Cause that's what you always do. πŸ™ˆ
πŸ”ΉMaybe find a way to speed up initial creation of the Emoji buttons?
πŸ”ΉAnything else ...❓

Please comment if you have thoughts to share πŸ™ƒ

#emoji #keyboard #X11 #Linux #FreeBSD

#qXmoji v0.5 released!
https://github.com/Zirias/qxmoji/releases/tag/v0.5

This brings a *few* of the ideas I had:

πŸ”ΉAdd a "single instance" mode (configurable)
πŸ”ΉAdd a "tray icon" (configurable behavior)
πŸ”ΉAdd an "About" dialog
πŸ”ΉEnforce using Qt's "xcb" platform
πŸ”ΉFix detaching on startup, add a flag (-d) to prevent it

Pretty usable as it is I hope ... although one could of course improve a lot (but have you heard of the 80-20-rule?) 🫣

Screenshot from #KDE this time, no particular reason, I'm still running #fvwm here 😎

#X11 #emoji #keyboard #Linux #FreeBSD

Release qxmoji-0.5 Β· Zirias/qxmoji

Add a "single instance" mode (configurable) Add a "tray icon" (configurable behavior) Add an "About" dialog Enforce using Qt's "xcb" platform Fix detaching on startup, add a flag (-d) to prevent it

GitHub

Working on improving performance for the next #qXmoji release. This will require pre-generating stuff during build (different string formats and probably static hashtables), so doing this in #POSIX #shell script isn't feasible any more, therefore working on a data generation tool in #C now.

I'm amazed how #lldb shows me my #Emoji structs while debugging this πŸ˜‚

It seems fighting #Qt for better #performance can be a lost cause 😞 ... after a LOT of refactoring (finally even generating QStringLiteral entries in my #emoji data tables), setting an emoji as text on nearly 4000 QLabel instances is still slow as hell -- but now, compiling the emoji data is horribly slow as well (QStringLiteral doing C++ template "magic" ...) πŸ™ˆ

(And no, threading won't help here, Qt Widgets can't be used from worker threads ...)

At least I could speed up serializing/deserializing the emoji history. The new format is also surprisingly user-readable πŸ˜‚

Oh boy #Qt can get *nasty* if you need something "unusual" (like, initialize 4000 Labels all on startup 🎢🀫).

So, I can't fix performance of this, but I can "defer" it with a hacky hidden class like this.

It uses #Qtimer for a 1ms pause between every single emoji, which was the *only* way I found to have Qt still process other events 🀯 ... prefers the currently visible tab for initialization ... and "commits suicide" when done.

I'm proud and ashamed at the same time πŸ₯΄