/emo

Choix de son émoticône par une interface NCurses

Primary LanguageHaskellGNU General Public License v3.0GPL-3.0

emo

L'interface du programme est simple. En lançant le programme, on est présenté un menu comme ci-après. Une fois le choix effectué, l'emoji est copié dans le presse-papier du système.

1) ʘ‿ʘ                        2) ಠ_ಠ                        3) (╯°□°)╯︵ ┻━┻
4) ┬─┬ ノ( ゜-゜ノ)           5) ┬─┬⃰͡ (ᵔᵕᵔ͜ )                 6) ┻━┻ ︵ヽ(`Д´)ノ︵ ┻━┻
7) ლ(`ー´ლ)                  8) ʕ•ᴥ•ʔ                      9) ʕᵔᴥᵔʔ
10) ʕ •`ᴥ•´ʔ                  11) (。◕‿◕。)                   12) ( ゚Д゚)
13) ¯\_(ツ)_/¯                14) ¯\(°_o)/¯                 15) (`・ω・´)
16) (╬ ಠ益ಠ)                  17) ლ(ಠ益ಠლ)                  18) ☜(⌒▽⌒)☞
19) ε=ε=ε=┌(;*´Д`)ノ           20) ヽ(´▽`)/                  21) ヽ(´ー`)ノ
22) ᵒᴥᵒ#                      23) V•ᴥ•V                     24) ฅ^•ﻌ•^ฅ
25) ( ^_^)o自自o(^_^ )    26) ಠ‿ಠ                       27) ( ͡° ͜ʖ ͡°)
28) ಥ_ಥ                       29) ಥ﹏ಥ                      30) ٩◔̯◔۶
31) ᕙ(⇀‸↼‶)ᕗ                  32)  ᕦ(ò_óˇ)ᕤ                 33) ⊂(◉‿◉)つ
34) q(❂‿❂)p                   35) ⊙﹏⊙                      36) ¯\_(⊙︿⊙)_/¯
37) °‿‿°                      38) ¿ⓧ_ⓧﮌ                     39) (⊙.☉)7
40) (´・_・`)                   41) щ(゚Д゚щ)                 42) ٩(๏_๏)۶
43) ఠ_ఠ                       44) ᕕ( ᐛ )ᕗ                   45) (⊙_◎)
46) ミ●﹏☉ミ                  47) ༼∵༽ ༼⍨༽ ༼⍢༽ ༼⍤༽           48) ヽ༼ ಠ益ಠ ༽ノ
49) t(-_-t)                   50) (ಥ⌣ಥ)                     51) (づ ̄ ³ ̄)づ
52) (づ。◕‿‿◕。)づ              53) (ノಠ ∩ಠ)ノ彡( \o°o)\      54) 。゚( ゚இ‸இ゚)゚。
55) ༼ ༎ຶ ෴ ༎ຶ༽                  56) “ヽ(´▽`)ノ”              57) ┌(ㆆ㉨ㆆ)ʃ
58) 눈_눈                     59) ( ఠൠఠ )ノ                  60) 乁( ◔ ౪◔)「      ┑( ̄Д  ̄)┍
61) (๑•́ ₃ •̀๑)                 62) ⁽⁽ଘ( ˊᵕˋ )ଓ⁾⁾             63) ◔_◔
64) ♥‿♥                       65) ԅ(≖‿≖ԅ)                   66) ( ˘ ³˘)♥
67) ( ˇ෴ˇ )                   68) ヾ(-_- )ゞ                69) ♪♪ ヽ(ˇ∀ˇ )ゞ
70) ヾ(´〇`)ノ♪♪♪              71) ʕ •́؈•̀)                    72) ლ(•́•́ლ)
73) (ง'̀-'́)ง                   74) ◖ᵔᴥᵔ◗ ♪ ♫                 75) {•̃_•̃}
76) (ᵔᴥᵔ)                     77) (Ծ‸ Ծ)                    78) (•̀ᴗ•́)و
79) [¬º-°]¬                   80) (☞゚ヮ゚)☞                  81) (っ•́。•́)♪♬
82) (҂◡_◡)                    83) ƪ(ړײ)‎ƪ​                    84) ⥀.⥀
85) ح˚௰˚づ                    86) ♨_♨                       87) (._.)
88) (⊃。•́‿•̀。)⊃                 89) (∩`-´)⊃━☆゚.*・。゚          90) (っ˘ڡ˘ς)
91) ( ఠ ͟ʖ ఠ)                  92) ( ͡ಠ ʖ̯ ͡ಠ)                  93) ( ಠ ʖ̯ ಠ)
94) (งツ)ว                    95) (◠﹏◠)                    96) (ᵟຶ︵ ᵟຶ)
97) (っ▀¯▀)つ                 98) ʚ(•`                     99) (´ж`ς)
100) (° ͜ʖ͡°)╭∩╮                101) ʕʘ̅͜ʘ̅ʔ                     102) ح(•̀ж•́)ง †
103) -`ღ´-                    104) (⩾﹏⩽)                   105) ヽ( •_)ᕗ
106) ~(^-^)~                  107) \(ᵔᵕᵔ)/                  108) ᴖ̮ ̮ᴖ
109) ಠಠ                       110) {ಠʖಠ}

Choix (valeurs entre 1 et 110) ?

Touches

Style readline

  • CTRL+L / ESC: redessine l'écran.
  • CTRL+P / flèche haut: remonte l'historique
  • CTRL+N / flèche bas: redescend l'historique
  • CTRL+B / flèche gauche: déplace le curseur vers la gauche.
  • CTRL+F / flèche droite: déplace le curseur vers la droite.
  • CTRL+A: déplace le curseur au début de la ligne.
  • CTRL+E: déplace le curseur à la fin de la ligne.
  • CTRL+D: supprime un caractère sous le curseur.
  • Retour arrière: efface un caractère.

Autres

  • CTRL+H: affiche un texte d'aide directement durant l'exécution du programme.
  • CTRL+Y: efface l'entrée et copie l'emoji associé au choix si l'entrée est valide.
  • CTRL+I: affiche de l'information sur l'emoji.
  • CTRL+R: choix aléatoire d'un emoji et le copie dans la presse-papier.
  • CTRL+T: filtre les emojis avec fzf.

Dépendances

Haskell

Les paquets suivants sont nécessaires à la compilation:

  • unix
  • cassava
  • random
  • mmorph
  • ncurses
  • bytestring
  • utf8-string
  • vector
  • monad-loops
  • transformers
  • mtl
  • digits
  • process
  • lens
  • directory

Système

  • xclip: permet d'interagir avec le presse-papier du système.
  • fzf (optionnel): permet de filtrer la liste des émoticônes.

Compilation

Le projet utilise cabal. On construit donc le binaire comme suit:

$ cabal new-build

Sur une machine 64-bit, le binaire résultant se trouve au chemin dist-newstyle/build/x86_64-linux/ghc-8.6.5/emo-0.1.0.0/x/emo/build/emo/emo.

NOTE: il est possible que le paquet Haskell de NCurses ne compile pas correctement tout dépendant de la plateforme. Par exemple la compilation pourrait donner:

<command line>: can't load .so/.DLL for: /usr/lib/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib/libpanel.so (-lpanelw: cannot open shared object file: No such file or directory)

Pour corriger ce problème il est possible que le fanion de compilation use-pkgconfig du paquet NCurses aide tout dépendant de la plateforme. Entre autres, sur Archlinux, il faut l'utiliser en date du 2021-08-02:

$ cabal new-build --constraint="ncurses+use-pkgconfig"

Utilisation

Après avoir compilé, on peut simplement utiliser le programme comme suit:

$ cabal new-run -- emo -f data/emo.csv

L'utilisateur peut aussi utiliser le binaire dist/build/emo/emo, mais c'est plus long à taper.

Documentation

Pour générer la documentation, simplement entrer par exemple:

$ cabal new-haddock

Par la suite, le fichier dist-new/**/index.html contient le point d'entrée du document web.

Installation

Simplement placer le binaire dans un répertoire en concordance avec la valeur de $PATH sur votre système. De plus, le fichier data/emo.csv peut être placé à l'emplacement $XDG_CONFIG/emo.csv afin d'appeler emo sans option. La valeur par défaut de $XDG_CONFIG est ~/.config/ sur GNU/Linux.

Ainsi, une fois le binaire et le fichier de données installé, le programme s'appelle simplement comme suit:

$ emo