This is an old revision of the document!


Stickers

Stickers are image files that are sent between clients and displayed inline at a consistent size much larger than emoticons. They are selected from a popup or special keyboard, and do not replace text such as :) or ☺ or :smile:. Stickers are different from emoticons in this way.

Benefits of stickers over emoticons and emoji are outlined here: https://github.com/irungentoo/toxcore/issues/1106

You can read more about stickers on Wikipedia: https://en.wikipedia.org/wiki/Sticker_(Internet)

This page is a sounding board for the technical implementation of stickers, how they're stored and accessed, and the ways users should be able to interact with them. When the spec is finalized it will be included in clients.

Developers and designers, please contribute.

User-Facing Behavior

Proposal for popup menu design from https://github.com/tux3/qTox/issues/1294

Sending/In the Popup

Stickers should be selectable from a popup menu in desktop clients and from a modified keyboard when a software keyboard is in use (See the Facebook mobile app for reference).

Tox clients will come with a decent amount of default sticker packs. There should be a way to Manage sticker packs and disable them, hiding them from the list until reenabled (deleting them completely should not be too easy.)

Animated stickers in the popup should play when hovered over. In the sticker keyboard, stickers that are held down should appear (and play, if animated) above the keyboard with the rest of the interface dimmed or blurred. If the user moves their finger the sticker being previewed should change to whichever one they're touching. Stickers should not be sent when released.

There should be some way in the UI to display the contents of a tiny about.txt file listing credits and possibly license information.

When a sticker is clicked or tapped, it is sent immediately and appears inline in the chat form.

Receiving/In the Chat Form

Animated stickers should play as long as they are the most recent sticker in the conversation. After that, they should play when hovered over. On touch devices, tapping takes the place of hovering.

Saving/Sharing

Right-clicking or long-pressing (or whatever platform action is appropriate) on a sticker should bring up a context menu where users can opt to Get this Pack, at which point the pack corresponding to the sticker they selected will be downloaded from their friend and added to their collection. The option to get a pack will only appear if they don't already have it.

Users should be able to download a Tox sticker pack from the internet and import it from their Tox client's sticker popup. If they move a pack into the proper location in the filesystem it should also be recognized and immediately ready for use.

Technical Implementation

This includes the format in which sticker packs are stored (I vote for zipped folders with custom extension), the location, how we should detect if a user has a pack already, how animation should be done (svg spritesheets would be beautiful but might have to be NIHed, gifs are terrible but everyone knows them, webm is best but hard to make [maybe release a converter as a part of the Tox StickerMaker Premium Suite], >apng), etc

Keep in mind the potential of the Tox sticker pack to become an open sticker format usable by all free software, like the KDE emoticon packs used by qTox.

File Structure

  ~/.config/tox/stickers/
   |
   |--Cute Grey Striped Cat/
   |   |
   |   |--about.txt
   |   |--cat_sitting.svg
   |   |--cat_making_cake.svg
   |   `--cat_quizzical.svg
   |
   `--pack_2/
       |
       |--about.txt
       |--sticker_1.png
       |--sticker_2.png
       `--sticker_3.png
Print/export