web-dev-qa-db-fra.com

Comment faire refléter un terminal sur un deuxième écran dans une configuration à deux moniteurs?

J'enseigne à l'aide d'une configuration à deux moniteurs, donc ce que je vois sur mon bureau est différent de ce que mon public peut voir. Cela fonctionne bien pour les présentations: pendant que les étudiants voient les diapositives, je peux voir mes notes.

Mais je veux utiliser un terminal pour exécuter un shell. Cependant, le terminal doit être sur mon bureau OR sur l'écran externe.

Est-il possible d'afficher simultanément le contenu du terminal sur les deux écrans? Je ne veux pas refléter les écrans, mais rester en mode deux moniteurs.

Des allusions?

J'utilise Ubuntu avec Gnome.

25
Jander

La solution portable

Utilisez script ! Par exemple:

Terminal personnel:

> script -f /tmp/lecture1.scrpt #use -F instead on MacOS
> ... #start doing things here!

Terminal de présentation:

> #after this, terminal will continuously print whatever's written to personal terminal
> tail -F /tmp/lecture1.scrpt

Comment ça marche

La commande script copie tout ce qui est écrit sur l'écran du terminal (y compris ce que vous tapez!) Dans un fichier qu'elle prend en paramètre. Normalement, tout est écrit dans le fichier après la fin du script (en tapant exit). Toutefois, l'option -f force script à vider son tampon après chaque écriture (sous MacOS, il s'agira de -F ou -t 0). Ensuite, dans le terminal de présentation, vous pouvez utiliser tail -F pour afficher le contenu en continu au fur et à mesure de son écriture.


Choses à noter

  • Puisqu'un terminal écrit dans un fichier et que l'autre lit, ceci peut être fait entre différents utilisateurs! Cela signifie que vous pouvez avoir quelqu'un ssh avec très peu d'autorisations et que tant que vous placez le fichier de script dans un emplacement lisible, vous pourrez toujours lui présenter. (Par exemple: si vous avez un serveur auquel vos étudiants ont accès, vous pouvez créer un fichier .scrpt qui ne sera lisible que par eux, afin qu'ils puissent suivre sur leurs propres écrans)

  • Étant donné la nature de cette méthode, un terminal conduit et l’autre ne fait que regarder.

  • Cette méthode présente également l’avantage supplémentaire de faciliter l’arrêt de la copie miroir, de faire un travail secret et de recommencer à reproduire la copie sans quitter votre terminal personnel. Cela peut être fait avec ce qui suit:

Terminal personnel:

> exit #end script session; stop writing to /tmp/lecture1.scrpt
> ... #do secret things not safe for student eyes!
> script -f -a /tmp/lecture1.scrpt #begin writing again with -a to append

Plus de plaisir avec script!

Le but de script est d’enregistrer votre session de terminal afin qu’elle puisse être lue plus tard (il s’agit simplement du cas particulier de la lecture pendant l’enregistrement). Pour aider à cela, script a l'option -t pour enregistrer le minutage avec ce qui est écrit à l'écran. Pour l'utiliser, démarrez votre session de script avec:

> script -f -t 2>/tmp/lecture1.timing /tmp/lecture1.scrpt

Et reproduisez-le (avec le timing!) Avec:

> scriptreplay -t /tmp/lecture1.timing -s /tmp/lecture1.scrpt

Un élève vous a-t-il envoyé un e-mail lui disant qu'il serait malade et ne pourrait pas donner de conférence? Ou voulez-vous simplement donner plus de matériel de cours à vos étudiants? Si vous enregistrez votre voix pendant le cours (et que vous commencez le script à peu près au même moment que l'enregistrement), vos étudiants pourront alors reproduire votre session de terminal avec votre voix et profiter pleinement de l'expérience du cours!

Avez-vous un étudiant qui aime lire toutes ses vidéos à une vitesse 2x? scriptreplay prend un "diviseur" qui multiplie la vitesse de lecture! Il suffit de passer -d 2 pour jouer à une vitesse 2x (notez qu'il s'agit d'une valeur double, vous pouvez même utiliser -d .5 pour une vitesse réduite de moitié!).

15
scohe001

Une méthode élégante consiste à utiliser tmux pour cette tâche: Sudo apt install tmux. Voici un exemple:

  • Créez une session appelée my_session (supprimez -d à attacher lors de la création):

    tmux new-session -d -s my_session
    
  • Ouvrez une ou plusieurs nouvelles fenêtres de terminal et attachez-vous à la même session:

    tmux attach -t my_session
    
  • Pour dissocier un type de session:

    tmux detach
    

    Ou appuyez sur Ctrl+b, puis relâchez Ctrl et appuyez sur d.

  • Pour envoyer une commande à la session sans l’attacher:

    tmux send-keys -t my_session "echo Hello World!" ENTRER Enter
  • Notez que la commande exit, exécutée de l'intérieur, fermera la session.

36
pa4080

Vous ne pouvez imaginer aucun moyen d'atteindre directement ce que vous voulez - peut-être que d'autres peuvent le faire. Mais je peux penser à une solution de contournement.

Installez screenavec Sudo apt install screen. Démarrer deux terminaux. Dans le premier, tapez screenet appuyez sur Entrée à l'écran de nag que vous obtenez. Dans le second, tapez screen -x.

Ils montreront effectivement le même contenu. Ce n'est pas la même fenêtre de terminal, mais ce sera le même contenu.

Screen peut également faire plus d’astuces, telles que plusieurs fenêtres entre lesquelles vous pouvez basculer. Ceci est un tutoriel rapide des fonctionnalités disponibles.

28
vidarlo

à part la réponse de pa408 ci-dessus à l’utilisation de tmux, je voudrais suggérer une version étendue:

Donnez à votre partenaire un essai. Il est également disponible sous forme de paquet Ubuntu. Bien qu’il puisse être utilisé comme remplacement de tmux, il pourrait faire davantage: Je peux répliquer votre session de terminal à l’aide d’un serveur public tmate accessible via ssh ou http (lecture seule ou partage complet). Ainsi, vos étudiants peuvent utiliser votre projection de projecteur ou avoir une vue en lecture seule de votre session de terminal directement dans leur navigateur, sur leur ordinateur/tablette personnel, etc.

4
pdr