6 poin oleh GN⁺ 2023-08-20 | 1 komentar | Bagikan ke WhatsApp
  • Textual adalah framework yang memungkinkan pembuatan antarmuka pengguna lintas platform dengan API Python yang sederhana, dan menjalankan aplikasi di terminal atau browser web
  • API-nya menggabungkan elemen perkembangan Python modern dan pengembangan web, serta mendukung pemeliharaan jangka panjang melalui komponen yang terpisah dan framework pengujian tingkat lanjut
  • Pustaka widget menyediakan tombol, kontrol tree, tabel data, input, area teks, dan lainnya, bersama sistem layout yang fleksibel serta tema bawaan
  • Secara internal, ini adalah framework asinkron, dapat terintegrasi dengan pustaka async bila diinginkan, namun tidak memaksa penggunaan async
  • Instalasi dengan pip install textual textual-dev, dan demo dapat dijalankan dengan python -m textual
    • Tanpa instalasi, Anda dapat menjalankan textual demo dengan uvx --python 3.12 textual-demo, dan cara ini memerlukan uv
  • Paket textual-dev menyediakan konsol pengembangan yang terhubung ke aplikasi dari terminal lain, serta mendukung pemeriksaan pesan sistem, event, pesan log, dan output print
  • Aplikasi Textual menyediakan palet perintah dengan pencarian fuzzy, dapat dibuka dengan ctrl+p, dan bisa diperluas dengan perintah kustom untuk aplikasi
  • Dengan textual serve "python -m textual", aplikasi Textual dapat disajikan ke web, dan Textual Web mendukung penyajian aplikasi selain penyajian lokal
  • Aplikasi Textual memiliki kebutuhan sistem yang rendah, dapat diinstal di mana pun Python berjalan, dan tidak memerlukan desktop

1 komentar

 
GN⁺ 2023-08-20
Komentar Hacker News
  • Demo Textual yang paling saya suka saat ini adalah https://github.com/1j01/textual-paint
    Ini tiruan Microsoft Paint yang cukup bagus dan berjalan di terminal

  • Salah satu hal pertama yang saya masukkan saat membuat proyek Python baru adalah https://github.com/Textualize/rich
    Saya memilihnya karena sangat mudah membuat output terminal terlihat bagus

    • Saya suka membuat alat command-line dan juga suka tampilan Textual, tetapi setelah beberapa kali mencoba, bagi saya rasanya agak berat dan kurang fleksibel
      Sebaliknya Rich luar biasa dan membuat alur pengembangan sangat mulus. Saya suka karena ada API bagus untuk langsung memakai fitur seperti bold, warna, emoji, dan tabel
    • Kelihatannya benar-benar cantik; saya penasaran apakah ada library serupa untuk Go atau Rust
  • Kelihatannya cukup keren
    Di perusahaan trading tempat saya dulu bekerja, kami memakai lanterna(https://github.com/mabe02/lanterna/tree/master) saat membuat UI teks untuk proses penting. Prosesnya menerima data pasar yang diperbarui dan menangani hal-hal yang berubah antara sesi trading sebelumnya dan hari ini, misalnya perubahan nama saham (dari PCLN ke BKNG), perubahan kategori akibat perubahan kapitalisasi pasar, dan semacamnya
    Itu adalah pekerjaan yang tidak ditangani sistem real-time, tetapi terlalu sering terjadi atau terlalu merepotkan untuk ditangani secara manual. Perusahaan punya UI desktop untuk staf trading, tetapi tidak ada konsep UI server, dan server bersifat headless
    Tidak ada developer frontend; programmer backend, sistem, dan data hanya sesekali menyentuh frontend, jadi UI web sangat sederhana atau hanya dibuat untuk tujuan tertentu, dan tidak ada alat bersama
    Kalau saat itu tahun 2023, mungkin saya akan memilih create-react-app atau next.js, tetapi saya ingin sesuatu yang mudah diakses bahkan lewat koneksi SSH buruk di 4G tethering saat on-call, jadi X11 forwarding atau RDP saya coret. Karena itu saya mencari pembuat TUI yang bisa dipakai di Java, bahasa proyek tersebut
    Yang saya sukai dari Lanterna adalah adanya implementasi berbasis Swing, sehingga bisa langsung dijalankan di IntelliJ untuk iterasi cepat, sementara di lingkungan produksi bisa dijalankan sebagai terminal lewat SSH di mesin server
    Saya juga akan terus memantau Textual untuk melihat apakah bisa membuat sesuatu yang bagus dengannya. Saya masih kurang menyukai aplikasi web, karena rasanya perlu usaha jauh lebih besar untuk mendapatkan hasil dibandingkan produk yang secara fungsional setara tetapi dibuat sebagai TUI atau GUI desktop, bukan di browser

  • Sayangnya istilah “rapid application development” tampaknya juga berlaku untuk library-nya sendiri
    Rilis baru keluar dua minggu sekali, dan sering rusak di tempat yang agak sulit diprediksi. Membuat prototipe dengan Textual memang mudah, tetapi pemeliharaan setelahnya sulit

    • Saya paham itu bisa menjengkelkan. Saya benar-benar tahu karena saya juga memelihara kode yang ditulis dengan Textual
      Namun, selama masih di versi 0.x, kami berusaha memanfaatkan sebaik mungkin keuntungan untuk sedikit mengubah arah ketika pendekatan yang lebih baik menjadi jelas di area tertentu
      Saat merilis versi baru, kami berusaha membuat breaking changes terlihat sejelas mungkin. Jika ada bagian yang sulit diakali atau sulit dibuat berfungsi kembali, Anda bisa meminta bantuan lewat issue GitHub, diskusi, atau Discord kalau mau
  • Karena saya bukan developer yang banyak pengalaman dengan Python, saya ingin bertanya: seberapa mudah membuat ini menjadi binary tanpa dependensi besar?
    Saya sedang mencari sesuatu yang membantu membuat paket instalasi produk untuk Windows dan Linux. Sebelum dan sesudah pelanggan menginstal software, ada pekerjaan konfigurasi seperti menulis file INI, memeriksa koneksi DB, dan memeriksa server HTTP

    • Ada banyak pilihan, tetapi berdasarkan pengalaman saya di area ini, PyInstaller adalah yang paling mudah
  • Kelihatannya bagus. Saya baru saja membuat aplikasi internal DevOps dan change management dengan unicurses dan Python; memang berjalan, tetapi sepertinya skalabilitasnya tidak bagus
    Awalnya saya mencoba TK dan QT, tetapi keduanya punya keanehan pada setup awal. QT memang berjalan baik, tetapi dokumentasi yang berguna cenderung kurang
    Textual tampaknya pas dengan kebutuhan, jadi saya pasti akan mencobanya

  • Saya sekilas menelusuri https://textual.textualize.io/tutorial/ dan https://github.com/Textualize/textual/blob/main/docs/example...
    Saya penasaran apa yang pernah berhasil Anda pakai di sisi Go. Alasan Textualize menarik adalah karena terasa cukup seperti browser web, dan bahkan tampilan tabel yang bisa di-scroll pun rapi
    tview juga terlihat menarik, tetapi misalnya kalau melihat brew install dbui, rasanya lebih seperti menulis penanganan imperatif semacam if KeyPress.A: do_something() sendiri, bukan navigasi deklaratif dan bertingkat
    Mungkin ini perbedaan antara perspektif berpusat pada aplikasi/SPA yang “mengendalikan semuanya”, dan perspektif berpusat pada dokumen yang “menambahkan komponen ke halaman dan membiarkannya mengalir”. Saya penasaran dengan masukan tentang item-item di daftar ini: https://codeberg.org/tecras/awesome-go#advanced-console-uis

    • Yang dimaksud dengan “menulis penanganan imperatif semacam if KeyPress.A: do_something() sendiri” adalah, tidak menyembunyikan message loop seperti tren sekarang, melainkan benar-benar membiarkan kita mengendalikannya?
    • Bubble Tea luar biasa
    • Saya pernah memakai termui dalam sebuah proyek dan tidak ada keluhan
      https://github.com/gizak/termui
  • Lazarus/Freepascal adalah jawabannya. Yang lain nyaris seperti kemunduran

  • Apakah animasi dan efek transisi seperti ini diimplementasikan hanya dengan teks ASCII murni?

    • Tepatnya teks Unicode, tetapi benar. Semuanya teks
    • Benar, mereka membuat terminal terasa lambat /s
      Secara serius, fitur “easing” dan transisinya layak dilihat. Delay sekitar 500ms memang mengganggu bagi pengguna mahir, tetapi tampaknya membantu memberi konteks saat mempelajari navigasi aplikasi
  • Saya penasaran bagaimana proyek seperti ini bisa berkelanjutan
    Proyek ini sudah dikembangkan selama 2 tahun, tetapi saya tidak melihat sumber pendapatannya. Saya penasaran apakah para developernya mendapat kompensasi dalam bentuk apa pun

    • Proyek ini mendapat seed funding. Pendiri Textual menulis artikel blog terkait, jadi layak dibaca
      https://www.willmcgugan.com/blog/tech/post/from-open-source-...
    • Sebagian besar proyek open source dijalankan dan dipelihara sebagai hobi, atau sebagai proyek sampingan yang terkait dengan pekerjaan berbayar lain
      Pasarnya juga perlu dipertimbangkan. Pada tahun 2023, secara harfiah hampir tidak ada orang yang mau membayar untuk memakai library widget terminal