3 points par woojinim64 2026-04-22 | 4 commentaires | Partager sur WhatsApp

Bonjour ! En découvrant macOS pour la première fois, j’ai créé ce mini-projet, DualClip, et je vous le présente aujourd’hui.

C’est la première fois que j’écris ce genre de billet, alors je suis un peu nerveux. Merci d’être indulgents si certaines phrases sont maladroites 🙇


De quoi s’agit-il ?

C’est simplement une petite app de barre de menus qui ajoute 3 « slots » de presse-papiers.

Slot A → presse-papiers par défaut (⌘C / ⌘V)
Slot B → ⌥⌘C / ⌥⌘V
Slot C → ⌃⌘C / ⌃⌘V

Ce n’est pas une approche « historique » comme Paste ou Maccy, mais une approche par « slots ».
Vous pouvez épingler dans B des éléments que vous utilisez souvent, comme un e-mail ou un nom de variable, tout en continuant à faire vos copier-coller habituels avec ⌘C/⌘V.


Pourquoi je l’ai créé

Quand on fait du refactoring ou de la traduction, il suffit d’appuyer une fois de trop sur ⌘C pour écraser ce qu’on avait copié juste avant.
À force, accumulé sur une journée, ça devient un vrai petit stress.
J’ai aussi essayé des apps d’historique, mais il y avait quelques points qui me gênaient.

  • le temps supplémentaire pour ouvrir un popup et choisir est trop lent
  • pour retrouver « pas celui d’avant, mais celui encore avant », il faut de toute façon le repérer visuellement
  • moi, je voulais simplement que ⌥⌘V colle immédiatement le bon contenu

Donc au lieu d’empiler les fonctionnalités, j’ai gardé une idée toute simple : « on fixe le contenu dans un slot et on le récupère avec un raccourci ».


La partie la plus amusante à développer (Atomic Paste)

C’était plus compliqué que prévu, car sur macOS, ⌘V lit obligatoirement le presse-papiers système.
Donc pour coller le contenu du Slot B, il faut temporairement remplacer le presse-papiers système, ce qui ferait normalement disparaître ce qui avait été copié avec ⌘C.
J’ai longtemps réfléchi à la bonne façon de résoudre ça.
Au final, j’ai fait fonctionner ça dans cet ordre.

  1. sauvegarder d’abord le presse-papiers système actuel (copie profonde de tous les types)
  2. le remplacer par le contenu du Slot B
  3. simuler ⌘V via CGEvent
  4. restaurer 150 ms plus tard l’original sauvegardé

Tout ce cycle se termine en moins de 150 ms, donc à l’usage on ne perçoit même pas que « ce qui avait été copié avec ⌘C a brièvement disparu ».
J’appelle ça tout seul « Atomic Paste »… (j’étais assez fier d’avoir trouvé le nom 😅).
Le réglage du timing pour suspendre brièvement le polling et ignorer changeCount m’a vraiment pris beaucoup de temps.
Je suis resté bloqué un bon moment à me demander : « pourquoi le Slot A se transforme en contenu du Slot B… ? »

Autres petits détails :

  • prise en charge du texte / des images / des fichiers / du RTF (copie profonde de NSPasteboardItem)
  • ne fonctionne pas du tout dans les champs de mot de passe (vérification de IsSecureEventInputEnabled)
  • remplissage à zéro de la mémoire des slots à la fermeture (memset_s)
  • tous les raccourcis sont personnalisables (merci à sindresorhus/KeyboardShortcuts)

Côté confidentialité

Comme les apps de presse-papiers manipulent des données sensibles, c’est le point auquel j’ai le plus fait attention.

  • rien n’est écrit sur le disque, tout reste uniquement en RAM
  • il n’y a tout simplement aucun code réseau, pas même pour vérifier les mises à jour ou faire de la télémétrie
  • c’est open source sous licence MIT, vous pouvez donc aller vérifier par vous-mêmes

Pour l’essayer

Le plus simple est probablement d’utiliser Homebrew.
brew install RAKKUNN/tap/dualclip

Sinon, vous pouvez aussi récupérer le zip depuis GitHub Releases et le placer dans /Applications.
La build est notarisée par Apple (notarization), donc aucun avertissement ne s’affichera au premier lancement.

GitHub: https://github.com/RAKKUNN/DualClip
Prérequis : macOS 13+ (Apple Silicon), autorisation d’accessibilité


C’est ma toute première app macOS, donc il y a certainement encore beaucoup de choses maladroites.
Si vous avez des retours du genre « ce serait mieux comme ça » ou « une erreur se produit ici », je vous en serais vraiment reconnaissant.
N’hésitez pas à laisser un commentaire !
Passez tous une excellente journée !!

4 commentaires

 
vwjdalsgkv 2026-04-23

Ditto, un programme de gestion du presse-papiers pour Windows, fonctionne lui aussi de manière similaire à ce que vous avez implémenté.
Je pense que cela pourrait être une bonne référence pour trouver des pistes d’amélioration~

 
woojinim64 2026-04-23

Merci pour l’info !🙇🙇
Je vais y jeter un œil et envisager d’en retenir certaines parties !

 
greekr4 2026-04-23

Ce serait bien d’ajouter aussi une fonction d’enregistrement, comme Clipy.

 
woojinim64 2026-04-23

Avez-vous un besoin plutôt orienté historique ou snippets ?
Mais l’historique ne correspond pas à l’orientation de DualClip.
Je m’efforce de le rendre aussi léger et pratique que possible.
Merci pour votre retour.