Journal Enfin une utilité au presse-papier synchrone de X11

Posté par  . Licence CC By‑SA.
Étiquettes :
28
30
mai
2025

Bonjour, Nal,

Si tu t'es toujours demandé pourquoi X11 avait besoin d'avoir des palliatifs comme les différents gestionnaires de presse-papier* (par exemple xfce4-clipman, que j'utilise) pour avoir une gestion intuitive et correcte de cet outil, je vais te proposer aujourd'hui une utilisation que je vois difficilement possible sous d'autres environnement non-synchrones, comme Wayland (même si j'avoue ne même pas avoir vérifié). Si vous pouvez me contredire, je n'en serai que plus heureux d'avoir été instruit !

Car peut-être que comme moi, tu as à faire avec des outils de tableur en ligne (dans un navigateur), ou qui s'en rapprochent, et qui n'ont pas de fonctions d'interopérabilité comme l'import de données tabulaires (et ne proposent que l'export…). Du coup, l'entrée de données dans ces outils peut être très laborieuse vu l'ergonomie souvent désastreuse des applications Web, de mon point de vue. Du coup, l'idée est de remplir les données dans un logiciel adéquat de mon choix, puis de copier-coller le résultat dans l'interface Web. D'accord, mais ça s'annonce laborieux, non ?

Pas du tout ! Car grâce à l'architecture synchrone de X11, on va pouvoir rentrer ça en deux temps, trois mouvements. Mais quézaco cette architecture ? C'est que dans X11, une sélection (destinée au presse-papier) est gérée par une application source, qui est responsable d'envoyer les données au moment où on veut les coller à l'application cible. Sans gestionnaire de presse-papier, peut-être vous est-il arrivé de copier un contenu, fermer l'application pour aller le coller ailleurs et constater que le presse-papier était… « vide » ? C'est propre à cette architecture : c'est à l'application source (qui copie) de gérer le fait qu'elle sera appelée pour coller. D'où l'invention de ces intermédiaires que sont les gestionnaires de presse-papier, qui « enregistrent » les sélections au cas où l'application source n'existerait plus (ils ont également d'autres rôles en général, comme garder un historique).

Pour procéder, je vais me baser sur plusieurs choses : déjà, le format des données, pour être manipulé facilement avec un bout de shell, sera du Tab Separated Values, ou TSV ; très proche du CSV mais qui évite l'écueil des virgules comme séparateur. Ensuite, un outil d'interaction avec le presse-papier depuis le shell : xclip. Et pour lier tout ça, j'aime bien faire un peu de awk !

Alors forcément, vu que les données à copier-coller vont dépendre de votre cas d'utilisation, je vous laisse adapter, mais ici les miennes c'est que j'ai une première colonne d'identifiant, qui me permet de faire l'appairage visuellement et manuellement (j'ai parfois rentré les données dans un ordre légèrement différent), et du contenu à copier-coller dans la deuxième colonne.

    #!/usr/bin/awk -f

    # loop copying the second column once per line; xclip will wait for it to be
    # paste before iterating to the next, thanks to the (very badly named) "-quiet"
    # option which keeps it in foreground, along with -loop 1

    BEGIN { FS="\t"; xclip = "xclip -i -loop 2 -selection clipboard -quiet" }
    # skip blank lines
    /^\s*$/ { next }
    {
      print $1;
      printf("%s", $2) | xclip;
      close(xclip);
    }

Et voilà, en passant en paramètre à ce programme le fichier TSV, vous allez pouvoir coller une à une toute vos cellules, sachant que chaque collage va automatiquement faire passer à la cellule suivante. La magie du presse-papier synchronisé !

Vous remarquerez ici que j'ai utilisé -loop 2 contrairement à ce que j'ai indiqué en commentaire juste au-dessus : c'est parce que dans mon cas, j'utilise justement un gestionnaire de presse-papier, qui « consomme » déjà la sélection une première fois ; il faut donc proposer la sélection une seconde fois pour que le navigateur la récupère et que ça déclenche le passage à la cellule suivante. Donc à adapter en fonction de votre utilisation ; sans gestionnaire, un -loop 1 suffit. Également, notez (ça devient technique) que j'utilise la sélection CLIPBOARD et non PRIMARY, cette dernière étant celle de la sélection à la souris implicitement copiée dans X11, car souvent ces applications Web sélectionnent automatiquement la case lors du clic dessus, trashant la sélection en cours. J'utilise donc ici uniquement le presse-papier qui fonctionne à partir du coller avec Ctrl+v.

Voilà, le but de cette astuce était de vous faire gagner du temps et de la sérénité, car la prolifération d'applications Web débiles est une peste difficile à contrer… Et j'espère que ça vous aura fait aimer ce vénérable X11 !

* Au passage, je n'ai jamais aimé cette appellation : un presse-papier sert à maintenir des feuilles volantes. Un clipboard, en anglais, selon mon vieux Robert & Collins, c'est un écritoire à pince, et le terme informatique qu'il propose est bloc-notes, selon les petites notes qu'on écrit pour utiliser plus tard et qu'on garde dans un coin ; j'aime bien.

  • # wl-clipboard

    Posté par  (Mastodon) . Évalué à 5 (+3/-1).

    • [^] # Re: wl-clipboard

      Posté par  (site web personnel) . Évalué à 10 (+10/-1).

      À vous faire regretter X11. Sans rire, la disparition progressive du copier-coller par simple clic du milieu commence à devenir sérieusement handicapante dans ma manière de travailler.

      « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

      • [^] # Re: wl-clipboard

        Posté par  (site web personnel) . Évalué à 7 (+5/-0).

        la disparition progressive du copier-coller par simple clic du milieu commence à devenir sérieusement handicapante dans ma manière de travailler

        idem chez moi. Résultat, je martèle mon touchpad à 3 doigts, puis me résout à un alt-tab, éventuellement re-sélection de ce que je souhaitais copier/coller, clic-droit/copier, alt-tab, clic-droit/coller, la misère quoi /o\

        Si encore le clic droit donnait accès à des fonctions avancées comme supprimer le formatage, transposer une liste, remplacer les tab à la volée par des espaces… mais, non, rien de tout ça :/

        • [^] # Re: wl-clipboard

          Posté par  . Évalué à 8 (+6/-0).

          Je ne comprends pas bien, aujourd'hui le copier coller par sélection / clic du milieu sous Wayland semble fonctionner partout à la perfection. Ce n'était pas le cas au début et c'était un gros frein pour moi. Et c'est tellement ancré en moi que c'est pénible quand je suis amené à utiliser OS alternatif qui n'a pas la fonctionnalité.

          (sous KDE en tout cas, y compris entre les différents toolkits)

          Si encore le clic droit donnait accès à des fonctions avancées comme supprimer le formatage, transposer une liste, remplacer les tab à la volée par des espaces… mais, non, rien de tout ça :/

          Ça serait badasse.

          remplacer les tab à la volée par des espaces

          bien essayé, par contre xD

          • [^] # Re: wl-clipboard

            Posté par  . Évalué à 4 (+2/-0).

            J'allais faire la même réponse (je suis aussi sous KDE avec Walyland).

            Mais c'est une fonctionnalité que j'utilise assez peu, je ne vois pas trop le gain par rapport à Ctrl+C, Alt+Tab, Ctrl+V pour copier coller d'une appli à une autre (sans parler de Super+V pour appeler le presse-papiers)

            • [^] # Re: wl-clipboard

              Posté par  (site web personnel) . Évalué à 5 (+3/-0).

              Sous Kde & Wayland également — mais parfois également avec Gnome & Wayland — je constate que de nombreux programmes ne supportent plus le copier coller par sélection puis clic du milieu. Quant au Ctrl+c qui envoi Sigint aux programmes, ou fait je ne sais quoi sous Emacs ou Vim, je ne suis pas encore habitué.

              « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

              • [^] # Re: wl-clipboard

                Posté par  (site web personnel) . Évalué à 3 (+1/-0).

                Quant au Ctrl+c qui envoi Sigint aux programmes, ou fait je ne sais quoi sous Emacs ou Vim, je ne suis pas encore habitué.

                si par mégarde tu tapes ctrl+s — en pensant faire une sauvegarde rapide — tu peux taper ctrl+q pour defreezer   vi ;-)

                (pour ctrl+c, vim m'affiche Type :qa! and press to abandon all changes and exit Vim)

            • [^] # Re: wl-clipboard

              Posté par  (site web personnel, Mastodon) . Évalué à 7 (+4/-0).

              Plusieurs gains:

              • ça permet de tout faire à la souris, vu que la sélection se fait à la souris, ce serait dommage de devoir mettre une main sur le clavier pour faire la copie et le collage (je réalise que je suis gaucher de la souris, probablement que ça n'aide pas puisque les racoourcis claviers en question sont plus faciles à faire de la main gauche)
              • occasionellement, ça peut être utile d'avoir deux choses copiées, une en control+c et l'autre en sélection, puis de les coller ensuite ou répétitivement
              • le clic milieu fonctionne dans le terminal, alors que le control+c, pas directement (et avec des conséquences ennuyeuses si ça interromp un programme en cours d'exécution)
              • [^] # Re: wl-clipboard

                Posté par  (site web personnel) . Évalué à 6 (+4/-0).

                le clic milieu fonctionne dans le terminal,

                parfois pas quand tu es connecté en ssh sur un autre serveur

                alors que le control+c, pas directement (et avec des conséquences ennuyeuses si ça interrompt un programme en cours d'exécution)

                ctrl+shift+c/v pour s'éviter de tuer inopportunément un programme ;-)

                • [^] # Re: wl-clipboard

                  Posté par  (site web personnel, Mastodon) . Évalué à 4 (+2/-1). Dernière modification le 02 juin 2025 à 08:32.

                  Oui je connaît le raccourci pour copier/coller dans un terminal, mais devoir utiliser un raccourci différent dans ce cas, c'est perturbant pour la mémoire musculaire.

                  Surtout si:
                  - on utilise Haiku, qui n'a pas ce problème (le raccourci pour coller est Alt+C, partout, y compris dans le terminal)
                  - on utilise des outils come vscode avec un widget terminal embarqué dans une fenètre. Donc dans certains endroits de vscode c'est control+c pour copier, mais ailleurs g'est control+shift+c. Et en plus la gestion du selection clipboard est assez incomplète (ça marche mais pas tout le temps et pas partout)

                  • [^] # Re: wl-clipboard

                    Posté par  (site web personnel) . Évalué à 3 (+3/-1).

                    Et en plus de tous ces bons arguments, il y a aussi quelques applications qui ne gèrent pas le copié-collé par menu/raccourci. La méthode par clic-milieu équivaut à saisir le texte au clavier dans la destination, ça peut être pratique

                • [^] # Re: wl-clipboard

                  Posté par  . Évalué à 3 (+1/-0).

                  parfois pas quand tu es connecté en ssh sur un autre serveur

                  Je suppose que c’est quand tu as lancé une appli qui a grabbé la souris pour activer son interaction. Même vim le fait par défaut. J’ai horreur de ça, et je désactive. J’imagine qu’il existe alors un autre raccourci pour coller, mais je ne le connais pas.

                • [^] # Re: wl-clipboard

                  Posté par  . Évalué à 4 (+3/-0).

                  Je ne crois pas avoir eu de pb de C/C via bouton milieu en ssh, l'utilisant bcp en X11 forwarding (une autre tare rhédibitoire de Wayland, pour moi, que de ne pas être construit autour du réseau et de régresser sur des cas d'usage dont j'aurais du mal à me passer) j'étendrais ce constat à tout applicatif distant.
                  Ca marche juste comme en local, avec bien entendu de la latence selon la connexion réseau.

                  En tout cas, ce mode de C/C m'a permis de tester la solidité de qq claviers quand je suis contraint à utiliser un windows: C'est vraiment gravé dans le dur de mon cerveau reptilien et quand c'est pas là je retourne un peu à l'état sauvage en actions et jurons!

                  • [^] # Re: wl-clipboard

                    Posté par  . Évalué à 4 (+2/-0). Dernière modification le 03 juin 2025 à 11:54.

                    une autre tare rhédibitoire de Wayland, que de ne pas être construit autour du réseau et de régresser sur des cas d'usage dont j'aurais du mal à me passer

                    Pour moi, c'est bien que les choses soient optimisées pour le cas d'usage commun et actuel : local, applications qui balancent de toute façon du raster à gogo.

                    Même sous X, l'architecture réseau, avec dessin à l'aide de primitives vectorielles, elle est très souvent bypassée : les toolkits font des gros rendus raster et balancent ça à X, voire directement au GPU. La conception Wayland part de ce constat.

                    La bonne exigence n'est pas l'architecture réseau ou la transparence réseau, mais le fait que ça puisse fonctionner en réseau (peu importe comment).

                    Et là, à priori, il y a des manières de faire fonctionner ça sous Wayland :

                    • avec un truc style Waypipe (que j'ai jamais essayé)
                    • ssh -X (que j'utilise toujours par habitude et parce que ça fonctionne suffisamment bien pour mes usages). Sous X11 comme sous Wayland, ça fonctionne toujours !

                    Ça fait plus de dix ans maintenant que le GUI par réseau avec X, c'est comme RDP/VNC en moins efficace mais en fenêtré et avec un peu d'intégration. Il n'y a absolument pas besoin d'une transparence réseau pour ça, en fait tu auras plus vite fait d'avoir une solution qui propose un streaming efficace.

                    Et force est de constater qu'au contraire, l'architecture réseau de X, c'est elle la tare vu les usages actuels. Elle est overkill pour la majorité des usages (en local), et inefficace pour la plupart des usages où elle a du sens (quand elle est utilisée effectivement en réseau). Autrement dit : elle est inefficace pour tous les usages, à un epsilon près.

                    On afficherait en réseau des applications Motif ou écrites directement en X11, je ne dirais pas, mais plus personne ne fait ça.

                    Aussi, il y a un côté "séparation des problèmes" : affichage à l'écran d'un côté, transmission réseau de l'autre. Si tu as besoin d'un affichage en réseau, tu peux assembler les deux briques qui font chacune une chose et bien, au lieu de dépendre d'un truc trop complexe qui fait tout mal.

                    tl;dr: le cas d'usage est répondu sous Wayland, on s'est débarrassé d'une architecture qui n'est plus adaptée, je ne vois pas ce qui est rédhibitoire et de quoi on devrait se plaindre de ce côté.

                    • [^] # Re: wl-clipboard

                      Posté par  . Évalué à 5 (+3/-0).

                      Je suis d’accord avec beaucoup de tes arguments, mais je vais te présenter des cas qui sont certes « de niche », mais que j’apprécie beaucoup.

                      Le premier c’est x2x : j’ai de la continuité de clavier/pointeur entre deux machines, et c’est grâce à la transparence de X11, et qui pour le coup n’a pas besoin de beaucoup de débit ! Ça marche du tonnerre (et en IPv6-only aussi pour mon cas, pour un « vieux » soft je trouve ça génial : il a été codé à l’époque où on se souciait réellement du réseau). J’imagine qu’un équivalent pourrait exister avec de l’USB over IP ou un autre truc complexe, mais là ça roule simplement.

                      Le deuxième, c’est l’export de display entre une VM et un hôte, où le débit et la latence sont tellement bons qu’on ne se rend pas compte de la « lourdeur » de X11 : j’ai déjà fait des vidéos Youtube au moins en FHD sans problème comme ça ! Toujours en 100% IPv6 aussi.

                      Et occasionnellement, quand je fais de l’export pour un besoin ponctuel non-anticipé, même sur du gigabit, je peste sur les lags étranges. C’est vraiment dommage, du coup…

                      Un autre cas que j’ai très peu expérimenté, mais qui m’a impressionné un jour : avec xpra, qui offre une vue Web, où je peux passer mes fenêtres de ma machine locale (avec xpra en proxy) pour les déplacer « sur le Web » pour les partager avec quelqu’un. Même si le truc n’est pas complètement léché, c’est vraiment super bien travaillé côté xpra. Mais bon pour le coup, tu vas me dire qu’on fait des choses similaire avec du VNC ou autre protocole du genre. Mais pas de manière aussi « seamless » pour moi.

                      Et on aurait pu imaginer encore d’autres choses, si l’interaction réseau/OS/X11 avait encore été plus travaillée, c’est juste que « repartir de zéro », ça semble un peu dommage. Surtout qu’en général, les devs modernes à la Wayland ont une idée du réseau qui est tellement éloignée de la mienne que j’ai peur de ce que pourrait donner cette réinvention.

                      • [^] # Re: wl-clipboard

                        Posté par  . Évalué à 4 (+2/-0). Dernière modification le 04 juin 2025 à 09:20.

                        Le premier c’est x2x : j’ai de la continuité de clavier/pointeur entre deux machines, et c’est grâce à la transparence de X11, et qui pour le coup n’a pas besoin de beaucoup de débit ! Ça marche du tonnerre (et en IPv6-only aussi pour mon cas, pour un « vieux » soft je trouve ça génial : il a été codé à l’époque où on se souciait réellement du réseau). J’imagine qu’un équivalent pourrait exister avec de l’USB over IP ou un autre truc complexe, mais là ça roule simplement.

                        Il semblerait que ça soit possible avec https://github.com/input-leap/input-leap (retrouvé via https://github.com/dottedmag/x2x/issues/18, pas testé). Le partage du clipboard ne fonctionne pas encore d'après le README par contre (mais j'imagine que c'est implémentable, on peut partager le clipboard avec KDE connect entre un appareil Android et un appareil Linux donc il n'y a pas de raison).

                        Le deuxième, c’est l’export de display entre une VM et un hôte, où le débit et la latence sont tellement bons qu’on ne se rend pas compte de la « lourdeur » de X11 : j’ai déjà fait des vidéos Youtube au moins en FHD sans problème comme ça ! Toujours en 100% IPv6 aussi.

                        J'imagine que waypipe permettrait cela, et sinon, il y a toujours XWayland qui devrait permettre ça sous Wayland aujourd'hui (et du coup oui, on se retrouve à utiliser la transparence réseau de X sous Wayland, avec une partie des problèmes que dépendre de X cause). En fait, j'ai

                        Un autre cas que j’ai très peu expérimenté, mais qui m’a impressionné un jour : avec xpra, qui offre une vue Web, où je peux passer mes fenêtres de ma machine locale (avec xpra en proxy) pour les déplacer « sur le Web » pour les partager avec quelqu’un. Même si le truc n’est pas complètement léché, c’est vraiment super bien travaillé côté xpra.

                        J'avais aussi été impressionné par xpra en jouant un peu avec et j'ai aucune idée si un truc comme ça existe sous Wayland actuellement. Je suppose que c'est implémentable ("We should be able to plug into wayland and provide remote access for it. Reading this freerdp implementation, it doesn't look too hard. The main difficulty may be in glueing the C api with our (mostly) python server code., donc ça n'a pas l'air d'être une impossibilité technique, mais je reconnais qu'il y a probablement pas mal de choses qui n'existent pas encore (l'écosystème n'est pas complet, même après 10 ans).

                        Mais bon pour le coup, tu vas me dire qu’on fait des choses similaire avec du VNC ou autre protocole du genre. Mais pas de manière aussi « seamless » pour moi.

                        Ouais, non, ce serait plus malin de suggérer des choses équivalentes. Si ce n'est pas aussi « seamless », c'est qu'on a perdu quelque chose. En l'occurrence, j'ai l'impression qu'on peut retrouver ces fonctionnalités, mais je reconnais que ça demande du travail qui n'a pas encore été fourni. Et que dans l'état actuel, il y a bien des choses possibles sous X qui ne sont pas possibles sous Wayland.

                        • [^] # Re: wl-clipboard

                          Posté par  . Évalué à 3 (+1/-0).

                          Merci pour tes pointeurs vers les alternatives, et sur ton honnêteté sur l’immaturité de Wayland pour ces cas, qui sont encore une fois assez spécifiques et pas très grand public, j’avoue. C’est triste d’entendre que « ça pourrait être fait avec Wayland », mais qu’effectivement ça demande « encore un peu » de dev… alors que pour référence, les premiers pas de x2x ont plus de 20 ans !

                          J’ai toujours un œil sur XWayland, pour le jour où je n’aurai plus vraiment le choix, qui me semblerait un palliatif acceptable. Mais ça n’est pas une priorité pour moi pour l’instant.

              • [^] # Re: wl-clipboard

                Posté par  . Évalué à 3 (+1/-0).

                • ça permet de tout faire à la souris, vu que la sélection se fait à la souris, ce serait dommage de devoir mettre une main sur le clavier pour faire la copie et le collage (je réalise que je suis gaucher de la souris, probablement que ça n'aide pas puisque les racoourcis claviers en question sont plus faciles à faire de la main gauche)

                Logiquement tu n’a qu’une seule main sur la souri. Par contre il m’est arrivé plusieurs de malheureusement sélectionner du texte avant de pouvoir le coller.

                • occasionellement, ça peut être utile d'avoir deux choses copiées, une en control+c et l'autre en sélection, puis de les coller ensuite ou répétitivement

                Ça peut être subtile de jongler entre les 2 sans sélectionner du texte par inadvertance. Autant avoir un gestionnaire qui te fourni un vrai historique. Plus éventuellement d’autres fonctionnalités comme un netoyage du tampon après un temps, un trim, rechercher par fusing ou autre.

                • le clic milieu fonctionne dans le terminal, alors que le control+c, pas directement (et avec des conséquences ennuyeuses si ça interromp un programme en cours d'exécution)

                Comme tu le dit ça n’est qu’une histoire de collision. Si tu utilise Alt+C par exemple, ce problème n’existe pas.

                C’est assez confortable la sélection/click-milieu pour qui est très à l’aise avec une souris et ça dépanne bien quand le copier/coller marche pas pour une raison ou une autre. Mais je trouve que l’usage de gestionnaire de presse papier est sous-coté au vu de ce que ça apporte.

                https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

              • [^] # Re: wl-clipboard

                Posté par  (site web personnel) . Évalué à 4 (+1/-0).

                Ça va aussi super bien avec le focus par simple pointage, au fait.

      • [^] # Re: wl-clipboard

        Posté par  . Évalué à 5 (+3/-0).

        À vous faire regretter X11. Sans rire, la disparition progressive du copier-coller par simple clic du milieu commence à devenir sérieusement handicapante dans ma manière de travailler.

        Quel environnement? Aucun problème avec Hyprland

      • [^] # Re: wl-clipboard

        Posté par  (Mastodon) . Évalué à 7 (+4/-0).

        Je montre qu'il y a un équivalent wayland à xclip et toi tu réponds par : à en faire regreter x11. Je ne comprends pas.

        • [^] # Re: wl-clipboard

          Posté par  (site web personnel) . Évalué à 2 (+0/-0).

          Au temps pour moi. Je ne me suis jamais plongé dans les subtilités entre presse papier, sélection primaire… J’avais donc cru comprendre qu’il s’agissait d’un contournement de l’absence de ce que naïvement et improprement j’appelle un copier coller à la souris.

          « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace

      • [^] # Re: wl-clipboard

        Posté par  (site web personnel, Mastodon) . Évalué à 1 (+1/-2).

        Hein ? Mais le fait qu'un clic du milieu fasse ou non un copier-coller dépend de GNOME/KDE/ton window manager, pas du protocole Wayland ou X11 qu'il utilise pour communiquer avec les applications, non ?

    • [^] # Re: wl-clipboard

      Posté par  . Évalué à 3 (+1/-0).

      Alors le wl-paste --watch semble vaguement se rapprocher de ça, mais en fait non : il sert à automatiser le collage, pas le copiage. Du coup je ne vois pas comment faire l’équivalent à ce que j’ai présenté.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.