Mechvibes, un programme GUI open source pour simuler le son d'un clavier mécanique, est un programme que j'utilise depuis 3-4 ans. Mais depuis que je suis passé à Linux, il a cessé de fonctionner (problème de sécurité Wayland). Le programme écoute essentiellement les entrées du clavier et joue le son du clavier à chaque pression de touche. De plus, MechVibes est construit avec Electron.js, il consomme donc beaucoup de mémoire (150 Mo). La CLI que j'ai construite n'a qu'une empreinte mémoire d'environ 6 Mo.
Cela dit, je suis assez nouveau dans Go, ainsi que dans le monde Linux (et les outils CLI). Depuis que je suis passé de Windows à Linux, je me retrouve à essayer d'accomplir beaucoup de choses avec le terminal. Cela m'a également amené à essayer NeoVim, qui m'a époustouflé et a changé ma façon de voir les terminaux.
Savez-vous que GoVibes est développé à 100 % avec NeoVim ??♂️
Bien que Go soit connu pour sa simplicité comme le C, venant du monde Javascript/Frontend, j'ai eu du mal avec ça. Je pense principalement pour deux raisons : premièrement, je ne connais pas vraiment la programmation (je ne connais que le framework (React) et depuis 2 ans, j'écris du code passe-partout mémorisé.) ; deuxièmement, Go est ma deuxième langue et le développement web/js m'a rendu inflexible dans le choix de nouvelles langues. Apprendre le Go a donc été pour moi comme un changement de paradigme, qui a révélé beaucoup de mes insuffisances et problèmes de compétences. Et cela est clairement évident si vous consultez la base de code de GoVibes.
J'appelle cela un outil CLI, même s'il ne répond pas entièrement aux critères standard des outils CLI. Il est uniquement Linux (testé sous Fedora et sur la machine de mon ami, qui utilise Arch d'ailleurs !), et nécessite une compilation manuelle. En plus de ça, le code est horrible.
Il existe un outil CLI similaire écrit en Rust, appelé Rustyvibes. Je l'ai essayé et à cause du problème de sécurité de Wayland, il a échoué sur mon Fedora Linux. De plus, j'ai dû supprimer le programme CLI si je voulais changer le son du clavier. Venant du monde frontend, je suis partisan des jolies interfaces utilisateur et je voulais la même expérience dans mon outil CLI. Donc, pour mettre précisément en évidence ces problèmes, je crée GoVibes.
Le cœur du programme est simple. Il existe une boucle continue qui s'exécute sur un canal séparé et qui écoute l'événement de saisie au clavier entrant. En fonction de l'événement d'entrée, le programme lit une section du fichier audio. Le rôle à jouer est défini dans un fichier config.json distinct. Il peut désormais y avoir plusieurs périphériques d'entrée dans votre système. Ainsi, le programme répertorie également tous les périphériques d'entrée disponibles et vous pouvez choisir quelle chaîne il doit écouter. Ce que j'ai trouvé intéressant, c'est que, comme je suis nouveau sur Linux, je traite les appareils comme des fichiers comme des objets. Et donc tout ce que j'avais à faire pour monter un appareil était de l'ouvrir en tant que répertoire.
file, err := os.Open("/dev/input/event2")
La majeure partie du temps de développement a été consacrée à rendre GoVibes interactif et joli. Peut-être que cet effort aurait pu être mieux dépensé pour le rendre multiplateforme et fonctionnel, mais encore une fois, je suis son seul utilisateur, donc cela n'a pas d'importance. Quoi qu'il en soit, j'ai trouvé BubbleTea, une bibliothèque permettant de créer des outils CLI(TUI) interactifs dans Golang. La bibliothèque a sûrement eu une courbe d'apprentissage. Il m’a fallu une semaine pour comprendre comment tout s’articule. Il existe également de nombreux composants prédéfinis (bulles), ce qui facilite la création d'une interface utilisateur jolie et conviviale.
Dans l’ensemble, ce fut une bonne expérience d’apprentissage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!