Bagaimana cara membuat terminal dicerminkan ke layar kedua dalam pengaturan dua monitor?

25

Saya mengajar menggunakan pengaturan dua monitor, jadi apa yang saya lihat di desktop saya berbeda dari apa yang bisa dilihat audiens saya. Ini berfungsi baik untuk presentasi: ketika siswa melihat slide, saya dapat melihat catatan saya.

Tapi saya ingin menggunakan terminal untuk menjalankan shell. Namun, terminal harus di desktop saya ATAU di layar eksternal.

Apakah ada cara untuk menampilkan konten terminal di kedua layar secara bersamaan? Saya tidak ingin mirror layar, tetapi tetap pada mode dua monitor.

Ada petunjuk?

Saya menggunakan Ubuntu dengan Gnome.

Jander
sumber
Nah, Anda bisa mirror desktop Anda dan menunjukkan emulator terminal, itu salah satu cara, jika Anda hanya ingin menunjukkan terminal dengan cara apa pun asalkan berfungsi. Apakah Anda berbicara tentang TTY secara khusus? Maka kedua jawaban yang sudah ada untuk layar dan tmux dapat bekerja. Sangat tergantung pada kebutuhan Anda
Sergiy Kolodyazhnyy
Bukan duplikat, karena pertanyaan ini secara khusus tentang terminal yang berarti ada opsi lain (misalnya layar, tmux) yang tersedia, tetapi pertanyaan ini sangat terkait erat dan jawaban di sana harus bekerja untuk masalah ini juga.
psmears
@Sergiy Kolodyazhnyy: Saya tidak ingin mirror desktop karena mengacaukan presentasi. Ketika saya beralih kembali ke layar terpisah, slide tidak sesuai dengan layar lagi; terkadang slide masuk ke desktop saya. tmux bekerja dengan baik untuk saya.
Jander

Jawaban:

15

Solusi Portable

Gunakan script! Sebagai contoh:

Terminal pribadi:

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

Terminal presentasi:

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

Bagaimana itu bekerja

The scriptperintah salinan segala sesuatu yang ditulis ke layar terminal (termasuk apa yang Anda ketik!) Ke dalam sebuah file yang dibutuhkan sebagai parameter. Biasanya semuanya ditulis ke file setelah Anda mengakhiri skrip (dengan mengetik exit). Namun, -fopsi menyebabkan scriptflush buffer setelah setiap penulisan (pada MacOS, ini akan menjadi -Fatau -t 0). Kemudian, di terminal presentasi, Anda dapat menggunakan tail -Funtuk melihat konten secara terus-menerus saat ditulis.


Hal-hal yang perlu diperhatikan

  • Karena satu terminal menulis ke file dan yang lainnya membaca, ini dapat dilakukan antara pengguna yang berbeda! Ini berarti Anda dapat meminta seseorang untuk masuk dengan sangat sedikit izin dan selama Anda menempatkan file skrip di lokasi yang dapat mereka baca, Anda masih dapat menyajikannya kepada mereka. (yaitu: jika Anda memiliki server yang dapat diakses oleh siswa Anda, Anda dapat membuat file .scrpt yang hanya dapat dibaca untuk mereka sehingga mereka dapat mengikuti di layar mereka sendiri)

  • Mengingat sifat metode ini, satu terminal mengemudi dan yang lainnya hanya menonton.

  • Metode ini juga memiliki bonus tambahan sehingga memudahkan Anda untuk berhenti melakukan mirroring, melakukan beberapa pekerjaan rahasia dan mulai memulainya lagi tanpa meninggalkan terminal pribadi Anda. Ini dapat dilakukan dengan yang berikut:

Terminal pribadi:

> 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

Lebih Menyenangkan script!

Tujuannya scriptadalah untuk merekam sesi terminal Anda sehingga dapat diputar kembali nanti (kebetulan kami adalah kasus pemutaran khusus saat sedang merekam). Untuk membantu dengan ini, scriptmemiliki -topsi untuk merekam pengaturan waktu bersama dengan apa yang ditulis ke layar. Untuk menggunakannya, mulailah sesi skrip Anda dengan:

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

Dan mainkan kembali (dengan waktu!) Dengan:

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

Pernahkah seorang siswa yang mengirim email kepada Anda mengatakan bahwa ia sakit dan tidak dapat memberi kuliah? Atau hanya ingin memberi siswa Anda lebih banyak materi kuliah? Jika Anda merekam suara Anda selama kuliah (dan memulai skrip pada waktu yang hampir bersamaan dengan rekaman), maka siswa Anda dapat memutar ulang sesi terminal Anda dengan suara Anda dan mendapatkan pengalaman kuliah penuh!

Punya siswa yang suka memutar semua videonya dengan kecepatan 2x? scriptreplaymengambil "pembagi" yang mengalikan kecepatan bermain dengan! Lewati saja -d 2untuk bermain dengan kecepatan 2x (perhatikan ini adalah nilai ganda, jadi Anda bahkan bisa melakukannya -d .5dengan kecepatan setengah!).

scohe001
sumber
Wow, menarik! Hal yang menakjubkan adalah bahwa ini tampaknya menangani penelusuran riwayat, penghapusan, warna ... tanpa cacat. Tidak mengira ini mungkin terjadi tail. (Saya pikir tmuxmasih lebih baik dalam praktiknya, karena juga tidak memiliki masalah dengan misalnya sesi editor.)
leftaroundabout
Pendekatan yang sangat menarik! Itu bisa menangani perubahan ukuran jendela, sementara tmuxdan screentidak bisa, sejauh yang saya tahu.
Jander
@leftaround tentang sihir di sini sebenarnya hanya seberapa sedikit tailyang benar-benar dilakukan. Jika Anda melihat file skrip dengan sesuatu seperti vimatau lessAnda akan melihatnya menambahkan jalan keluar yang jelek karena ia mencoba mengontrol pengguliran layar dan penempatan karakter Anda.
scohe001
@leftaroundabout oleh "sesi editor" maksud Anda seperti apa vim? Sejauh yang saya tahu, ini tampaknya berfungsi dengan baik (selama terminal presentasi lebih besar dari terminal pribadi)
scohe001
35

Salah satu cara yang elegan adalah dengan menggunakan tmuxuntuk tugas ini: sudo apt install tmux. Berikut ini sebuah contoh:

  • Buat sesi bernama my_session(hapus -duntuk melampirkan selama pembuatan):

    tmux new-session -d -s my_session
    
  • Buka satu atau lebih jendela terminal baru dan lampirkan pada sesi yang sama:

    tmux attach -t my_session
    
  • Untuk melepaskan dari jenis sesi:

    tmux detach
    

    Atau tekan Ctrl+b , lalu lepaskan Ctrldan tekan d.

  • Untuk mengirim perintah ke sesi tanpa melampirkannya:

    tmux send-keys -t my_session "echo Hello World!" MEMASUKKAN  Enter
  • Perhatikan exitperintah, dijalankan dari dalam, akan menutup sesi.

pa4080
sumber
27

Tidak dapat memikirkan cara apa pun untuk secara langsung mencapai apa yang Anda inginkan - mungkin orang lain bisa. Tapi saya bisa memikirkan solusinya.

Instal screendengan sudo apt install screen. Mulai dua terminal. Di yang pertama, ketik screendan tekan enter di layar cerewet yang Anda dapatkan. Yang kedua, ketik screen -x.

Mereka akan secara efektif menampilkan konten yang sama. Ini bukan jendela terminal yang sama, tetapi itu akan menjadi konten yang sama.

Layar juga dapat melakukan lebih banyak trik, seperti beberapa jendela yang dapat Anda alihkan. Ini adalah tutorial singkat tentang fitur yang tersedia.

vidarlo
sumber
Maaf saya tidak dapat memilih dua jawaban sebagai jawaban yang benar ...
Jander
1
Tidak apa-apa :) Saya sendiri sudah memilih jawaban yang lain :)
vidarlo
4

selain jawaban pa4080 di atas untuk menggunakan tmux, saya ingin menyarankan versi yang diperluas:

Cobalah. Tersedia sebagai paket Ubuntu juga. Meskipun dapat digunakan sebagai pengganti tmux, ia dapat melakukan lebih banyak: Saya dapat mereplikasi sesi terminal Anda menggunakan server publik tmate yang dapat diakses melalui ssh atau http (read-only atau full share). Sehingga siswa Anda dapat menggunakan proyeksi beamer Anda atau memiliki tampilan baca saja dari sesi terminal Anda secara langsung di browser mereka di komputer / tablet pribadi mereka dll.

pdr
sumber
tmateterlihat menarik. Berikut ini adalah demo sederhana: youtube.com/watch?v=is_VpIx3Z4M
pa4080