Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] GNU Screen : readreg très lent ( mots-clef : bash vim slime screen )

5 réponses
Avatar
Alexandre Hoïde
Bonjour à tous,

La commande ci-dessous permet d'envoyer des « commandes » à une
application ouverte dans une session GNU Screen, par l'intermédiaire
d'un fichier temporaire contenant ces commandes.

$ screen -S <nom_de_la_session> -p <nom_de_la_fenêtre> \
-X readreg p </chemin/vers/fichier/commandes> && \
screen -S <nom_de_la_session> -p <nom_de_la_fenêtre> \
-X paste p

Le problème étant le délai d'environ 5 secondes entre l'envoi du
« readreg » et celui du « paste », durant lequel Screen affiche
« Slurped n characters into buffer » sur la barre de status.

J'ai testé aussi bien un simple « ls » envoyé dans une fenêtre
hébergeant une session bash, que des commandes plus lourdes, via
Vim/Slime(1) à destination d'une fenêtre hébergeant une boucle
intéractive Ocaml... le délai est le même.

Je serais preneur de toute suggestion permettant de diviser ce délai
par… disons… 100, minimum ! Soyons fous !

(1) https://github.com/jpalardy/vim-slime

Sid à jour,
GNU screen 4.1.0~20120320
Bash 4.2+dfsg-1

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/20131022181621.GA1423@gmail.com

5 réponses

Avatar
Sylvain L. Sauvage
Le mardi 22 octobre 2013 20:16:22 Alexandre Hoïde a écrit :
Bonjour à tous,



’soir,

[…]
Le problème étant le délai d'environ 5 secondes entre l'envoi
du « readreg » et celui du « paste », durant lequ el Screen
affiche « Slurped n characters into buffer » sur la barre d e
status.[…]



Au hasard : tu as essayé avec un tube nommé ? (mkfifo)

--
Sylvain Sauvage

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Alexandre Hoïde
On Tue, Oct 22, 2013 at 11:53:28PM +0200, Sylvain L. Sauvage wrote:
Le mardi 22 octobre 2013 20:16:22 Alexandre Hoïde a écrit :
> […]
> $ screen -S <nom_de_la_session> -p <nom_de_la_fenêtre>
> -X readreg p </chemin/vers/fichier/commandes> &&
> screen -S <nom_de_la_session> -p <nom_de_la_fenêtre>
> -X paste p

’soir,


'Lut o/

>[…]
> Le problème étant le délai d'environ 5 secondes entre l'envoi
> du « readreg » et celui du « paste », durant lequel Screen
> affiche « Slurped n characters into buffer » sur la barre de
> status.[…]

Au hasard : tu as essayé avec un tube nommé ? (mkfifo)



C'est maintenant chose faite ! Donc :

$ screen -S dev
## Dans Screen je modifie le nom de ma fenêtre : Ctrl-A Maj-A bidule
## puis, hors Screen, depuis un autre x-term :
$ mkfifo .tst_fifo
$ echo -e "lsr" > .tst_fifo
$ screen -S dev -p bidule -X readreg p .tst_fifo

Et Screen m'indique :
« Slurped only 0 characters (of 0) into buffer - try again »

Le message est le même, que j'exécute le « echo… » avant ou après le
« screen… readreg… ».

Accessoirement :
J'ai essayé d'autres fonctions de Screen, telles que « stuff » ou
« register » en lieu et place de la « readreg ». Ça fonctionne sans
délai, mais je pense que si Slime utilise readreg, c'est qu'elle ne
limite pas le nombre de caractères qu'on peut passer, contrairement aux
autres. Raison pour laquelle je m'obstine ^^

Merci quand même pour ta bonne idée !

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Alexandre Hoïde
On Wed, Oct 23, 2013 at 02:14:13AM +0200, Alexandre Hoïde wrote:
$ screen -S dev -p bidule -X readreg p .tst_fifo



Oups, en fait, c'est plutôt comme ça qu'il faudrait que je l'écrive :

$ screen -S dev -p bidule -X readreg p < .tst_fifo

mais dans ce cas, Screen m'indique :
« Copied 0 characters into register p »

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Alexandre Hoïde
On Tue, Oct 22, 2013 at 08:16:22PM +0200, Alexandre Hoïde wrote:
Le problème étant le délai d'environ 5 secondes entre l'envoi du
« readreg » et celui du « paste », durant lequel Screen affiche
« Slurped n characters into buffer » sur la barre de status.



Mea culpa, j'avais loupé le fil de discussion à ce propos sur le site
de Vim-Slime :

Pour diminuer le délai, il faut utiliser la commande « msgwait » de
GNU-Screen. Soit dans la session :
<Ctrl>-a:msgwait 1
Soit dans le ~/.screenrc
msgwait 1 # tout simplement

Par défaut il est reglé à 5 secondes. Pour le mettre à 0 secondes, il
faut aussi descendre le « msgminwait » à 0 (par défaut à 1), mais dans
ce cas, plus aucun message ne sera affiché.

Bon WE à tous.

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Alexandre Hoïde
Correction :

On Sat, Oct 26, 2013 at 03:42:19AM +0200, Alexandre Hoïde wrote:
descendre le « msgminwait » à 0 (par défaut à 1), mais dans
ce cas, plus aucun message ne sera affiché.



Cette affirmation était une supposition [foireuse]. Le Info de Screen
dit (traduction approx.) :
[msgminwait sec]
Défini le délai que Screen appliquera si un précédent message est encore
affiché.

Bon…
$ while true ; do echo 'RTFM !!!' ; done

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/