Après plusieurs essais et erreurs, j'ai installé un autre visualiseur d'images sur ma machine distante (feh
), réglage dans UP- et essayé à nouveau la commande.
feh WARNING: /tmp/feh_stdin_ZwCjv7 - No Imlib2 loader for that file format
feh: No loadable images specified.
See 'man feh' for detailed usage information
Je pense que c'est le problème qui a causé l'erreur display
_ _ sur une erreur d'éclatement.
display: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.
Selon - https://superuser.com/a/1517417/1106777 , la commande a échoué car j'ai démarré display
comme travail d'arrière-plan (&
).
Si le processus est démarré avec
&
Ensuite, la coquille redirigera réellement son stdin de/dev/null
Pour éviter toute tentative de lecture.
Si je supprimais le trailing &
, La commande sera sans problème, prenons un exemple de:
De travail
ssh beer@laika "DISPLAY=:0 feh -" < <(cat 1.jpeg)
(Aussi) travaillant
ssh beer@laika "DISPLAY=:0 display -" < <(cat 1.jpeg)
Comment envoyer STDIN à l'arrière-plan &
Job?
La commande
display - && sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560
démarre la commande display
, attend la sortie, puis exécute sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560
Si l'état de sortie indique le succès.
Vous voulez probablement
display - & sleep 5 && wmctrl -r ImageMagick -e 0,254,600,800,560
ce qui commence display
dans l'arrière-plan de la coque continue immédiatement avec les commandes restantes.
Il semble être numéro d'autorité sur SSH :
Affichage et autorité
Un programme X a besoin de deux informations afin de se connecter à un affichage X. (Notez que
wmctrl
est un programme X, même s'il accède à d'autres fenêtres des processus plutôt que de créer son propre.)
Il faut l'adresse de l'écran, qui est typiquement
:0
Lorsque vous êtes connecté localement ou:10
,:11
, etc. Lorsque vous êtes connecté à distance (mais le numéro peut modifier en fonction du nombre de connexions X actives). L'adresse de l'écran est normalement indiquée dans la variable d'environnement d'affichage.Il a besoin du mot de passe pour l'affichage. X Afficher les mots de passe sont appelés cookies magiques. Les cookies magiques ne sont pas spécifiés directement: ils sont toujours stockés dans X dossiers d'autorité, qui sont une collection d'enregistrements de la forme "Affichage: 42 dispose de cookies 123456". Le fichier d'autorité X est normalement indiqué dans la variable d'environnement Xauthority. Si
$XAUTHORITY
n'est pas défini, les programmes utilisent~/.Xauthority
.
Heureusement, vous pouvez résoudre ceci en mettant en place des cookies:
Pour copier des cookies lorsque vous vous connectez à votre session de bureau X, ajoutez les lignes suivantes à
~/.xprofile
ou alors~/.profile
(ou un autre script qui est lu lorsque vous vous connectez):case :$DISPLAY:$XAUTHORITY in :*:?*) XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";; esac
Ceci est un petit résumé de la réponse. S'il vous plaît visitez le lien ci-dessus pour tous les détails.