https://github.com/szymonwilczek/carmenta
Fast, minimal Emoji Picker for GNOME written in Rust & GTK4. Supports custom providers, "Always on Top" mode, and Wayland integration via extension.
https://github.com/szymonwilczek/carmenta
copr emoji-picker gnome gtk4 libadwaita linux rust wayland
Last synced: 6 months ago
JSON representation
Fast, minimal Emoji Picker for GNOME written in Rust & GTK4. Supports custom providers, "Always on Top" mode, and Wayland integration via extension.
- Host: GitHub
- URL: https://github.com/szymonwilczek/carmenta
- Owner: szymonwilczek
- License: mit
- Created: 2026-01-15T12:29:19.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-17T01:21:32.000Z (6 months ago)
- Last Synced: 2026-01-17T07:26:08.324Z (6 months ago)
- Topics: copr, emoji-picker, gnome, gtk4, libadwaita, linux, rust, wayland
- Language: Rust
- Homepage: https://copr.fedorainfracloud.org/coprs/szymon-wilczek/carmenta/
- Size: 148 KB
- Stars: 4
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Carmenta
  
**Carmenta** is minimal, fast emoji picker for Linux desktops, built with Rust and GTK4. It integrates with GNOME Shell to provide instant access to Emojis, Kaomojis, Symbols, and GIFs.
## 🚀 Performance
| Metric | Result |
| :--- | :--- |
| **Startup Time** | **< 200ms** (Internal init: ~135ms) |
| **Insertion Latency** | **~1.2ms** |
| **Memory Usage** | **~0.75MB** (RSS) |
*Measured on standard hardware.*
## ✨ Features
- **Instant Search**: Localized, debounce-optimized search for thousands of items.
- **Four Modes**:
- 😃 **Emoji**: Full Unicode support with categories and skin tones.
- (◕‿◕) **Kaomoji**: Extensive library of Japanese emoticons.
- ∑ **Symbols**: Math, currency, arrows, and more.
- 🎬 **GIFs**: Search millions of animated GIFs powered by **Klipy**.
- **Smart History**: Remembers your most used items.
- **"Always on Top"**: Stays visible while you work, but gets out of the way when you don't need it.
- **Shell Integration**: Uses an optional, companion GNOME Shell extension for reliable text insertion into any application (Wayland workaround).
## 📦 Installation
### Fedora (Recommended)
You can install Carmenta directly from the [COPR repository](https://copr.fedorainfracloud.org/coprs/szymon-wilczek/carmenta/):
```bash
sudo dnf copr enable szymon-wilczek/carmenta
sudo dnf install carmenta
```
### Manual Build
If you are not using Fedora or prefer to build from source, the installation script will attempt to install necessary dependencies for you (on Ubuntu/Debian, Fedora, Arch).
If the script fails to install dependencies, you will need:
- `gtk4` (libgtk-4-dev)
- `libadwaita` (libadwaita-1-dev)
- `rust` / `cargo`
**Installation:**
1. Clone the repository:
```bash
git clone https://github.com/szymonwilczek/carmenta.git
cd carmenta
```
2. Run the installation script:
```bash
./scripts/install_app.sh
```
### Install Extension (Optional)
Carmenta does not require a companion extension to function correctly, but it makes the work much easier.
Currently, Wayland prohibits inserting anything from other applications into other windows.
A workaround for this is a Companion extension that communicates with the application, allowing emoticons to be inserted.
> [!NOTE]
> While I wait for *GNOME Extensions'* review, here's a guide to install the extension without it:
#### Installation Script
I recommend you to install the extension via [installation script](./scripts/install_extension.sh), as it do all of these (listed below - but not the 2nd step, you'll still need to do that manually):
1. Copy the `extension` folder to your GNOME Shell extensions directory:
```bash
git clone https://github.com/szymonwilczek/carmenta.git
cd carmenta
mkdir -p ~/.local/share/gnome-shell/extensions/carmenta@szymonwilczek.dev
cp -r extension/* ~/.local/share/gnome-shell/extensions/carmenta@szymonwilczek.dev/
```
2. Restart GNOME Shell (logout and login back).
3. Enable the extension using the **Extensions** app.
Obviously, if you want to do that steps yourself, that's fine and will work the same.
## ⌨️ Usage
- Launch Carmenta (can be binded to any **Custom Shortcut** as `carmenta`).
- Type to search (or use Arrows and/or Tab/Ctrl-Tab to navigate around the app).
- Click to copy & insert.
- **Esc** to quit instantly.