• Stars
    star
    482
  • Rank 91,212 (Top 2 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Emoji Picker for Linux written in GTK3

Emote

Emote is a modern emoji picker for Linux πŸš€. Written in GTK3, Emote is lightweight and stays out of your way.

Launch the emoji picker with the configurable keyboard shortcut Ctrl+Alt+E, and select one or more emojis to have them be automatically pasted into your currently focused app.

  • 🍾 Built as a popup: quick invocation, and disappears when not needed, does not stay as a standalone window
  • 🫠 Provide a large and up-to-date list of emojis retrieved from openmoji.org
  • 🧠 Shows the last used emojis by default
  • πŸ”Ž Search text box automatically focused and ready to type when invoked
  • ⌨️ Can use shortcuts to navigates and select emojis
  • βœ’οΈ Selected emoji automatically pasted to your currently focused app (on X11 only)

ℹ️ Note:

  • ⚑️ Emote shows up faster when invoked using the built-in keyboard shortcut (Ctrl+Alt+E by default), than when using a manually registered keyboard shortcut.
  • πŸͺŸ Emote under Wayland cannot automatically paste the emoji into other apps, and also requires manual registering of a global keyboard shortcut - Hotkey In Wayland. This is due to intentional restrictions in the design of Wayland itself.

πŸ“₯️ Installation

Emote can be installed using various popular package managers:

πŸ“¦οΈ Install with Flatpak (preferred)

Download on Flathub

or

flatpak install com.tomjwatson.Emote

🦜 Install with Snap

Get it from the Snap Store

or

sudo snap install emote

🐧 Unofficial installation methods

An unofficial build of Emote is also available in the AUR : https://aur.archlinux.org/packages/emote.

πŸ“– Guide

πŸš€ Launching

Emote runs in the background and automatically starts when you log in.

The emoji picker can be opened with either the keyboard shortcut, or by clicking the app icon again.

ℹ️ Usage

Select an emoji to and have it be pasted to your currently focused app. The emoji will also be copied to your clipboard, so you can then paste the emoji wherever you need.

You can select multiple emojis by selecting them with right click.

⌨️ Keyboard Shortcuts

Open Emoji Picker: Ctrl+Alt+E (configurable)

Select Emoji: Enter

Add Emoji to Selection: Shift+Enter

Focus Search: Ctrl+F

Next Emoji Category: Ctrl+Tab

Previous Emoji Category: Ctrl+Shift+Tab

πŸ§‘β€πŸ’» Development

Build package

πŸ“₯️ Requirements

Install development libraries:

sudo apt install xdotool libgtk-3-dev libgirepository1.0-dev python3-venv gir1.2-keybinder-3.0 libkeybinder-dev desktop-file-utils
# or with dnf
sudo dnf install xdotool gtk3-devel keybinder3-devel libgirepository1.0-dev desktop-file-utils gobject-introspection-devel flatpak-builder

sudo dnf install libffi-devel

Install pipenv:

sudo pip3 install pipenv

Install dependencies:

make install

πŸ›©οΈ Running

Run the development version:

make dev

πŸ”„ Update emojis

To update the list of emojis to the latest available on openmoji.org, run:

make update-emojis

🐞 Debugging GTK3 with GtkInspector

Enable debug keybinding:

gsettings set org.gtk.Settings.Debug enable-inspector-keybinding true

Launch app in debug mode with interactive inspector:

make dev-debug

🚒 Publishing

Releasing a new version

  1. Bump the version number in snapcraft.yaml for snap and in meson.build for flatpak.
  2. Add a release entry to the com.tomjwatson.Emote.metainfo.xml.

πŸ“¦οΈ Package with Flatpak

To develop locally you will need to have flatpak installed.

Install

Install flatpak-builder, the GNOME SDK, and flatpak-pip-generator:

make flatpak-install

Optionally re-generate the flatpak/python3-requirements.json if the dependencies in the Pipfile have been changed:

make flatpak-requirements

Build

Build the flatpak package and install it locally:

make flatpak

Run Emote with flatpak (can also be done from the desktop entry):

flatpak run com.tomjwatson.Emote

Debug

In case you are facing issues with the cache not properly updating, or need to reset user data, you can clean the cache with:

make flatpak-clean

To see potential error messages of the flatpak app you can use journalctl:

journalctl -f -n 50

Run the command below if you want to access inside the containerized flatpak app to debug.

flatpak run --command=sh --devel com.tomjwatson.Emote

Publish to Flathub

Emote is published to Flathub using the repository github.com/flathub/com.tomjwatson.Emote.

Flathub builds can be monitored at buildbot.flathub.org/#/apps/com.tomjwatson.Emote

To update the version published to Flathub:

  1. In the com.tomjwatson.Emote.yml manifest of the flathub/com.tomjwatson.Emote repo: change the commit hash to the commit of the Emote repository you want to publish
  2. Flathub checks the GitHub repo every few minutes, and will start a build if a change has been detected. If the build succeeds, it is published automatically after 3 hours. You can use the Flathub BuildBot web UI to monitor, start or publish builds manually (click the Publish button at the top of a successful build page).

More documentation for maintaining a Flathub package is available at docs.flathub.org/docs/for-app-authors/maintanance.

🦜 Package with Snap

Ensure you have snapcraft installed:

sudo snap install --classic snapcraft

Create a packaged .snap file:

make snap

Clean the cache:

make snap-clean

Publishing

First, ensure a git tag for the current version has been pushed.

Ensure you are logged in to snapcraft:

snapcraft login

Push the packaged snap to the edge channel on the snap store.

snapcraft push --release=edge <path to .snap>

🀝 Attribution

Emoji data is sourced from https://raw.githubusercontent.com/hfg-gmuend/openmoji/master/data/openmoji.csv which is compiled by the lovely people at https://openmoji.org 🫠.

More Repositories

1

p2p.chat

p2p video conferencing powered by WebRTC.
TypeScript
615
star
2

wikitrivia

Wikidata as a trivia card game.
TypeScript
436
star
3

dat-cp

dcp | Dat Copy - remote file copy, powered by the Dat protocol
JavaScript
309
star
4

old-reddit-redirect

Ensure Reddit always loads the old design
JavaScript
305
star
5

reddit-comment-collapser

A more elegant solution for collapsing reddit comment trees
JavaScript
42
star
6

phantomjs-polyfill

JavaScript
42
star
7

wtp-ext

Proof-of-concept distributed web powered by WebTorrents
CSS
41
star
8

breaktimer

Chrome/Firefox Extension for managing periodic breaks
HTML
38
star
9

wikitrivia-generator

Rust
32
star
10

detoxed.news

The important news, without the toxicity.
TypeScript
24
star
11

wallpaper-macos

Set wallpaper on macOS, natively using nodobjc
JavaScript
16
star
12

earthview-scraper

Python script for scraping all images from Google Earth View
Python
8
star
13

c-js-benchmarks

Comparing C Wasm and JS performance
JavaScript
4
star
14

learn-c

Exercises and notes for C refresher
C
3
star
15

macos-space-change

Setup a callback for macOS space change
JavaScript
3
star
16

tomjwatson.com

The code that powers https://www.tomjwatson.com
TypeScript
3
star
17

ulauncher-popdark

A uLauncher theme that fits in well with the Pop!_OS Dark theme.
CSS
2
star
18

toms-lighting-pi

Raspberry pi webserver for interfacing with Unicorn PHAT lighting. Controllable via https://github.com/tom-james-watson/toms-lighting-app
Python
2
star
19

git-publish-npm

Publish a Git repository to NPM
JavaScript
1
star
20

osx-automation

Apple Scripts for OS X automation
AppleScript
1
star
21

toms-lighting-app

React native app for controlling my raspberry pi powered lighting
JavaScript
1
star
22

dat-camcorder

Record & save video with the Beaker Browser
JavaScript
1
star
23

case-for-nuclear

Arguing the case for nuclear as a source of low-carbon energy for the 21st Century
TypeScript
1
star