Comment cibler plusieurs sélections avec xclip

11

Lors de la copie de texte dans le presse-papiers, xclip fournit plusieurs cibles de sélection:

 -selection
    specify which X selection to use, options are:
    "primary" to use XA_PRIMARY (default), 
    "secondary" for XA_SECONDARY 
    "clipboard" for XA_CLIPBOARD

Existe-t-il un moyen de cibler plusieurs sélections?

J'ai essayé les options suivantes

  1. echo "Hello world" | xclip -i -selection primary -selection clipboard
  2. echo "Hello world" | xclip -i selection primary | xclip -i selection clipboard
  3. echo "Hello world" | xclip -i selection primary,clipboard

mais aucun d'entre eux n'a fonctionné.

Amelio Vazquez-Reina
la source

Réponses:

16

J'ai essayé les options suivantes

echo "Hello world" | xclip -i selection primary | xclip -i selection clipboard  

Vous étiez vraiment près de là ...
Si vous utilisez -favec la première xclipcommande, il imprimera le texte sur stdout et vous pourrez le diriger vers la deuxième xclipcommande:

echo "Hello World" | xclip -i -sel p -f | xclip -i -sel c

De man xclip:

-f, -filter
            when xclip is invoked in the in mode with output level set to
            silent (the defaults), the filter option will cause xclip to print
            the text piped to standard in back to standard out unmodified
don_crissti
la source
Merci! J'accepte cette solution car: 1) Elle renseigne sur une fonctionnalité intéressante de xclip. 2) Il me permet de tuyaux xclipcommandes qui est très pratique et 3) Pour une raison étrange, il est la seule réponse à ce jour qui donne une solution de travail dans mes expériences pour la liaison copy-pipedans tmux(ce qui est ce qui a poussé cette question)
Amelio Vazquez-Reina
2
Si votre distribution fournit xsel, une alternative à xclip, vous pouvez utiliser echo 'Hello World' | xsel -i -p && xsel -o -p | xsel -i -b. C'est légèrement différent et moins efficace qu'en xclipraison de l' xselabsence d'une option de filtre. Mais si vous êtes coincé, xselc'est un moyen de résoudre le problème.
Starfry
5

Je n'utilise pas xclip, donc il peut y avoir un moyen de le faire en natif dont je ne suis pas au courant. Dans tous les cas, cela devrait fonctionner en supposant que votre shell est bash:

echo "Hello world" | tee >(xclip -i -selection primary) >(xclip -i -selection clipboard) >/dev/null

>()est une forme de substitution de processus. bashremplace chacun par le chemin d'accès à un descripteur de fichier qui est connecté à l'entrée standard du programme entre parenthèses.

Chris Down
la source
Merci! Savez-vous si cette syntaxe est également compatible avec zsh?
Amelio Vazquez-Reina
@ user815423426 Pour autant que je sache, oui.
Chris Down
J'ai testé ici sur mon zsh et ça marche comme un charme!
SergioAraujo