Mencoba berkenalan dengan Wayland, si Pengganti X

12 Jan 2012

wayland-logo.pngPercobaan kali ini adalah tentang Wayland. Menurut laman di website Wayland, Wayland adalah sebuah protokol untuk compositor untuk berhubungan dengan klien-kliennya sebagaimana sebuah implementasi pustaka C dari protokol tersebut. Compositor itu sendiri dapat berupa sebuah display server mandiri yang berjalan di atas kernel modesetting Linux dan perangkat-perangkat input evdev, dapat pula berupa aplikasi X, atau klien wayland itu sendiri. Klien wayland dapat berupa aplikasi tradisional, server X (tanpa layar atau fullscreen), atau display server lainnya. Mulai sedikit pusing akan keterangan tersebut? Saya juga begitu pada awalnya. Tetapi setelah saya mencobanya sendiri, saya dapat mengatakan bahwa beginilah seharusnya sebuah compositor display di Linux. Saya masih belum tahu apakah wayland dapat digunakan di sistem operasi lain seperti BSD Unix atau MS Windows. Tetapi jika kita melihat rancang bangun arsitektur wayland seharusnya wayland dapat digunakan di mana saja, termasuk di mesin-mesin dengan sistem embed. Jadi bukan tidak mungkin nanti mesin-mesin router berbasis Linux/BSD akan memiliki sebuah tampilan grafis yang akan muncul di layar adminnya sewaktu di-remote.

Satu hal yang membuat saya tertarik dengan wayland adalah pada kemampuannya untuk berbicara secara langsung dengan perangkat keras melalui kernel. Tidak seperti server X yang mengharuskan klien X hanya berbicara kepada server yang sedang berjalan, klien wayland dapat menginisiasi hardware secara langsung melalui lapisan abstraksi perangkat keras kernel. Mirip seperti X, tetapi bedanya instruksi-instruksi klien wayland tidak melalui sebuah server seperti X melainkan langsung diterjemahkan oleh Wayland ke konsol. Jika kita menjalankan weston (klien wayland di konsol) maka instruksi apapun yang kita jalankan di dalam wayland sebenarnya adalah instruksi terhadap konsol tempat kita login. Misalnya kita login di konsol VT1. Maka instruksi-instruksi yang kita jalankan dalam weston hanya berjalan di VT1. Sewaktu saya mencoba menggunakan program terminal milik weston yang sudah mendukung pustaka VTE, instruksi yang saya jalankan di dalam terminal tersebut muncul juga di VT1. Lucu juga cheeky.

wayland-01.png

Hanya saja banyak aplikasi berbasis Xorg tidak dapat dijalankan secara langsung dari dalam weston karena aplikasi berbasis Xorg didesain untuk membutuhkan sebuah display yang dibuat oleh server X. Hingga saat ini beberapa toolkit grafis seperti Qt, Webkit, dan GTK+ masih dalam tahap pengembangan antarmuka untuk menggunakan Wayland secara langsung.

Wayland juga dapat dijalankan di dalam aplikasi lain, termasuk di dalam server X tanpa menjadi sebuah klien terpisah dari X seperti Wine misalnya. Wayland akan menggunakan secara langsung sumber daya yang disediakan X dan lingkungan desktop tempat weston dijalankan.

wayland-03.pngwayland-02.png

Dalam percobaan ini, saya meng-install Wayland di Slackware-Current dengan update terakhir. Tetapi saya harus mengubah beberapa pustaka slackware untuk mendukung Wayland. Berikut paket-paket slackware yang harus saya ganti:

  • glproto ke versi 1.4.14
  • dri2proto ke versi 2.6
  • libdrm ke versi 2.4.30
  • mesa ke versi git 615291f

Serta menambahkan paket-paket berikut ke slackware:

  • wayland
  • libxkbcommon
  • wayland-demos

Khusus untuk wayland-demos, saya harus mengubah sedikit instruksi kompilasi di berkas Makefile karena sebuah program penayang PDF milik weston bernama view selalu gagal dikompilasi karena versi pustaka poppler milik slackware-current tidak memiliki beberapa fungsi yang dibutuhkan. Jika masih ingin mengkompilasi view saya harus mengganti lebih banyak lagi paket slackware, yang resikonya tentu saja kemungkinan banyak program yang X yang akan bermasalah. Misalnya untuk mengaktifkan fitur cairo-egl saya harus mengganti pustaka pixman dan cairo ke versi yang paling baru (versi git). Tentunya ini bukan pekerjaan yang mudah karena banyak paket-paket Slackware yang membutuhkan dua pustaka tersebut. Jadi untuk percobaan kali ini, cukuplah paket-paket tersebut yang saya ganti.

Saya juga membuat sebuah berkas konfigurasi weston:

$ cp /usr/doc/wayland-demos-0.1/weston-desktop-shell.ini ${HOME}/.config/

lalu saya edit untuk menggunakan berkas gambar JPEG yang ada sebagai latar desktop dan mengganti sedikit daftar aplikasi (launcher) yang dapat berjalan di dalam lingkungan weston.

$ vim ${HOME}/.config/weston-desktop-shell.ini

Jangan lupa, wayland sudah mendukung composit desktop yang artinya kita dapat menjalankan aplikasi desktop 3D di dalamnya dengan menggunakan perangkat DRM secara langsung. Jika saya bandingkan dengan X, maka weston hanya menggunakan sumber daya CPU dan RAM yang sangat rendah karena semua proses render desktop dilakukan langsung oleh driver kernel, bukan oleh driver X. Pustaka mesa hanya diperlukan untuk menterjemahkan instruksi-instruksi 3D weston untuk diteruskan ke driver DRM kernel. Jadi render 3D tidak dilakukan oleh mesa. Metode ini sekaligus menjawab pertanyaan pak Brian Rahardi tentang kebutuhan perangkat keras untuk Wayland. Dengan menggunakan metode render tersebut saya kira Wayland tetap dapat berjalan dengan normal di perangkat-perangkat grafis berdaya rendah alias perangkat lawas alias perangkat purba. Tidak menutup kemungkinan untuk mengimplementasikan wayland di dalam perangkat-perangkat mini (gadget) seperti ponsel. Saya pernah mendengar isu bahwa desktop meego atau yang berbasis plasma desktop akan menggunakan wayland, karena dapat meminimalisasi ukuran kode dan lebih dapat menghemat energi. Saya juga lihat toolkit Qt adalah yang paling cepat mengimplementasikan wayland di dalam pustakanya.

Jadi bagaimana? Berani mencoba?