Beberapa waktu lalu saya membutuhkan sebuah tool sederhana untuk membantu menentukan warna ketika membuat aplikasi yang berjalan menggunakan TUI.
Masalahnya cukup sederhana. Ketika membuat interface TUI, warna yang kita lihat pada aplikasi tentu saja akan ditampilkan melalui terminal. Artinya, warna yang terlihat di terminal belum tentu terasa sama dengan warna yang terlihat pada aplikasi grafis.
Nah, dari kebutuhan tersebut kemudian saya membuat Inkcopi. Inkcopi merupakan kependekan dari Inkscape Color Picker, sebuah color picker yang saya buat menggunakan Go dan memang dirancang untuk berjalan di atas TUI. Tujuan utamanya bukan untuk menggantikan color picker pada aplikasi grafis. Justru sebaliknya.
Inkcopi dibuat untuk membantu saya menentukan warna yang akan digunakan pada aplikasi TUI lainnya.
Kenapa Harus TUI?
Mungkin bagian ini terdengar sedikit aneh. Bukankah color picker seharusnya mempunyai interface grafis supaya kita bisa melihat warna dengan lebih jelas?
Ya, kalau tujuannya adalah memilih warna untuk aplikasi grafis, mungkin memang seperti itu. Namun kasusnya sedikit berbeda ketika warna tersebut nantinya akan digunakan pada terminal. Saya ingin melihat warna tersebut sebagaimana warna itu benar-benar terlihat di terminal. Karena Inkcopi sendiri berjalan di atas TUI, warna yang ditampilkan oleh Inkcopi juga melewati terminal yang sama dengan aplikasi TUI yang sedang dibuat.
Dengan cara ini, saya bisa melakukan percobaan warna secara langsung dari lingkungan yang memang nantinya akan digunakan oleh aplikasi. Bukan melihat warna dari sebuah color picker grafis, kemudian berharap warna tersebut akan terlihat sama ketika dimasukkan ke dalam terminal.
Dan, ya, ternyata hal kecil seperti ini cukup membantu ketika sedang menentukan warna untuk interface TUI.
Membaca Palet Inkscape
Salah satu kemampuan utama Inkcopi adalah membaca palet warna dari Inkscape. Inkscape sendiri mempunyai berbagai macam palet yang bisa digunakan ketika membuat gambar atau desain. Inkcopi memanfaatkan palet tersebut sebagai sumber warna.
Warna-warna yang terdapat di dalam palet kemudian ditampilkan sebagai kumpulan blok warna pada interface TUI. Kita bisa berpindah dari satu warna ke warna lainnya menggunakan arrow keys. Selain arrow keys, navigasi warna juga bisa dilakukan menggunakan tombol HJKL.
Ketika posisi kursor berpindah, informasi pada bagian bawah interface juga akan ikut berubah. Jadi, warna yang sedang dipilih tidak hanya ditampilkan sebagai sebuah blok warna saja. Informasi seperti HEX, RGB, dan CMYK juga ditampilkan secara dinamis.
Dengan begitu kita bisa melihat warna sekaligus mengetahui kode warna yang bisa digunakan untuk kebutuhan lain.
Inkcopi juga menyediakan kemampuan untuk berganti palet Inkscape secara langsung. Cukup menekan tombol P, palet yang sedang digunakan akan diganti dengan palet Inkscape lainnya.
Jadi kita tidak perlu keluar dari aplikasi hanya untuk mencoba palet yang berbeda. Semuanya bisa dilakukan langsung dari interface Inkcopi.
Untuk berpindah antara fitur atau mode yang tersedia, digunakan tombol Tab. Tombol ini digunakan untuk berganti antara mode Inkscape Palette, Manual RGB, dan Manual CMYK.
Dengan kombinasi navigasi tersebut, penggunaan Inkcopi tetap bisa dilakukan sepenuhnya dari keyboard.
Mencampur Warna RGB
Selain membaca palet Inkscape, Inkcopi juga mempunyai sebuah jendela khusus untuk mencampur warna RGB secara manual.
Pada bagian ini kita bisa menentukan nilai masing-masing channel Red, Green, dan Blue. Kemudian Inkcopi akan menampilkan preview dari warna yang dihasilkan.
Nilai tersebut bisa diubah dan preview warnanya akan ikut berubah secara realtime. Navigasi pada bagian ini dilakukan menggunakan tombol Up/Down untuk memilih channel, kemudian Left/Right untuk mengubah nilainya.
Jika ingin mengubah nilai dengan lebih cepat, tersedia juga kombinasi Shift+Left/Right untuk menambah atau mengurangi nilai sebesar 10.
Kode warna hasil pencampuran juga akan ditampilkan, termasuk nilai HEX, RGB, dan CMYK.
Jadi kalau misalnya saya sedang mencari warna tertentu untuk digunakan pada sebuah interface TUI, saya bisa bermain-main dengan nilai RGB tersebut sampai mendapatkan warna yang dirasa sesuai. Tidak perlu bolak-balik membuka aplikasi grafis, cukup dari terminal.
Mencampur Warna CMYK
Selain RGB, terdapat juga mode pencampuran warna menggunakan CMYK.
Konsepnya kurang lebih sama. Kita bisa menentukan nilai Cyan, Magenta, Yellow, dan Key/Black secara manual, kemudian melihat hasil warna tersebut melalui preview yang tersedia.
Nilai masing-masing channel bisa diubah menggunakan keyboard. Up/Down digunakan untuk memilih channel, sedangkan Left/Right digunakan untuk mengubah nilainya.
Untuk perubahan yang lebih cepat, tersedia juga Shift+Left/Right yang dapat mengubah nilai sebesar 10.
Informasi warna yang dihasilkan juga akan ditampilkan bersama preview, termasuk nilai HEX, RGB, dan CMYK.
Bagian ini saya sertakan karena kebutuhan warna tidak selalu berhenti pada RGB saja. Kadang kita juga perlu mengetahui bagaimana sebuah warna direpresentasikan dalam model CMYK.
Dibuat untuk Membuat TUI
Jadi kalau ditanya sebenarnya Inkcopi ini dibuat untuk apa, jawabannya cukup sederhana, Inkcopi dibuat untuk membantu membuat aplikasi TUI lainnya.
Saya membutuhkan sebuah alat untuk menentukan warna yang memang bisa dilihat dari lingkungan terminal karena itulah Inkcopi sendiri dibuat menggunakan TUI.
Ada sedikit semacam lingkaran di sini. Saya membuat sebuah aplikasi TUI untuk membantu saya menentukan warna yang nantinya digunakan pada aplikasi-aplikasi TUI lainnya.
Namun justru itu tujuannya. Daripada memilih warna melalui aplikasi grafis lalu memperkirakan bagaimana warna tersebut akan terlihat di terminal, saya bisa langsung melihatnya di terminal.
Hal lain yang cukup penting adalah seluruh interaksi utama Inkcopi memang dirancang agar bisa dilakukan melalui keyboard. Tab digunakan untuk berganti mode, P untuk berganti palet Inkscape, dan arrow keys atau HJKL digunakan untuk navigasi warna.
Dengan begitu, proses memilih dan mencoba warna tidak terasa seperti menggunakan aplikasi grafis yang dipindahkan ke terminal. Memang dari awal interaksinya dibuat mengikuti karakteristik aplikasi TUI.
Inkcopi dan Inkscape
Karena Inkcopi menggunakan palet milik Inkscape, tentu saja Inkscape perlu terinstall pada komputer untuk mendapatkan hasil yang maksimal.
Inkcopi dibuat dengan asumsi bahwa Inkscape memang tersedia pada sistem yang digunakan dan untuk saat ini Inkcopi juga hanya saya bangun untuk Linux. Jadi jangan berharap binary Inkcopi bisa langsung digunakan pada Windows atau macOS.
Memang dari awal proyek ini lebih saya tujukan untuk lingkungan Linux, terutama karena Inkcopi sendiri sangat berkaitan dengan terminal dan aplikasi-aplikasi TUI.
Dibuat Menggunakan Go
Inkcopi ditulis menggunakan Go. Saya memang cukup sering menggunakan Go untuk membuat berbagai utility kecil, dan kali ini Go saya gunakan untuk membuat sebuah aplikasi TUI yang berhubungan dengan warna.
Dengan Go, Inkcopi bisa dibuat sebagai sebuah program yang relatif sederhana dan tidak membutuhkan interface grafis yang rumit karena yang dibutuhkan hanyalah terminal, dan tentunya, Inkscape, apabila ingin menggunakan fitur pembacaan paletnya.
Mendapatkan Inkcopi
Inkcopi merupakan proyek yang saya buat untuk kebutuhan tersebut dan source code-nya bisa dilihat di GitHub. Repository Inkcopi bisa dikunjungi di: github.com/dhocnet/inkcopi
Silakan lihat source code-nya kalau penasaran bagaimana Inkcopi dibuat, atau mungkin ingin mengembangkannya lebih lanjut.
Untuk saat ini, Inkcopi memang bukan sebuah aplikasi yang mempunyai tujuan besar. Ia hanya sebuah utility kecil, sebuah color picker yang berjalan di terminal, membaca palet Inkscape, bisa digunakan untuk mencampur warna RGB dan CMYK, dan yang paling penting, bisa membantu saya melihat warna sebagaimana warna tersebut akan terlihat ketika digunakan pada aplikasi TUI.
Dan, ya, mungkin itu alasan kenapa saya membuat Inkcopi.
Dibuat dengan Bantuan Gemini
Ada satu hal yang mungkin cukup menarik dari Inkcopi.
Sebagian besar kode program ini ditulis dengan bantuan Gemini AI. Saya sendiri lebih banyak berperan dalam menentukan bagaimana Inkcopi harus bekerja.
Mulai dari bagaimana palet dibaca, bagaimana warna ditampilkan, bagaimana navigasi menggunakan keyboard bekerja, bagaimana tombol P digunakan untuk berganti palet, bagaimana tombol Tab digunakan untuk berpindah mode, sampai bagaimana masing-masing bagian interface harus merespons perubahan yang dilakukan pengguna.
Jadi kurang lebih saya hanya mendikte Gemini tentang bagaimana program ini harus berperilaku. Gemini yang kemudian membantu saya menerjemahkan instruksi tersebut menjadi kode Go.
Hahaha.
Mungkin kalau dilihat dari luar kedengarannya agak aneh. Saya yang mempunyai ide, kemudian saya jelaskan apa yang saya inginkan kepada AI, lalu AI yang menuliskan sebagian besar kodenya.
Namun justru dari situ saya bisa lebih fokus pada bagian yang menurut saya lebih penting, yaitu bagaimana tool ini harus bekerja dan bagaimana pengalaman ketika menggunakannya di terminal.
Pada akhirnya, Inkcopi tetap lahir dari kebutuhan yang saya alami sendiri. AI hanya membantu saya mengubah kebutuhan dan ide tersebut menjadi sebuah program yang bisa dijalankan.


