Semakin modernnya tampilan desktop setiap os membuat laptop jadul tidak bisa menjalankan aplikasi dengan performa yang maksimal. Apalagi umumnya sistem operasi saat ini memang di buat untuk mengoptimalkan penggunaan mouse,touchpad,touchscreen, jadi penggunanya lebih mudah berinteraksi dengan layar komputer tanpa perlu menghafal perintah-perintah komputer yang kompleks dan bahasanya yang asing didengar.

Penulis sendiri sudah mencoba berbagai Desktop Environment seperti XFCE, LXDE, LXQT, dan Desktop environment lain yang enteng dan tidak terlalu megah, dengan harapan tetap bisa produktif walaupun menggunakan komputer atau laptop yang jadul.

Tapi kali ini kita akan membahas tentang Window manager, dimana sama halnya dengan Desktop Environment yaitu untuk menampilkan aplikasi berbasis GUI (General User Interface) dimana kita bisa menampilan aplikasi dalam bentuk window.

Bedanya Window manager dalam kelengkapan utilitas desktopnya lebih minim dan perlu konfigurasi tambahan jika memang dibutuhkan. Sedangkan Desktop Environment sendiri lebih lengkap dengan tray icon, widget, launcher dan lain sebagainya. Umumnya desktop environment sendiri dibuat diatas salah satu window manager sebagai dasarnya.

Apa Itu Window Manager?

Seperti yang dijelaskan sebelumnya, Window Manager adalah X client yang mengatur tampilan dan sifat dari setiap frame (windows) dimana setiap tampilan dalam aplikasi digambarkan didalamnya seperti border, title bar pada jendela aplikasi, ukuran window, kemampuan jendela aplikasi untuk di resize dan masih banyak lagi.

Untuk jenisnya sendiri ada 3 jenis window manager.

  1. Staking (floating) window manager menyajikan tampilan dekstop pada umumnya digunakan pada sistem operasi komersil seperti Windows dan OS X. Dimana jendela (window) dapat di tumpuk satu sama lainnya. Untuk contoh di Linux sistem contohnya CWM, Fluxbox, FVWM, OpenBox, dan masih banyak lagi. Jika kamu menggunakan Desktop environment XFCE maka kamu juga menggunakan XFWM.
  2. Tiling (tile) window manager membagi tampilan layar berdasarkan jendela aplikasi (window) yang dibuka. Biasanya jenis ini lebih banyak menggunakan kombinasi tombol keyboard dibanding menggunakan mouse. Adapun contohnya yaitu Bspwm, Ratpoison, EXWM dan yang populer yaitu i3wm.
  3. Dynamic window manager. Sama halnya dengan tiling window manager, Bedanya Dinamic window manager bisa pindah dari tiling ke floating dan sebaliknya. Adapun contohnya yaitu Awesome, Xmonad, Qtile, yang akan kita bahas (DWM) dan masih bayak lagi.

Apa Itu DWM (Dinamic Window Manager)?

Nama dari window manager yang satu ini sama dengan jenis window managernya sendiri yaitu DWM (Dinamic Window Manager). DWM sendiri adalah salah satu software buatan komunitas suckless dan banyak digunakan sebagai inspirasi proyek dinamic window manager lainnya seperti awesome, dwl, qtile,xmonad dan dinamic window manager lainnya.

DWM
Tampilan DWM suckless hasil patch

Di DWM jendela aplikasi di atur dalam mode tilled (membagi layar), monocle (semua jendela ditampilkan satu layar penuh), dan floating (jendela bisa ditaruh diatas jendela lain atau ditumpuk). Semua layout dapat di gunakan secara dinamis untuk mengoptimalkan penggunaan aplikasi dan tugas yang dijalankan oleh aplikasi tersebut.

Setiap window di dwm di kelompokkan menggunakan tag (dari 1 sampai 9) sifatnya hampir sama dengan workspace pada Staking window manager dimana setiap tag dapat menampung beberapa jendela aplikasi sekaligus.

DWM dapat diinstall hampir di seluruh distro linux bahkan juga ada di BSD sistem. Tapi kali ini kita akan menginstallnya di ubuntu. Penginstallanya sendiri ada dua cara yaitu dari Ubuntu Official repository dan mengkompile dari source code.

Instalasi Melalui Repositori Ubuntu

Untuk menginstall dwm di komputer kita membutuhkan beberapa software pendukung diantaranya:

  • dwm window manager yang akan kita install
  • suckless-tools berisi librari dan utilitas untuk menjalankan dwm
  • dmenu sebagai menu launcher, start menunya dwm
  • xorg x display server untuk menampilkan aplikasi bebasis Grafikal interface
  • xdm display manager/login pengguna. opsional jika sistem yang kita install berbasis non grafikal
sudo apt-get install dwm suckless-tools dmenu xorg

Untuk kamu yang menggunakan Ubuntu desktop xdm tidak perlu diinstall karena ubuntu desktop sudah ada gdm3.

Mengkompile dari Source Code

Salah satu cara yang paling umum digunakan yaitu menggunakan hasil kompile dari source kode. Karena selain mendapatkan versi terbaru, kita lebih bebas untuk menambahkan fitur dan sekalian belajar bahasa C. Selain itu konfigurasi DWM hanya bisa dilakukan melalui source kode, jadi kalau kamu ingin menambahkan key binding (shortcut keyboard tambahan) di DWM disarankan pakai yang dari source kode.

adapun software pendukungnya sama dengan install dari repositori dengan tambahan:

  • git untuk mengambil souce code dari suckless server
  • nano text editor untuk mengedit source code, atau bisa juga menggunakan kode editor bawaan vi(vim)
  • x display development library libx11-dev libxft-dev libxinerama-dev
  • make untuk alat kompile source code
  • st teminal bawaan DWM versi kompile dari source code
sudo apt-get install git nano xorg libx11-dev libxft-dev libxinerama-dev suckless-tools dwm dmenu st make

setelah semua terinstall, clone source code menggunakan git.

git clone https://git.suckless.org/dwm

Untuk mengkonfigurasi kamu bisa edit file config.h atau config.def.h. Misal untuk menambahkan key binding untuk firefox dan vlc seperti ini.

pada baris yang dikelompokkan commands di file config tambahkan helper untuk menluncurkan aplikasi

--- baris kode disembunyikan ---
/* commands */
--- baris kode disembunyikan ---
static const char *termcmd[]  = { "st", NULL };
static const char *xfirefox[]  = { "firefox", NULL };
static const char *xvlc[]  = { "vlc", NULL };

--- baris kode disembunyikan ---

Kemundian untuk meluncurkan menggunakan shortcut keyboard (key binding)nya :

--- baris kode disembunyikan ---
static Key keys[] = {
--- baris kode disembunyikan ---
    { MODKEY|ShiftMask,     XK_q,               quit,           {0} },
    { MODKEY,               XK_bracketright,    spawn,  {.v = xfirefox } },
    { MODKEY,               XK_bracketleft,     spawn,  {.v = xvlc } },

};
--- baris kode disembunyikan ---

Setelah semua konfigurasi yang diinginkan sudah sesuai, simpan (nano: ctrl+s), keluar editor (nano: ctrl+x) dan kompile DWM:

sudo make clean install

Untuk melihat hasilnya keluar dari dwm (MODKEY+q) dan login lagi melalui display manager dan pastikan menggunakan DWM sebagai Window managernya. Coba menjalankan firefox dengan shortcut keyboard (MODKEY+]) dan vlc (MODKEY+[).

Untuk memudahkan mencari kombinasi tombolnya jika kamu lupa bisa ditulis di manual (file dwm.1) seperti berikut:

---Teks disembunyikan ---
.TP
.B Mod1\-Control\-[1..n]
Add/remove all windows with nth tag to/from the view.
.TP
.B Mod1\-]
Meluncurkan Firefox.
.TP
.B Mod1\-[
Meluncurkan VLC.
.TP
.B Mod1\-Shift\-q
Quit dwm.
---Teks disembunyikan ---

Tombol MODKEY DWM defaultnya adalah alt keyboard atau bisa diganti di file konfigurasi menjadi tombol start (tombol icon window) keyboard.

Menggunakan DWM

Seperti yang telah di tulis sebelumnya tombol MODKEY default DWM adalah alt. Jadi keybinding lainnya di dwn yang bisa kamu coba:

  • Membuka dmenu: alt + p
  • Membuka terminal (st): alt +shift + enter
  • Berpindah antar jendela aplikasi : alt + j atau alt + k
  • Berpindah tag: alt + nomor_tag
  • Memindahkan jendela aplikasi ke tag tertentu: alt + shift + nomor_tag
  • Memindahkan jendela master/stack: alt + d atau alt + i
  • Menutup jendela aplikasi: alt + shift + c
  • Layout Tile : alt + t
  • Layout Float: alt + f
  • Layout Monocle (full screen): alt + m
  • Keluar DWM: alt + shift + q

Nomor tag di dwm yaitu dari 1 s/d 9 untuk menampilkan semua window dalam satu layar maka bisa menggunkan kombinasi alt + 0.

Untuk kombinasi tombol (keybinding) lainnya yang mungkin telewat disini bisa dilihat di manual page dwm dengan perintah

man dwm

atau konfigurasi manual default

man dwm.default

atau untuk melihat semua manual tentang dwm

man -k dwm

Konfigurasi Tambahan

Untuk konfigurasi tambahan lainnya bisa dilakukan dengan menambahkan kode modifikasi pada source kode dwm, baik dengan menggunakan patch ataupun menulis sendiri kode di dalam source kode yang sudah di clone.

Menggunakan Patch

Perlu di perhatikan saat menggunakan patch adalah versi dwmnya, pada saat penulisan artikel ini versi yang digunakan adalah DWM versi 6.3. Patch dari versi lama terkadang bisa digunakan dan juga ada yang gagal. tapi tidak masalah karena saat patching, file yang diubah otomatis dibackup.

Untuk patch autostart aplikasi:

download patch cool autostart

wget https://dwm.suckless.org/patches/cool_autostart/dwm-cool-autostart-6.2.diff

menggunakan patch:

patch -p1 < dwm-cool-autostart-6.2.diff

Selengkapnya tentang cara patch lihat Paduan patch DWM.

Menambahkan program pendukung (Kustomisasi)

Setelah dipatch kita bisa menggunakan fitur tersebut (dalam praktik ini autostart).Misal untuk menampilkan custom tampilan background menggunakan xsetroot atau statusbar menggunakan slstatus pada file config.def.h tambahkan:

static const char *const autostart[] = {
	"st", NULL,
	"slstatus", NULL,
	NULL /* terminate */
};

Selanjutnya install slstatus atau clone dan compile dari source code. slstatus adalah tools yang juga disediakan komunitas suckless jadi proses konfigurasinya dan sama dengan dwm.

Setelah semuanya terkonfigurasi sesuai keinginan dan aplikasi yang akan di jalankan di startup sudah terinstall, maka tinggal restart dwm dengan relogin ke sistem.

Rekomendasi Patch Lainnya

Selengkapnya tentang cara patch lihat Paduan patch dan memperbaiki gagal patch DWM.