GNU/Linux >> Belajar Linux >  >> Linux

Pengantar emulator terminal DomTerm untuk Linux

DomTerm adalah emulator terminal modern yang menggunakan mesin browser sebagai "toolkit GUI". Ini memungkinkan beberapa fitur rapi, seperti grafik dan tautan yang dapat disematkan, teks kaya HTML, dan perintah yang dapat dilipat (tampilkan/sembunyikan). Kalau tidak, itu terlihat dan terasa seperti emulator terminal mandiri penuh fitur, dengan kompatibilitas xterm yang sangat baik (termasuk penanganan mouse dan warna 24-bit), dan "chrome" (menu) yang sesuai. Selain itu, ada dukungan bawaan untuk manajemen sesi dan sub-jendela (seperti dalam tmux dan GNU screen ), pengeditan input dasar (seperti dalam readline ), dan paging (seperti dalam less ).

Di bawah ini kita akan melihat lebih banyak fitur-fitur ini. Kami akan menganggap Anda memiliki domterm diinstal (lewati ke akhir artikel ini jika Anda perlu mendapatkan dan membangun DomTerm). Namun, pertama-tama, inilah ikhtisar singkat tentang teknologinya.

Frontend vs. backend

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Sebagian besar DomTerm ditulis dalam JavaScript dan berjalan di mesin browser. Ini dapat berupa browser web desktop, seperti Chrome atau Firefox (lihat gambar 3), atau dapat berupa browser yang disematkan. Menggunakan browser web umum berfungsi dengan baik, tetapi pengalaman pengguna tidak sebaik (karena menu dirancang untuk penelusuran umum, bukan untuk emulator terminal), dan model keamanan menghalangi, jadi menggunakan browser tertanam lebih baik .

Berikut ini yang saat ini didukung:

  • qtdomterm , yang menggunakan toolkit Qt dan QtWebEngine
  • Sebuah Electron menyematkan (lihat gambar 1)
  • atom-domterm menjalankan DomTerm sebagai paket dalam editor teks Atom (yang juga didasarkan pada Electron) dan terintegrasi dengan sistem panel Atom (lihat gambar 2)
  • Pembungkus untuk WebEngine JavaFX , yang berguna untuk kode yang ditulis dalam Java (lihat gambar 4)
  • Sebelumnya, frontend yang disukai menggunakan Firefox-XUL, tetapi Mozilla telah menghapus XUL

Saat ini, frontend Electron mungkin merupakan pilihan terbaik, diikuti oleh frontend Qt. Jika Anda menggunakan Atom, atom-domterm bekerja dengan cukup baik.

Server backend ditulis dalam C. Ini mengelola terminal semu (PTY) dan sesi. Ini juga merupakan server HTTP yang menyediakan JavaScript dan file lain ke frontend. domterm perintah memulai pekerjaan terminal dan melakukan permintaan lainnya. Jika tidak ada server yang berjalan, domterm melakukan daemonisasi itu sendiri. Komunikasi antara backend dan server biasanya dilakukan menggunakan WebSockets (dengan libwebsockets di server). Namun, penyematan JavaFX tidak menggunakan WebSockets maupun server DomTerm; sebagai gantinya aplikasi Java berkomunikasi secara langsung menggunakan jembatan Java–JavaScript.

Emulator terminal yang kompatibel dengan xterm

DomTerm terlihat dan terasa seperti emulator terminal modern. Ini menangani peristiwa mouse, warna 24-bit, Unicode, karakter double-width (CJK), dan metode input. DomTerm melakukan pekerjaan yang sangat baik pada testsuite vttest.

Fitur yang tidak biasa meliputi:

Tampilkan/sembunyikan tombol ("melipat"): Segitiga kecil (terlihat pada gambar 2 di atas) adalah tombol yang menyembunyikan/menampilkan output yang sesuai. Untuk membuat tombol, cukup tambahkan urutan escape tertentu di teks prompt.

Dukungan klik mouse untuk readline dan editor masukan serupa: Jika Anda mengklik di area input (kuning), DomTerm akan mengirimkan urutan penekanan tombol panah yang benar ke aplikasi. (Ini diaktifkan oleh urutan escape di prompt; Anda juga bisa memaksanya menggunakan Alt+Click.)

Gaya terminal menggunakan CSS: Ini biasanya dilakukan di ~/.domterm/settings.ini , yang secara otomatis dimuat ulang saat disimpan. Misalnya, pada gambar 2, warna latar belakang khusus terminal disetel.

Konsol REPL yang lebih baik

Emulator terminal klasik bekerja pada kisi persegi panjang sel karakter. Ini berfungsi untuk REPL (command shell), tetapi tidak ideal. Berikut adalah beberapa fitur DomTerm yang berguna untuk REPL yang biasanya tidak ditemukan di emulator terminal:

Perintah dapat "mencetak" gambar, grafik, rumus matematika, atau sekumpulan tautan yang dapat diklik: Sebuah aplikasi dapat mengirim escape sequence yang berisi hampir semua HTML. (HTML dihapus untuk menghapus JavaScript dan fitur berbahaya lainnya.) 

Gambar 3 menunjukkan sebuah fragmen dari gnuplot sidang. Gnuplot (2.1 atau lebih baru) mendukung domterm sebagai tipe terminal. Output grafis diubah menjadi gambar SVG, yang kemudian dicetak ke terminal. Postingan blog saya Tampilan Gnuplot di DomTerm memberikan informasi lebih lanjut tentang ini.

Bahasa Kawa memiliki perpustakaan untuk membuat dan mengubah nilai gambar geometris. Jika Anda mencetak nilai gambar seperti itu ke terminal DomTerm, gambar akan dikonversi ke SVG dan disematkan ke dalam output.

Teks kaya dalam keluaran: Pesan bantuan lebih mudah dibaca dan terlihat lebih bagus dengan gaya HTML. Panel bawah gambar 1 menunjukkan output dari domterm help . (Outputnya adalah plaintext jika tidak berjalan di bawah DomTerm.) Perhatikan PAUSED pesan dari pager bawaan.

Pesan kesalahan dapat menyertakan tautan yang dapat diklik: DomTerm mengenali sintaks filename:line:column: dan mengubahnya menjadi tautan yang membuka file dan baris dalam editor teks yang dapat dikonfigurasi. (Ini berfungsi untuk nama file relatif jika Anda menggunakan PROMPT_COMMAND atau mirip dengan direktori trek.)

Kompiler dapat mendeteksi bahwa itu berjalan di bawah DomTerm dan secara langsung memancarkan tautan file dalam urutan pelarian. Ini lebih kuat daripada bergantung pada pencocokan pola DomTerm, karena menangani spasi dan karakter khusus lainnya, dan tidak bergantung pada pelacakan direktori. Pada gambar 4, Anda dapat melihat pesan kesalahan dari compiler Kawa. Melayang di atas posisi file menyebabkannya digarisbawahi, dan file: URL ditampilkan di atom-domterm area pesan (di bagian bawah jendela). (Bila tidak menggunakan atom-domterm , pesan tersebut ditampilkan dalam kotak overlay, seperti yang terlihat untuk PAUSED pesan di gambar 1.)

Tindakan saat mengklik tautan dapat dikonfigurasi. Tindakan default untuk file: tautan dengan #position akhiran adalah untuk membuka file dalam editor teks.

Representasi internal terstruktur: Berikut ini semua diwakili dalam struktur node internal:Perintah, prompt, baris input, output normal dan error, tab, dan mempertahankan struktur jika Anda "Simpan sebagai HTML." File HTML kompatibel dengan XML, sehingga Anda dapat menggunakan alat XML untuk mencari atau mengubah output. Perintah domterm view-saved membuka file HTML yang disimpan dengan cara yang memungkinkan pelipatan perintah (tampilkan/sembunyikan tombol aktif) dan ubah ukuran jendela.

Cetak cantik bergaya Lisp bawaan: Anda dapat memasukkan arahan pencetakan cantik (mis., Pengelompokan) dalam output sehingga jeda baris dihitung ulang pada pengubahan ukuran jendela. Lihat artikel saya Dynamic pretty-printing di DomTerm untuk diskusi lebih dalam.

Pengeditan baris bawaan dasar dengan riwayat (seperti GNU readline ):Ini menggunakan editor bawaan browser, sehingga memiliki penanganan mouse dan seleksi yang bagus. Anda dapat beralih di antara mode karakter normal (kebanyakan karakter yang diketik dikirim langsung ke proses); atau mode baris (karakter biasa dimasukkan saat karakter kontrol menyebabkan tindakan pengeditan, dengan Enter mengirim baris yang diedit ke proses). Defaultnya adalah mode otomatis, di mana DomTerm beralih antara mode karakter dan mode garis bergantung pada apakah PTY dalam mentah atau kanonik modus.

Sebuah pager bawaan (seperti less yang disederhanakan ):Pintasan keyboard akan mengontrol pengguliran. Dalam "mode paging", output berhenti setelah setiap layar baru (atau satu baris, jika Anda bergerak maju baris demi baris). Mode paging tidak mengganggu dan cerdas tentang input pengguna, sehingga Anda dapat (jika diinginkan) menjalankannya tanpa mengganggu program interaktif.

Multiplexing dan sesi

Tab dan ubin: Anda tidak hanya dapat membuat beberapa tab terminal, Anda juga dapat menyusunnya. Anda dapat menggunakan mouse atau pintasan keyboard untuk berpindah di antara panel dan tab serta membuat yang baru. Mereka dapat diatur ulang dan diubah ukurannya dengan mouse. Ini diimplementasikan menggunakan perpustakaan JavaScript GoldenLayout. Gambar 1 menunjukkan jendela dengan dua panel. Yang teratas memiliki dua tab, dengan satu menjalankan Midnight Commander; panel bawah menampilkan domterm help keluaran sebagai HTML. Namun, di Atom kami menggunakan ubin dan tab bawaan yang dapat diseret; Anda dapat melihat ini pada gambar 2.

Melepas dan memasang kembali ke sesi: DomTerm mendukung pengaturan sesi, mirip dengan tmux dan screen GNU . Anda bahkan dapat melampirkan beberapa jendela atau panel ke sesi yang sama. Ini mendukung berbagi sesi multi-pengguna dan koneksi jarak jauh. (Untuk keamanan, semua sesi dari server yang sama harus dapat membaca soket domain Unix dan file lokal yang berisi kunci acak. Pembatasan ini akan dicabut ketika kita memiliki cerita akses jarak jauh yang baik dan aman.)

Yang domterm perintah juga seperti tmux atau screen GNU di dalamnya memiliki beberapa opsi untuk mengontrol atau memulai server yang mengelola satu atau lebih sesi. Perbedaan utamanya adalah, jika belum berjalan di bawah DomTerm, domterm perintah membuat jendela tingkat atas baru, daripada berjalan di terminal yang ada.

domterm perintah memiliki sejumlah sub-perintah, mirip dengan tmux atau git . Beberapa sub-perintah membuat jendela atau sesi. Lainnya (seperti "mencetak" gambar) hanya berfungsi dalam sesi DomTerm yang ada.

Perintah domterm browse membuka jendela atau panel untuk menelusuri URL tertentu, seperti saat menelusuri dokumentasi.

Mendapatkan dan menginstal DomTerm

DomTerm tersedia dari repositori GitHub-nya. Saat ini, tidak ada paket bawaan, tetapi ada instruksi terperinci. Semua prasyarat tersedia di Fedora 27, yang membuatnya sangat mudah untuk dibuat.


Linux
  1. Panduan terminal Linux untuk pemula

  2. Salin file di terminal Linux

  3. Ganti nama file di terminal Linux

  1. Pindahkan file di terminal Linux

  2. 8 tips untuk baris perintah Linux

  3. Pengantar Udev:Subsistem Linux untuk mengelola acara perangkat

  1. Pengantar perintah chown Linux

  2. Apa emulator terminal Linux favorit Anda?

  3. Pengantar perintah alternatif di Linux