C411 - Emojis Plus

Ajoute des packs d'emojis dedies par canal au selecteur d'emojis des messages C411, avec preselection automatique et barre de recherche transverse aux packs. Packs disponibles : Audio, Video, Ebook, Application, Jeux video, XXX (NSFW).

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل Stylus لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتتمكن من تثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

(لدي بالفعل مثبت أنماط للمستخدم، دعني أقم بتثبيته!)

المؤلف
CuOgmy
التثبيت اليومي
0
إجمالي التثبيت
10
التقييمات
0 0 0
الإصدار
2026.05.24-1
تم إنشاؤه
10-05-2026
تم تحديثه
24-05-2026
الحجم
45.1 KB
التوافق
متوافق مع Firefox متوافق مع Chrome متوافق مع Edge
الترخيص
MIT
ينطبق على

C411 - Emojis Plus

Ajoute des packs d'émojis dédiés par canal au sélecteur d'émojis des messages de c411.org, avec présélection automatique quand on est dans un canal couvert, et une barre de recherche transverse pour retrouver un émoji par mot-clé sans parcourir les onglets. Six packs couvrent aujourd'hui les principaux canaux thématiques.

Le problème

Le sélecteur d'émojis natif du chat C411 propose quatre onglets génériques : Visages, Cœurs, Populaires, Gestes. Ils couvrent l'essentiel de la conversation courante, mais il manque deux choses :

  • quand on discute dans un canal thématique (Audio, Ebook, Vidéo…), on aimerait avoir des émojis adaptés au contexte ;
  • quand on a un émoji précis en tête, il faut parcourir les onglets pour le retrouver - pas de recherche par mot-clé.

La solution

Le script ajoute deux choses au sélecteur d'émojis natif :

  1. une barre de recherche tout en haut du picker, présente sur tous les canaux du chat, visible dès l'ouverture (avant même le dépliage des onglets), focus automatique, filtre instantané sur les mots-clés ;
  2. sur les canaux couverts par un pack, un onglet supplémentaire en première position dans le sélecteur, qui est présélectionné à l'ouverture - donc le premier clic affiche directement la grille thématique.

Packs disponibles :

  • #Audio (canal 13) - instruments, lecture, vibes : 🎵 🎶 🎼 🎤 🎙️ 🎧 🔊 🔉 🎸 🎹 🥁 🎺 🎷 🎻 🪕 🪗 🪘 📀 💿 📻 🎚️ 🎛️ ▶️ ⏸️ ⏯️ 🕺 💃 🤘 😎 🔥 ⚡ ✨
  • #Vidéo (canal 12) - cinéma, lecture : 🎬 🎥 🎞️ 📽️ 📹 📺 🍿 🎦 ▶️ ⏸️ ⏹️ ⏮️ ⏭️ 🔊
  • #Ebook (canal 14) - livres, lecture, écriture : 📚 📖 📕 📗 📘 📙 📓 📔 📒 📑 📰 🗞️ 👓 🕶️ 🔍 🔎 ✏️ ✒️ 🖊️ 🖋️ 🖌️ 📝 📌 📍 📎 🔖 💡 🧠 🎓 🤓 🖥️
  • #Application (canal 15) - matériel, dev, sécurité : 💻 🖥️ ⌨️ 🖱️ 🖨️ 💾 💿 📀 📱 📲 ☎️ 📞 📟 📠 📧 💬 🔌 🔋 🖲️ 🕹️ 🎮 ⚙️ 🔧 🔨 🐍 ☕ 🔐 🔒 🗝️ 🔑 📊
  • #Jeux vidéo (canal 16) - contrôleurs, combat, butin : 🎮 🕹️ 👾 🎯 🎲 🃏 🏆 🥇 💣 🔫 🗡️ 🛡️ ⚔️ 🔥 ⚡ 💥 💎 💰 🪙 🎁 📦 🗺️ 🧭 🔓 🏅 🎪 🌟 ✨ 💫 🎆 🎊 🎉
  • #XXX (NSFW) (canal 20) - le tout-venant adulte : 🍆 🍌 🥒 🥕 🍑 🍒 🍄 💦 💧 🌊 🚿 🛁 🌺 🌹 👅 💋 🔥 🌶️ 🥵 😏 😈 🐰 🦶 🌷

D'autres packs pourront être ajoutés au fil des suggestions de la communauté.

La barre de recherche

Tout en haut du picker, au-dessus de la rangée des émojis populaires et du bouton de dépliage. Dès que le picker s'ouvre, le focus est automatiquement placé dans le champ - il suffit de taper pour filtrer, sans cliquer.

  • Environ 250 émojis indexés : tous ceux des packs, plus une sélection bonus (visages courants, cœurs colorés, mains/gestes, symboles populaires) que le picker natif n'expose que par parcours manuel.
  • Insensible aux accents et à la casse : cafe, café et CaFe matchent indifféremment ☕.
  • Match en sous-chaîne : guitar trouve guitare 🎸, coeur trouve toute la palette ❤️ 🧡 💛 💚 💙 💜 🖤 🤍 🤎 💔 …
  • Touche Entrée : insère ou réagit avec le premier résultat et ferme le picker. Idéal pour un usage clavier rapide.
  • Touche Echap : vide la recherche, le picker reprend son affichage normal.
  • Pendant une recherche, tout le contenu natif (rangée populaires, onglets, grille) est temporairement masqué - la grille de résultats prend toute la zone. Une fois la recherche effacée, le picker retrouve exactement l'état précédent.

Quelques exemples : feu → 🔥, salut ou coucou → 👋, rire → 😂, merci → 🙏, pouce → 👍 👎, cool → 😎 🤙 🕶️, yeux → 👀.

Comportement transverse

Le comportement (packs comme recherche) est identique entre :

  • le smiley de la barre de saisie (insère l'émoji dans le message en cours d'écriture, à la position du curseur),
  • le smiley qui apparaît au survol d'un message (envoie l'émoji comme réaction au message ciblé).

Les onglets natifs restent accessibles : un clic sur Visages, Cœurs, etc. bascule normalement vers la grille native ; un nouveau clic sur l'onglet du pack ramène la grille thématique.

Hors des canaux couverts par un pack, la barre de recherche reste disponible (elle est utile partout) ; seul l'onglet thématique n'apparaît pas. Hors du chat (autres pages du site), le script est totalement invisible.

Fonctionnement détaillé

  • Déclenchement ciblé : la barre de recherche s'active sur tous les canaux du chat (présence du picker d'émojis détectée via le trigger Reka), l'onglet thématique se limite aux canaux pour lesquels un pack est défini (par exemple /messages?channel=13 pour Audio). Aucun effet ailleurs sur le site, aucune requête réseau hors interaction utilisateur.
  • Barre de recherche au niveau popover : la barre est insérée comme premier enfant du popover Reka, c'est-à-dire au-dessus de toute la structure native - y compris en mode replié. Pendant une recherche, chaque enfant natif du popover est masqué via display:none après mémorisation de son display initial dans un attribut, ce qui garantit la restauration à l'identique quand le champ se vide.
  • Index de recherche : la map EMOJI_KEYWORDS est la source de vérité. Tout émoji y figurant est cherchable, qu'il soit ou non rangé dans un pack - ce qui permet d'enrichir la recherche (visages, cœurs, gestes…) sans toucher au contenu des onglets. Normalisation Unicode NFD côté code pour ignorer les accents.
  • Coexistence avec le picker natif : la grille native gérée par Vue n'est jamais retirée du DOM, juste masquée quand le pack est actif. Conséquence : les onglets natifs restent pleinement fonctionnels - on bascule entre la grille du pack et la grille native sans casser le rendu Vue.
  • Réutilise les classes Tailwind natives : l'onglet, la grille et le champ de recherche injectés portent les mêmes classes que les éléments natifs, donc le rendu suit le thème (clair/sombre) sans bricolage CSS.
  • Compatible navigation SPA : le site est rendu via Nuxt avec hydratation Vue et téléportation Reka UI pour les popovers. Un MutationObserver global détecte chaque ouverture du picker (sur un canal éligible) et y injecte la barre de recherche puis, si l'utilisateur déplie, l'onglet du pack - l'idempotence est garantie par des attributs marqueurs, donc pas de doublon en cas de re-render.
  • Insertion compatible v-model : pour la rédaction, le caractère est inséré via le setter natif du prototype <textarea> puis un évènement input est émis - Vue voit la modification comme une saisie clavier normale, le bouton "Envoyer" s'active, etc.
  • Réactions via l'API officielle : un clic sur un émoji d'un picker de réaction émet un POST sur /api/messages/channels/{channelId}/messages/{messageId}/reactions avec le token CSRF de la session (récupéré dans le <meta> SSR injecté par Nuxt). Le picker se referme automatiquement après succès.
  • Architecture extensible : la configuration est une map { channelId: { name, emojis } } pour les packs et une map { emoji: [mots-clés] } pour la recherche. Pour ajouter un pack à un autre canal ou enrichir la recherche, il suffit d'ajouter une entrée - la logique d'injection est mutualisée.
  • Pas de tracking, pas de dépendance externe : tout le code tourne localement, aucun appel hors c411.org, aucune CDN tierce.

Cas non couverts (volontairement)

  • Canaux sans pack défini : la barre de recherche reste disponible (utile transverse), mais aucun onglet thématique n'est ajouté.
  • Rangée populaires du haut (avant dépliage du picker) : laissée intacte hors recherche - les douze émojis populaires C411 ne sont pas remplacés.
  • Emojis sans mots-clés : un émoji présent dans un pack mais absent de l'index reste sélectionnable via l'onglet, mais pas trouvable par recherche textuelle. Il suffit d'ajouter une entrée pour le rendre cherchable.

Compatibilité

  • Gestionnaires : Tampermonkey, Violentmonkey
  • Navigateurs : Chrome, Firefox, Edge

Installation

  1. Installer Tampermonkey ou Violentmonkey si ce n'est pas déjà fait.
  2. Cliquer sur le bouton Installer ce script ci-dessus.
  3. Le gestionnaire détectera automatiquement les mises à jour publiées ici.

Code source

Le script est organisé en modules distincts (config, utilitaires, client API, injection picker, observer SPA) puis concaténé en un seul fichier par un script de build qui valide la syntaxe via node --check avant chaque artefact.

Aucune dépendance externe. Le code est lisible, commenté en français, et placé sous licence MIT - tu peux l'inspecter, le forker ou le modifier librement.

Contributions

Les packs #Vidéo, #Ebook, #Application, #Jeux vidéo et #XXX (NSFW) ont été proposés par Cbo (membre de la communauté C411). Merci à lui pour ce travail.

Signaler un bug, proposer un pack ou un mot-clé

Utiliser l'onglet Feedback ou Discussions de cette page GreasyFork. Les suggestions de packs (canal + liste d'émojis) et de mots-clés FR supplémentaires pour la recherche sont les bienvenues.