i3WM, Window Manager yang Taktis namun Praktis
Prakata
Setelah setahun lebih menggunakan i3 Window Manager (selanjutnya akan saya sebut sebagai i3wm), saya merasa sudah waktunya untuk membagikan pengalaman dalam menggunakan Window Manager yang sekaligus merupakan Window Manager pertama yang saya gunakan sehari-hari.
Berdasarkan daftar log video pada bandithijo.com/vlog, saya menggunakan i3wm pada 30 Oktober 2017.
Saya merasa perlu untuk membuat catatan mengenai apa saja yang sudah saya manfaatkan dan pergunakan dengan i3wm. Mungkin dari catatan ini, teman-teman yang membaca mendapatkan informasi yang subjektif dari sudut pandang saya sebagai pengguna. Jujur saja, saya pun sangat menyukai tulisan-tulisan yang mengulas tentang suatu teknologi dari sudut pandang pengguna.
Window Manager
Buat temen-temen yang belum mengetahui apa itu Window Manager. Window Manager adalah bagian dari Desktop Environment.
Saya akan coba jelaskan dengan menggunakan tabel, insya Allah dapat langsung dipahami dengan mudah.
GNOME2 | Metacity |
GNOME3 | Mutter |
KDE Plasma | KWin |
Cinnamon | Muffin |
Pantheon | Gala |
Deepin | Deepin-Mutter |
XFCE | xfwm4 |
LXDE | Openbox |
dst… | dst… |
Seperti yang saya sebutkan di awal, Window Manager ini adalah komponen, maka beberapa dari Desktop Environment tersebut ada yang mengijinkan user untuk mengganti Window Manager default yang sudah disertakan bersama Desktop Environment. Asik bukan?
Terdapat banyak sekali Window Manager yang dapat kita gunakan, tanpa harus menggunakan Desktop Environment.
Tipe-tipe Window Manager
Window Manager secara umum, terbagi dalam 3 tipe.
- Stacking, atau Floating adalah Window Manager yang seperti Desktop Environment gunakan, yaitu dengan Window yang melayang dan dapat bertumpuk-tumpuk.
- Tiling, adalah Window Manager yang tidak menumpuk Window antara satu dengan yang lain, dan tersusun kotak-kotak seperti lantai (tile).
- Dynamic, adalah Window Manager yang dapat berganti-ganti diantara kedua tipe di atas menyesuaikan dengan kebutuhan user.
Tabel Window Manager
Berikut ini adalah tabel dari Window Manager yang akan memberikan gambaran bahwa GNU/Linux tidak hanya GNOME dan KDE.
1 | 2bwm | Bspwm | awesome |
2 | aewm | EXWM | catwm |
3 | AfterStep | Herbstluftwm | dwm |
4 | BlackBox | howm | echinus |
5 | Compiz | i3 | FrankenWM |
6 | cwm | Ion3 | spectrwm |
7 | eggwm | Notion | Qtile |
8 | Enlightenment | Ratpoison | wmii |
9 | evilwm | Stumpwm | xmonad |
10 | Fluxbox | subtle | |
11 | Flwm | sway | |
12 | FVWM | way-cooler | |
13 | Gala | WMFS | |
14 | Goomwwm | WMFS2 | |
15 | IceWM | ||
16 | jbwm | ||
17 | JWM | ||
18 | Karmen | ||
19 | KWin | ||
20 | lwm | ||
21 | Marco | ||
22 | Metacity | ||
23 | Muffin | ||
24 | Mutter | ||
25 | MWM | ||
26 | Openbox | ||
27 | pawm | ||
28 | PekWM | ||
29 | Sawfish | ||
30 | TinyWM | ||
31 | twm | ||
32 | UWM | ||
33 | Wind | ||
34 | WindowLab | ||
35 | Window Maker | ||
36 | WM2 | ||
37 | Xfwm |
Untuk detail dari masing-masing Window Manager tersebut dapat teman-teman lihat pada Arch Wiki, di sini.
Ada begitu banyak Window Manager, bukan?
i3wm, yang saya gunakan termasuk ke dalam jajaran Tiling Window Manager. Meskipun sebenarnya i3wm juga dapat berganti-ganti layout menjadi tiling, stacking, tabbed, bahkan scratchpad. i3wm juga termasuk dalam tree based Window Manager.
Jadi, mengapa saya menggunakan Window Manager?
Berdasarkan data-data di atas,
- Saya ingin mencoba mengenal hal yang baru, selain Desktop Environment. Window Manager adalah dunia berbeda yang ternyata sangat luas sekali. Meskipun tidak mungkin saya cicipi semuanya.
- Banyak fitur-fitur yang terdapat di dalam Desktop Environment yang sebenarnya tidak saya perlukan.
- Kebebasan memilih komponen-komponen aplikasi pendukung sistem operasi yang menurut saya lebih baik dari aplikasi pendukung bawaan Desktop Environment.
i3 Window Manager
Pertemuan dengan dwm
Berawal dari melihat video-video YouTube dari Kai Hendry channel. Saya memperhatikan bagaimana ia menggunakan dwm Window Manager. Pengalaman yang baru pertama kali saya dapati.
Saat itu, kira-kira inilah yang saya ada dibenak saya.
- Bagaimana bisa ia terlihat sangat mudah dan nyaman berpindah antar satu Workspace ke Workspace menggunakan keyboard shortcut?
- Bagaimana bisa ia begitu terlihat nyaman melakukan window resize hanya dengan menggunakan keyboard shortcut?
- Bagaimana bisa ia tidak direpotkan dengan menyusun Window yang sedang terbuka dalam satu Workspace?
- Bagaimana bisa window yang terbuka itu tidak saling bertumpuk satu dengan yang lain?
Saya pun mencoba memasang dwm, namun karena belum pernah sama sekali mengerti hal-hal apa saja yang saya perlukan dan saya butuhkan dalam menggunakan Window Manager, saya pun kebingungan memilih patch apa yang hendak saya pergunakan. Lantas, saya pun menyerah pada dwm.
Mencoba Memahami i3wm
Kemudian mengingat-ingat kembali, kalau distribusi Manjaro, beberapa kali selalu memberikan info terbaru seputar Manjaro i3 edition pada blog mereka. Kemudian, saya pun mencoba mencari referensi di YouTube mengenai i3wm.
Setelah beberapa kali melihat video ulasan i3wm dari beberapa user, saya pun memutuskan untuk mempelajarinya terlebih dahulu. Kebetulan terdapat video yang memberikan informasi dasar bagaimana cara menggunakan i3wm.
Gambar 1 - Code Cast - i3wm (Playlist) at YouTube
Menurut saya video ini sangat bagus sekali sebagai pondasi awal mengenal i3wm. Video di atas juga termasuk dalam jajaran video yang direkomendasikan oleh website i3wm.org, di sini.
Saya sarankan untuk dapat mempelajari video-video lain yang direkomendasikan oleh i3wm.org.
Gambar 2 - i3 window manager screencast v4.1 at YouTube
Gambar 3 - i3 screencast: containers and the tree data structure at YouTube
Gambar 4 - i3 - An Improved Tiling Window Manager at YouTube
Sebenarnya, istilah Tiling window manager, bukan pertama kali saya dengar. Saya pernah mendengar dari percakapan beberapa teman-teman di group Telegram BGLI (Belajar GNU/Linux Indonesia). Kang Sucipto pun sudah pernah menawarkan untuk menggunakan i3wm, namun saat itu saya belum memahami apa kelebihannya dan keuntungan menggunakan Tiling window manager.
Mengapa i3 Window Manager?
Saya akan coba merangkum dengan beberapa point, mengapa saya akhirnya memutuskan untuk mantap menggunakan i3wm dan tidak pernah kembali menggunakan Desktop Environment seperti GNOME dan XFCE.
Konfigurasi Menggunakan Plain Text
Untuk yang sudah pernah menggunakan Vim dan Tmux, pasti sudah familiar dengan file konfigurasi yang berbentuk plain text. Cukup menambahkan option-option di dalam file ini, maka program akan mengalami perubahan seperti yang kita isikan di dalam file konfigurasi. Contoh lain aplikasi yang menggunakan file konfigurasi berupa plain text, seperti: URxvt, Termite, Ranger, mpv, mpd, ncmpcpp, irssi, neomutt, newsboat, dunst, compton, cmus, dll.
Ada pula file konfigurasi yang bukan merupakan plain text, namun berupa file header (salah satu contohnya), seperti yang digunakan oleh dwm window manager dan st terminal yang menggunakan bahasa pemrograman C. Sehingga, untuk mendapatkan hasil perubahan yang sudah kita lakukan, kita perlu meng-compile kembali program tersebut. Mantap kan?
Inilah alasan, mengapa saya katakan file konfigurasi yang menggunakan plain text seperti yang digunakan oleh i3wm termasuk mudah digunakan.
i3wm dapat membaca file konfigurasi yang terdapat pada:
~/.i3/config
atau~/.config/i3/config
Namun, untuk alasan kerapian struktur direktori, saya lebih senang mengumpulkan semua file konfigurasi pada direktori ~/.config/
.
Keyboard Shortcut adalah Segalanya
Untuk menggunakan i3wm, sebenarnya tidak juga keyboard sentris, dapat pula menggunakan mouse, namun, saya memang sengaja memaksakan diri saya untuk mencoba workflow yang baru. Ternyata, memang sangat luar biasa mengoperasikan Window Manager tanpa perlu menggunakan mouse.
Kalau teman-teman yang sudah menggunakan Vim sebagai text editor pasti akan memahami bagaimana kemudahan yang didapat setelah mengoperasikan text editor tanpa menggunakan mouse. Ya, itu lah yang akan teman-teman dapatkan pula saat menggunakan i3wm.
Saya akan menunjukkan apa saja yang dapat dilakukan dengan menggunakan keyboard untuk mengoperasikan i3wm dengan sambil menunjukkan blok-blok kode konfigurasi yang ada di dalam file konfigurasi i3wm saya, ~/.config/i3/config
.
Menentukan Modifier Key
Pertama kali kita harus menentukan modifier key, seperti leader key dalam Vim, atau Prefix dalam Tmux.
Bisanya tawarannya antara dua, tombl SUPER atau tombol ALT.
Saya memilih menggunakan tombol SUPER untuk meminimalisir bentrokan dengan keyboard shortcut aplikasi GUI yang rata-rata banyak menggunakan tombol ALT.
$HOME/.config/i3/config
11
2set $mod Mod4
3
Saya menggunakan $mod
berupa Mod4
yang merupakan tombol SUPER. Sebagaian user i3, adapula yang menggunakan ALT, namun sangat jarang saya temui.
Memanggil Terminal
Untuk memanggil Terminal yang kita gunakan, dalam kasus ini saya menggunakan st terminal dari Suckless project.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Start a Terminal10bindsym $mod+Return exec --no-startup-id st11
Dapat dilihat pada kode di atas bahwa, saya menggunakan SUPER+ENTER untuk memanggil st
yang merupakan nama program dari st terminal.
Teman-teman dapat mengganti st dengan terminal favorit kalian. Seperti gnome-terminal, xfce4-terminal, urxvt, termite, dll.
Pemanggil Aplikasi
Application launcher, pemanggil aplikasi. Kalau di GNOME saya biasa menggunakan tombol SUPER untuk memanggil application launcher, nah pada i3wm, kita bebas untuk menggunakan aplikasi yang berfungsi sebagai application launcher dan bebas pula ingin kita letakkan pada keyboard shortcut yang mana.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Start Rofi (a program launcher)10bindsym $mod+d exec --no-startup-id j4-dmenu-desktop --dmenu='rofi -dmenu -lines 6 -width 400 -i -sort -p RUN'11
Pada contoh di atas, saya menggunakan aplikasi Rofi sebagai application launcher yang saya letakkan pada SUPER+D.
Gambar 5 - Rofi+dmenu
Sebenarnya saya memanfaatkan dmenu sebagai backend yang berfungsi me-list semua aplikasi saya, kemudian Rofi yang bertugas memberikan tampilan seperti di atas.
Jadi, menggunakan dmenu saja, sebenarnya juga bisa.
Sebelumnya, saya menggunakan paket dmenu
, namun terasa ada delay yang sangat mengganggu. Kemudian, setelah mencari informasi, saya memutuskan untuk menggunakan paket j4-dmenu-desktop
(AUR) karena terasa lebih cepat saat dikombinasikan dengan Rofi.
Konfigurasi Font
Untuk mengatur font pada i3wm, biasaya font akan terlihat pada Title Bar yang ada pada Window Container.
$HOME/.config/i3/config
11
22334455667# ...
8# ...910# Font for Window Titles. Will also be used by the bar unless a different font11# is used in the bar {} block below.12font pango:Fantasque Sans Mono 1013
10
, adalah size dari font.
Window Container
Pada i3wm, Window akan saya sebut sebagai Container. Ya, sesuai dengan penamaannya “kontainer” yang berarti tidak hanya dapat menampung 1 buah Window, namun dapat menampung banyak Window dalam 1 Container. Sehingga akan lebih cocok kalau disebut sebagai Container.
Berpindah Focus Container
Untuk berpindah-pindah fokus antara satu Container ke Container yang lain, saya menggunakan:
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# Change Focus13bindsym $mod+h focus left14bindsym $mod+j focus down15bindsym $mod+k focus up16bindsym $mod+l focus right17
SUPER+H | Pindah fokus ke kiri |
SUPER+J | Pindah fokus ke bawah |
SUPER+K | Pindah fokus ke atas |
SUPER+L | Pindah fokus ke kanan |
Bagaimana, apakah terlihat familiar dengan navigasi tersebut?
Seperti Vim bukan?
Saya memang sengaja membuatnya agar terasa seperti Vim, untuk memudahkan dalam mengingat.
Secara default, seingat saya kombinasinya tidak menggunakan H, J, K, L, melainkan menggunakan J, K, L, ;.
Alternatifnya selain menggunakan tombol huruf, saya juga mengaturnya pada tombol arrow.
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# Alternatively, you Can Use the Arrow Keys13bindsym $mod+Left focus left14bindsym $mod+Down focus down15bindsym $mod+Up focus up16bindsym $mod+Right focus right17
Memindahkan Focus Container
Memindahkan di sini dapat kita gunakan untuk memindahkan (menukar) Container pada tiling layout dari kanan ke kiri, viceversa. Dapat pula digunakan untuk menggerakan Container pada floating layout.
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# Move Focused Window13bindsym $mod+Shift+h move left 1px14bindsym $mod+Shift+j move down 1px15bindsym $mod+Shift+k move up 1px16bindsym $mod+Shift+l move right 1px17
Saya menggunakan SUPER+SHIFT+HJKL.
Pada kode di atas, saya menggunakan kombinasi keyboard shortcut tersebut untuk menggerakkan Container sebesar 1 px apabila pada floating layout. Namun, pada tiling layout, tetap seperti fungsi asal, yaitu memindahkan (menukar) Container dari kiri kanan, atas bawah, viceversa.
Saya juga membuatkan alternatif untuk bergerak atau berpindah sebesar 20 px agar lebih cepat.
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# Alternatively, You Can Use the Arrow Keys13bindsym $mod+Shift+Left move left 20px14bindsym $mod+Shift+Down move down 20px15bindsym $mod+Shift+Up move up 20px16bindsym $mod+Shift+Right move right 20px17
Mengganti Orientasi Container
Pada i3wm, kita dapat mengganti-ganti orientasi dari Container yang sedang terbuka. Misalkan terdapat 2 buah Container kanan dan kiri, hanya dengan menekan kombinasi keyboard kita dapat membuat menjadi atas dan bawah.
Kira-kira seperti ini ilustrasinya,
# 2 Container, dengan Vertical orientation +-----+-----+ | | | | 1 | 2 | | | | +-----+-----+ # 2 Container, dengan Horizontal orientation +-----+-----+ | 1 | +-----------+ | 2 | +-----+-----+
Untuk dapat melakukan ini, saya menggunakan,
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# Split in Horizontal Orientation13bindsym $mod+b split h1415# Split in Vertical Orientation16bindsym $mod+v split v17
SUPER+B | Horizontal orientation |
SUPER+V | Vertical orientation |
Hal ini, hanya dapat dilakukan pada tiling layout atau bisa juga kita sebut dengan split layout.
Kita dapat mengatur default orientation saat menggunakan Tiling layout, apakah ingin Vertical atau Horizontal.
$HOME/.config/i3/config
11
223344556677889910# ...
11# ...1213# Orientation for New Workspaces14# New workspaces get a reasonable default orientation: Wide-screen monitors15# (anything wider than high) get horizontal orientation, rotated monitors16# (anything higher than wide) get vertical orientation.17# Syntax: default_orientation horizontal|vertical|auto18default_orientation horizontal19
Membuat Fullscreen Container
Terkadang kita memerlukan untuk membuat sebuah Window menjadi fullscreen karena alasan tertentu. Tentu saja i3wm juga mempunyai fitur ini.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Enter Fullscreen Mode for the Focused Container10bindsym $mod+f fullscreen toggle11
Saya menggunakan SUPER+F. Untuk membuat Container yang sedang difokuskan menjadi fullscreen.
Perhatikan, terdapat option toggle
yang menandakan keyboard shortcut ini berfungsi selayaknya switch yang dapat kita ON dan OFF kan.
# Tiling layout yang terfokus pada Container 1 +-----+-----+ | | | | [1] | 2 | | | | +-----+-----+ # Setelah menekan keyboard shortcut untuk fullscreen pada Container 1 +-----------+ | | | 1 | | | +-----------+ # Viceversa, pada Container 2
Menggati Layout Container
Pada pembahasa di atas, saya beberapa kali menyebutkan tentang tiling layout. i3wm mempunyai 3 macam layout (sepertinya, kalau scratchpad tidak dihitung sebagai layout), yaitu:
- Tiling layout atau Split layout
- Tabbed layout
- Stacking layout
Tiling atau Split layout ini, sebagaimana sudah dicontohkan pada tulisan-tulisan di atas.
# Tiling atau Split layout +-----+-----+ +----------+ +-----+-----+ +-----+-----+ | | | | 1 | | | 2 | | 1 | 2 | | 1 | 2 | +----------+ + 1 +-----+ |-----+-----+ | | | | 2 | | | 3 | | 4 | 3 | +-----+-----+ +----------+ +-----+-----+ +-----+-----+
Tabbed layout ini bayangkan seperti sedang menggunakan Browser memiliki Tab.
# Tabbed layout +-[1]-+--2--+ +--1--+-[2]-+ | | | | | 1 | | 2 | | | | | +-----------+ +-----------+
Stacking layout pada i3wm ini tidak seperti stacking pada Desktop Environment dengan Window yang melayang. Stacking layout pada i3wm tetap dengan Container yang memenuhi seluruh layar (maximize).
# Stacking layout +----[1]----+ +-----1-----+ +-----2-----+ +----[2]----+ | | | | | 1 | | 2 | | | | | +-----------+ +-----------+
Kalau masih bingung, saya ambilkan gambar dari i3wm.org.
Gambar 6 - Layout yang dimiliki oleh i3wm
Kita dapat mengatur default layout yang akan kita gunakan pada setiap Workspace.
$HOME/.config/i3/config
11
2233445566778# ...
9# ...1011# Layout Mode for New Containers12# This option determines in which mode new containers on workspace level will start13# Syntax: workspace_layout default|stacking|tabbed14workspace_layout default15
Saya menggunakan default, yang berarti Tiling atau Split layout.
Membuat Floating Container
Tidak semua Window harus dalam keadaan maximize. Contohnya seperti: dialog notifikasi window, popup window, open dan save dialog window, password dialog window, dll. i3wm secara cerdas dapat mengenali dialog-dialog seperti ini. Sehingga kita tidak perlu mengkonfigurasi lagi.
Lantas, bagaimana apabila kita ingin membuat Container kita menjadi floating?
Sangat mudah, saya menggunakan SUPER+SHIFT+SPACE.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Toggle Tiling / Floating10bindsym $mod+Shift+space floating toggle border none11
Lagi-lagi saya beritahukan bahwa keyboard shortcut ini saya set menjadi toggle
, sehingga dapat digunakan untuk mengaktif dan disablekan floating pada Container.
# Container 1 dan Container 2 dalam Tiling/Split layout +-------+-------+ | | | | | | | [1] | 2 | | | | | | | +-------+-------+ # Container 1 saya buat menjadi Floating +---------------+ | 2 | | +-------+ | | | [1] | | | +-------+ | | | +---------------+
Untuk berpindah focus antar Cotainer floating dengan yang tidak, dapat menggunakan SUPER+SPACE.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Change Focus Between Tiling / Floating Windows10bindsym $mod+space focus mode_toggle11
Ilustrasinya seperti ini.
# Fokus pada Container 1 yang sedang dalam bentuk floating +---------------+ | 2 | | +-------+ | | | [1] | | | +-------+ | | | +---------------+ # Fokus pada Container 2 yang sedang dalam bentuk Tiling +---------------+ | [2] | | +-------+ | | | 1 | | | +-------+ | | | +---------------+
Parent dan Child Container
Saya sudah menyebutkan pada tulisan di atas, bahwa i3wm merupakan tree based window manager. Kita dapat mengasumsikan Container seperti sebuah ranting dan daun.
# Container 1 dan 2, pada Tiling layout di Workspace 1 +-------------+ +-----+-----+ | WORKSPACE 1 | | | | +-------------+ | 1 | 2 | => / \ | | | / \ +-----+-----+ +-----+ +-----+ | 1 | | 2 | +-----+ +-----+ # Saya merubah orientasi pada Container 2 menjadi split Vertical (terbagi atas bawah) # dengan menggunakan SUPER+V pada Container 2, # kemudian buka Container 3 +-------------+ | WORKSPACE 1 | +-------------+ / \ +-----+-----+ / \ | | 2 | +-----+ +---------+ | 1 +-----+ => | 1 | | SPLIT V | | | 3 | +-----+ +---------+ +-----+-----+ / \ / \ +-----+ +-----+ | 2 | | 3 | +-----+ +-----+
Seperti pohon faktorial yaa?
Tidak ada batasan sampai berapa cabang ranting dan daun yang ingin kalian buat.
Split Vertical berarti di dalam satu Container akan dibagi kedalam 2 ruang, atas dan bawah. Begitu pula untuk Split Horizontal, berarti Container akan dibagi menjadi 2 ruang, kanan dan kiri.
Nah, yang dimaksud dengan PARENT di sini adalah ranting sedangkan CHILD adalah daun.
Sehingga, apabila kita ingin melakukan focus terhadap Container 2 dan 3, ibarat ranting yang memiliki 2 daun, daun Container 2 dan 3. Ini disebut Focus Parent.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Focus the Parent Container10bindsym $mod+a focus parent11
Sebaliknya, untuk focus kepada Container 1, atau Container 2 saja, atau 3 saja, ibarat daun pada ujung ranting. Kita sebut dengan Focus Child.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Focus the Child Container10bindsym $mod+Shift+a focus child11
Pembahasan mengenai layout ini sangat kompleks dan seru sekali. Sepertinya, tidak sanggup kalau harus menuliskan semuanya. Mungkin kapan-kapan akan saya buatkan video ulasannya saja.
Memanfaatkan Scratchpad
Pada i3wm, kita tidak mengenal minimize. Dan memang tidak diperlukan fitur ini.
Untuk apa kita memerlukan fitur minimize kalau kita memiliki 10 Workspaces?
Lantas, apabila kita sedang membuka Text Editor pada Workspace 1, lalu ingin menggunakan Browser, tidak diperlukan me-minimize text editor, cukup jalankan Browser pada Workspace selanjutnya.
Apakah ada diantara teman-teman yang berpikiran menggunakan banyak Workspace akan memberatkan memory (RAM)?
Oh, come on geys… Ini Window Manager, bukan Browser. Manfaatkan fitur Workspace semaksimal mungkin untuk memanajemen window kalian. Memanfaatkan banyak Workspace sama sekali tidak ada hubungan langsung dengan memberatkan memory.
Nah, lantas, akan ada kasus dimana kita ingin memanggil aplikasi bantuan saat sedang fokus pada aplikasi utama.
Contohnya:
-
Sedang membaca ebook dengan Evince. Kemudian menemukan kata yang belum diketahui artinya, lantas kita ingin membuka gKamus.
-
Sedang melakukan pemilihan warna untuk CSS code kita, lantas kita memerlukan apliaksi GColor3 untuk mengambil sampel warna.
Dari kedua kasus di atas, apakah kita langsung mengeluarkan atau memindahkan aplikasi pembantu (gKamus dan GColor3) ke tempat lain?
Akan sangat repot untuk memanggilnya kembali karena kita tidak ingin berpindah Workspace karena alasan tertentu.
Solusi dari masalah di atas adalah dengan memanfaatkan Scratchpad.
Scratchpad ini ibarat seperti buku coretan, kita dapat panggil dan sembunyikan sesuai kemauan kita.
Untuk menginisialisasi Container menjadi sebuah Scratchpad, saya menggunakan SUPER+SHIFT+-.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Make the Currently Focused Window a Scratchpad10bindsym $mod+Shift+minus move scratchpad11
Lalu untuk memanggil dan menyembunyikannya, saya mengguakan SUPER+-.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Show the First Scratchpad Window10bindsym $mod+minus scratchpad show11
Membuat Sticky Container
Secara sederhana fitur ini mirip dengan Always on Top pada Window yang dimiliki oleh Desktop Environment.
Saya biasa menggunakan fitur ini saat melakukan screencasting dengan menampilkan output dari kamera WebCam agar tetap dapat dilihat saat berpindah-pindah antar Workspace.
$HOME/.config/i3/config
11
22334455667# ...
8# ...910# Sticky Floating Windows11# Syntax: sticky enable|disable|toggle12bindsym $mod+Shift+plus sticky toggle13
Membuat Default Floating Container
Pasti akan ada beberapa aplikasi yang memiliki Window yang kecil, namun pada i3wm akan dijalankan secara maximize, dan kita harus melakukan floating terhadap aplikasi tersebut secara manual. Beberapa contoh dari aplikasi tersebut adalah GKamus, GColor3, Gnome Power Statistics, Pavucontrol, Arandr, Blueman Manager, dll.
Untuk menginisialisasi agar aplikasi-aplikasi tersebut saat dijalankan sudah berada pada kondisi floating container, kita dapat mengaturnya pada file konfigurasi. Asik bukan?
Saya akan mencontohkan beberapa bentuk variasi konfigurasi yang saya pergunakan.
$HOME/.config/i3/config
11
223344556677889910101111121213# ...
14# ...1516# Enable Floating Mode for Specific Programs17for_window [class="Gkamus"] floating enable border normal 118for_window [class="Gnome-power-statistics"] floating enable border normal 119for_window [class="Modem-manager-gui"] floating enable border normal 120for_window [class="Gnome-system-monitor"] floating enable border normal 121for_window [class="Nm-connection-editor"] floating enable border normal 122for_window [class="zoom" title="Zoom - Free Account"] floating enable border pixel 1 move right 470px,move down 0px23for_window [class="st-256color" title="ncpamixer"] floating enable border normal 1 resize set 500 600,move right 90px,move up 80px24for_window [class="scrcpy" title="Mi-4c"] floating enable border none move right 460px,move down 0px25
Sebaliknya pula, kita dapat membuat aplikasi yang secara default berjalan floating menjadi tidak.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Disable Floating Mode for Specific Programs10for_window [class="pavucontrol-qt"] floating disable11
Meskipun sangat jarang saya temui aplikasi yang sejak awal sudah berada pada floating container, namun saya rasa perlu juga untuk memiliki konfigurasi ini apabila sewaktu-waktu diperlukan pada kasus yang lain.
Menutup/mengakhiri Window Container
Di dalam sebuah Window, dapat berupa apa saja. Aplikasi, program, dialog, terminal, pokoknya apa saja yang ada di dalam Window, kita dapat mengakhirinya dengan SUPER+SHIFT+Q.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Kill Focused Window10bindsym $mod+Shift+q kill11
Hal ini diperlukan mengingat i3wm tidak menyediakan tombol close atau menu exit pada title bar. Tentu saja hal ini malah membuat proses menutup/mengakhiri sebuah window menjadi lebih praktis tanpa perlu menggerakkan mouse ke arah menu atau tombol close pada title bar.
Mengganti Window Container Border Color
Kita dapat mengganti warna dari Window Container border.
Dimulai dari mendefinisikan variabel dan mengisikan warnanya.
$HOME/.config/i3/config
11
223344556677889910101111121213# ...
14# ...1516# Define Color Variables17set $bg-color #B5890018set $text-color #002B3619set $border-color #B5890020set $inactive-bg-color #264A5321set $inactive-text-color #657B8322set $urgent-bg-color #CB4B1623set $urgent-text-color #FFFFFF24set $indicator #FFAF0025
Setelah itu baru masukkan variabel-variabel tersebut dengan fungsinya.
$HOME/.config/i3/config
11
2233445566778899101011# Define Color Variables
12# ...13# ...1415# Window Colors16# Opetion Name # Border # Background # Text # Indicator17client.focused $bg-color $bg-color $text-color $indicator18client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-color $indicator19client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $indicator20client.urgent $urgent-bg-color $urgent-bg-color $urgent-text-color $indicator21
Hasilnya akan seperti ini.
Gambar 7 - Window Container Aktif (kiri) dan Window Container Tidak Aktf (kanan)
Menentukan Container Border
Kita dapat menentukan apakah aplikasi yang kita panggil, akan memiliki border seperti apa. Atau tidak memiliki border sama sekali.
$HOME/.config/i3/config
11
22334455667# ...
8# ...910# Window Container Border Settings11# syntax: new_window normal|none|pixel12new_window none13
Dapat pula kita atur, apakah floating container secara default memiliki border atau tidak.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Syntax: new_float normal|none|pixel10new_float normal 111
Terdapat 3 option yang dapat kita gunakan.
normal |
Border + Title Bar |
pixel |
Border saja |
none |
Tanpa Border |
Untuk option normal
dan pixel
, kita dapat menambahkan value dari ketebalan border seperti 0
, 1
, atau 2
.
Kita juga dapat memanipulasi Window Container Border secara langsung menggunakan keyboard shortcut.
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# For Direct Border Changing with Keyboard Shortcut13bindsym $mod+Shift+t border normal 014bindsym $mod+t border normal 115bindsym $mod+Shift+y border pixel 116bindsym $mod+y border none17
Hasilnya akan seperti ini,
Border Normal 0, menggunakan SUPER+SHIFT+T
Gambar 8 - Window Container Border Normal 0
Border Normal 1, menggunakan SUPER+T
Gambar 9 - Window Container Border Normal 1
Border Pixel 1, menggunakan SUPER+SHIFT+Y
Gambar 10 - Window Container Border Pixel 1
Border None, menggunakan SUPER+Y
Gambar 11 - Window Container Border None
Menentukan Container Border Aplikasi Tertentu
Seperti halnya floating container, kita dapat juga menentukan contianer border pada aplikasi yang kita inginkan.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Enable Specific Window Border10for_window [class="Wine"] border normal 111
Contohnya, seperti di atas. Kalian dapat menambahkan sendiri. Hampir sama seperti floating container, hanya berbeda pada parameter border di bagian buntutnya saja.
Atau, dapat pula sekalian ditambahkan pengaturan border pada saat menentukan floating container, seperti contoh di sini.
Merubah Title Container
Kita dapat pula merubah-rubah alignment dari Title yang ada pada Title Bar.
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# Window Title Alignment13# This option determines the window title’s text alignment.14# Default is left15# Syntax: title_align left|center|right16title_align left17
Selain itu, dapat pula merubah format dari tulisan yang ada di Title bar.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# For Adding Space and [] Character on Window Title10for_window [class="^.*"] title_format " > %title"11
Membuka Container Kosong
Untuk alasan tertentu, mungkin kita ingin membuka Container kosong. Misalkan seperti yang biasa saya lakukan, untuk sekedar melihat Conky yang ada pada desktop. Atau untuk sekedar gaya-gaya saja saat mengambil screenshot.
Saya menggunakan SUPER+O.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Open the Blank Space "i3 open" or "i3-msg open"10bindsym $mod+o open11
Workspaces
Secara default pada file konfigurasi i3wm sudah menyediakan 10 Workspaces.
Kita dapat mendifinisikan Workspace dengan cara seperti ini.
$HOME/.config/i3/config
11
22334455667788991010111112121313141415# ...
16# ...1718# Define Workspace19set $workspace1 "1"20set $workspace2 "2"21set $workspace3 "3"22set $workspace4 "4"23set $workspace5 "5"24set $workspace6 "6"25set $workspace7 "7"26set $workspace8 "8"27set $workspace9 "9"28set $workspace10 "10"29
Berpindah antar Workspaces
Setelah kita mendifinisikan Workspace, kita berikan pengaturan keyboard shortcut untuk dapat berpindah antar Workspace dengan mudah.
Saya meletakkan keyboard shortcut untuk berpindah antar Workspace pada SUPER+1 sampai 0.
$HOME/.config/i3/config
11
22334455667788991010111112121313141415# ...
16# ...1718# Switch to Workspace19bindsym $mod+1 workspace $workspace120bindsym $mod+2 workspace $workspace221bindsym $mod+3 workspace $workspace322bindsym $mod+4 workspace $workspace423bindsym $mod+5 workspace $workspace524bindsym $mod+6 workspace $workspace625bindsym $mod+7 workspace $workspace726bindsym $mod+8 workspace $workspace827bindsym $mod+9 workspace $workspace928bindsym $mod+0 workspace $workspace1029
Memindahkan Container ke Workspace Lain
Kemudian, Apabila diperlukan, kita juga dapat memindahkan Container dari satu Workspace ke Workspace yang lain.
Untuk melakukan hal ini, saya meletakkan keyboard shortcut pada SUPER+SHIFT+1 sampai 0.
$HOME/.config/i3/config
11
22334455667788991010111112121313141415# ...
16# ...1718# Move Focused Container to Workspace19bindsym $mod+Shift+1 move container to workspace $workspace120bindsym $mod+Shift+2 move container to workspace $workspace221bindsym $mod+Shift+3 move container to workspace $workspace322bindsym $mod+Shift+4 move container to workspace $workspace423bindsym $mod+Shift+5 move container to workspace $workspace524bindsym $mod+Shift+6 move container to workspace $workspace625bindsym $mod+Shift+7 move container to workspace $workspace726bindsym $mod+Shift+8 move container to workspace $workspace827bindsym $mod+Shift+9 move container to workspace $workspace928bindsym $mod+Shift+0 move container to workspace $workspace1029
Menurut saya ini adalah kombinasi keyboard shortcut paling natural untuk berpindah-pindah antar Workspace. Sangat praktis namun taktis. Taktis dalam hal seperti ini contoh kasusnya.
- Saya sedang mengerjakan tulisan untuk Blog. Vim+Tmux saya buka pada Workspace 1.
- Kemudian sambil melihat hasilnya pada Browser yang saya buka pada Workspace 2.
- Untuk urusan editing file-file gambar, saya mengerjakannya pada Workspace 3 yang berisi File Manager sambil terkadang membuka Inkscape dan GIMP di workspace ini juga.
- Workspace 4,5,6 jarang sekali saya pergunakan karena letaknya yang agak di posisi tengah, sehingga agak menyulitkan jari-jemari saya untuk menjangkaunya tanpa perlu mengangkat telapak tangan.
- Terkadang saya sambil mengecek Email Client yang saya buka pada Workspace 7.
- Kalau bosan menulis, biasanya saya mencari bahan bacaan pada daftar blog/website langganan saya, melalui RSS feed reader yang saya letakkan pada Workspace 8.
- Sembari kadang-kadang mengecek apakah terdapat kawan-kawan sesama pengguna GNU/Linux yang memerlukan bantuan di group Telegram, aplikasi Telegram biasanya saya letakkan pada Workspace 9.
- Aktifitas yang memerlukan Terminal, biasanya saya buka pada Workspace 10.
Kira-kira seperti di atas ini sebagian sekenario yang sering saya lakukan. Tidak selalu sama, tergantung dari aktivitas yang sedang saya kerjakan.
Kita dapat membuat aplikasi yang kita ingin jalankan, secara default terbuka pada Workspace tertentu. Misalkan, kita selalu menggunakan browser pada Workspace 2, IRC client pada Workspace 6, email client pada Workspace 7, RSS feed reader pada Workspace 8, Telegram pada Workspace 9, dll.
$HOME/.config/i3/config
11
223344556677889910# ...
11# ...1213# Assign Startup Application to Specific Workspace14assign [class="Firefox"] $workspace215assign [class="st-256color" title="irssi"] $workspace616assign [class="st-256color" title="neomutt"] $workspace717assign [class="st-256color" title="newsboat"] $workspace818assign [class="Telegram"] $workspace919
Untuk mendapatkan nilai class= dan nilai title=, saya menggunakan perintah xprop
yang langsung saya jalankan dari Terminal. Kemudian, tinggal klik Window Container mana yang ingin diketahui nilai class dan title nya.
Hasilnya, akan seperti ini kira-kira. (Contoh: Firefox)
_NET_WM_OPAQUE_REGION(CARDINAL) = 2, 0, 596, 2, 0, 2, 600, 498 _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 65011721, 65011722 _NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x3e00008 WM_CLIENT_LEADER(WINDOW): window id # 0x3e00001 _NET_WM_PID(CARDINAL) = 3842 WM_LOCALE_NAME(STRING) = "en_US.UTF-8" WM_CLIENT_MACHINE(STRING) = "BanditHijo-X260" WM_NORMAL_HINTS(WM_SIZE_HINTS): program specified minimum size: 138 by 162 program specified base size: 0 by 0 window gravity: NorthWest WM_CLASS(STRING) = "python3", "Python3" WM_ICON_NAME(STRING) = "SoundConverter" _NET_WM_ICON_NAME(UTF8_STRING) = "SoundConverter" WM_NAME(STRING) = "SoundConverter" _NET_WM_NAME(UTF8_STRING) = "SoundConverter"
Perhatikan bagian yang saya marking adalah, bagian yang kita perlukan.
class= |
WM_CLASS(STRING) = |
"Python3" |
title= |
WM_NAME(STRING) = |
"SoundConverter" |
Memanfaatkan Workspace pada i3wm benar-benar sangat membantu mempermudah hampir setiap pekerjaan yang saya kerjakan di atas Window Manager ini.
Coba teman-teman bandingkan dengan keyboard shortcut yang disediakan oleh Desktop Environment untuk berpindah antar Workspace atau untuk berpindah antar focus Window.
Kira-kira, kalau sudah dapat berpindah antar Workspace dan Container dengan mudah, apakah masih diperlukan perintah seperti ALT+TAB?
Apabila memang diperlukan, saya juga menyediakan fitur ini, namun sangat jarang sekali saya pergunakan.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# For List All the Opened Container in Every Workspace10bindsym $mod+Tab exec --no-startup-id j4-dmenu-desktop --dmenu="rofi -show window -lines 10 -width 500 -display-window 'WORKSPACE'"11
Saya menggunakan SUPER+TAB, sebagai ganti dari ALT+TAB.
Gambar 12 - Mendaftar semua Window Container dengan Rofi
Memuat Ulang Konfigurasi
Setiap kita selesai mengubah atau mengurangi beberapa konfigurasi pada file ~/.configi/i3/config
, tidak serta merta langsung dapat kita lihat hasilnya. Selayaknya aplikasi konfigurasi GUI, kita perlu menekan tombol “Apply” terlebih dahulu. Nah, pada i3wm, setelah kita menyimpan file konfigurasi, kita dapat memuat ulang (reload) konfigurasi i3wm.
Saya menggunakan keyboard shortcut, SUPER+SHIFT+C.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Reload the Configuration File10bindsym $mod+Shift+c reload11
Nah, apabila terjadi keanehan atau kejanggalan pada i3 wm layout, kita dapat pula memuat ulang i3wm tanpa perlu keluar dari X session. Ini dapat pula kita lakukan untuk melihat hasil perubahan konfigurasi apabila menggunakan keyboard shortcut reload
di atas tidak berdampak apa-apa.
Saya menggunakan keyboard shortcut, SUPER+SHIFT+R.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Restart i3 Inplace (preserves your layout/session, can be used to upgrade i3)10bindsym $mod+Shift+r restart11
Binding Mode
Ini adalah salah satu fitur dari i3wm yang saya suka, namun belum saya manfaatkan dengan maksimal.
Binding Mode, adalah fitur dimana kita dapat mengumpulkan semua fungsi keyboard shortcut yang memiliki kelas yang sama.
Maksudnya gimana sih?
Jumlah karakter yang ada di atas keyboard memang sangat banyak. Namun, tidak menutup kemungkinan apabila kita memiliki kombinasi keyboard shortcut yang banyak, kita pun akan merasa kekurangan juga.
Untuk mengatasi hal ini, kita dapat mengelompokkan fungsi-fungsi keyboard shortcut yang memiliki tujuan yang sama, dalam satu tempat, dalam hal ini disebutnya Mode. Maka dari itu dinamakan Binding Mode.
Langsung saja saya berikan contohnya.
Saya ingin membuat pengaturan keyboard shortcut untuk “Resize Window Container” baik dalam tiling layout, maupun floating container. Fitur ini sangat diperlukan mengingat terkadang kita merasa butuh melebarkan atau mengecilkan sebuah Window Container.
Fitur ini setidaknya 8 kombinasi keyboard shortcut. 4 untuk me-resize atas, bawah, kanan kiri sebesar 1 px. 4 yang lain untuk me-resize atas, bawah, kanan, kiri sebesar 1 ppt.
Saya tetap ingin menggunakan tombol HJKL, namun sudah digunakan untuk fungsi “Window Focus”.
Saya masih tetap dapat menggunakan kombinasi keyboard shortcut yang serupa, dengan membuatnya menjadi Mode yang berbeda. Saya beri nama mode Resize.
Untuk membuatnya, pertama saya perlu menginisialisasi keyboard shortcut untuk mengaktifkan mode Resize.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Resize Window (you can also use the mouse for that)10bindsym $mod+r mode "resize"11
Dapat dilihat, saya menggunakan SUPER+R, untuk masuk/mengaktifkan mode ini.
Setelah itu saya akan mendefinisikan fungsi dari masing-masing keyboard shortcut.
$HOME/.config/i3/config
11
2233445566778899101011111212131314141515161617171818191920202121222223232424252526# ...
27# ...2829mode "resize" {30 # These bindings trigger as soon as you enter the resize mode3132 # Pressing left will shrink the window’s width.33 # Pressing right will grow the window’s width.34 # Pressing up will shrink the window’s height.35 # Pressing down will grow the window’s height.36 bindsym h resize shrink width 1 px37 bindsym j resize grow height 1 px38 bindsym k resize shrink height 1 px39 bindsym l resize grow width 1 px4041 # same bindings, but for the arrow keys42 bindsym Left resize shrink width 1 px or 1 ppt43 bindsym Down resize grow height 1 px or 1 ppt44 bindsym Up resize shrink height 1 px or 1 ppt45 bindsym Right resize grow width 1 px or 1 ppt4647 # back to normal: Enter or Escape48 bindsym Return mode "default"49 bindsym Escape mode "default"50}51
Kalau kita lihat, kombinasi keyboard shortcut ini mirip dengan konfigurasi pada “Window Focus”. Ya, benar sekali. Namun bedanya, kita perlu mengaktifkan mode Resize terlebih dahulu, untuk dapat menggunakan kombinasi keyboard shortcut di atas ini.
Sehingga, walaupun memiliki kombinasi keyboard shortcut yang sama, namun berada pada mode yang berbeda.
Pada baris di bawahnya, saya menambahkan keyboard shortcut untuk keluar dari mode Resize ke mode Default.
Keren bukan?
Saya baru menggunakan untuk 1 mode ini saja.
Sekarang teman-teman pasti sudah mempunyai gambaran, berapa banyak kombinasi *keyboard shortcut8 yang dapat kita buat. Tentunya akan sangat cukup dan memenuhi kebutuhan kita.
Gaps
Perlu teman-teman ketahui, bahwa i3wm tidak menyediakan fitur gaps atau “jeda” antar Window Container pada tiling layout.
Untuk dapat memiliki fitur gaps kita memerlukan forking project yaitu i3-gaps.
Bagi yang ingin menggunakan fitur ini. Silahkan merujuk pada dokumentasi i3-gaps, pada halam Github mereka.
Saya sendiri menggunakan i3-gaps juga.
$HOME/.config/i3/config
11
223344556677889910# ...
11# ...1213# gaps inner|outer14# current|all15# set|plus|minus <px>16gaps inner 017gaps outer 018smart_gaps on19
Karena saya cepat sekali bosan, jadi saya sering berganti-ganti suasana. Terkadang ingin menggunakan gaps, kadang juga tidak.
BAR
i3wm juga sudah secara default menyediakan atau membawa Bar mereka sendiri. Bar adalah tempat untuk Workspace indicator dan Status indicator.
Secara default, i3 meletakkan di bagian bawah dari layar.
Sejak Juli 2018, saya sudah memigrasikan penggunaan i3 bar menjadi Polybar, sehingga saya tidak lagi menggunakan i3 bar milik i3wm.
$HOME/.config/i3/config
11
22334455667# ...
8# ...910# bar {11# 2018/07 - I had migrated to PolyBar (https://github.com/jaagr/polybar)12# }13
Mengapa menggunakan Polybar?
Lebih fleksibel untuk membuat bar layout kita sendiri.
Mengeset Wallpaper
Saya menggunakan aplikasi bantuan bernama feh
untuk membuat desktop background saya memiliki wallpaper.
$ sudo pacman -S feh
Kemudian tambahkan konfigurasinya.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Background Wallpaper10exec_always --no-startup-id feh --bg-fill -Z ~/pix/Wallpapers/Arch-Wallpaper-Solarized.png11
Mengeset LockScreen
Seperti Desktop Environment, pada Window Manager, kita juga dapat mengeset lock screen.
Saya menggunakan aplikasi bantuan, di antaranya:
i3lock-color
xautolock
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# i3lock lockscreen13# (lock is bash script from nandavera | i3lock-color)14# Source: https://github.com/okitavera/dotfiles/blob/master/.bin/lock15bindsym $mod+Shift+x exec --no-startup-id /usr/bin/lock-dark16exec_always --no-startup-id xautolock -time 15 -locker "/usr/bin/lock-dark" && echo mem ? /sys/power/state17
Saya menggunakan SUPER+SHIFT+X untuk mengaktifkan lock screen secara manual. Saya menggunakan aplikasi bantuan yang saya rename menjadi lock-dark
yang awalnya bernama lock
buatan Nanda Okitavera yang juga menggunakan backend i3lock-color
.
Saya juga mengeset agar sistem akan mengaktifkan lock screen secara otomatis pada menit ke 15, menggunakan aplikasi xautolock
.
Atau, apabila terlalu ribet menggunakan script i3lock-color
dan lock
, bisa juga menggunakan slimlock
. Ini adalah aplikasi lock screen yang sudah disediakan oleh SLiM Display Manager.
Saya sendiri sudah tidak lagi menggunakan lightdm
sebagai Display Manager. Saat ini sedang menggunakan slim
. Karena lebih mudah untuk dikustomisasi.
Autostart Application
Untuk membuat aplikasi berjalan secara otomatis saat sistem pertama kali di jalankan, sangat mudah sekali dalam i3wm.
Cukup tambahkan pada file konfigurasi ~/.config/i3/config
baris kode seperti ini.
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112exec <nama_program>13exec_always <nama_program>1415exec --no-startup-id <nama_program>16exec_always --no-startup-id <nama_program>17
Saya akan mem-breakdown apalikasi apa saja yang saya jalankan saat sistem startup.
Power Manager
Saya menggunakan XFCE4-POWER-MANAGER.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# XFCE4-power-manager10exec --no-startup-id xfce4-power-manager11
Saya menggunakan aplikasi ini karena mudah digunakan, secara dulunya saya adalah XFCE user.
Beberapa pemanfaatan aplikasi xfce-power-manager yang pernah saya tuliskan ada di sini.
Clipboard
Saya menggunakan Clipmenu.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Clipmenu10exec --no-startup-id clipmenud11
Konfigurasi ini sudah pernah saya bahas pada postingan, di sini.
Disable Touchpad
Karena saya pengguna TrackPoint pada ThinkPad, saya kurang suka menggunakan Touchpad. Saya perlu untuk menonaktifkannya sejak sistem startup.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Disable TouchPad10exec_always --no-startup-id xinput --disable "SynPS/2 Synaptics TouchPad"11
Saya juga perlu menjaga agar Touchpad tetap dapat melakukan “Tap to Click”.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Enable Tap to Click10exec_always --no-startup-id xinput --set-prop "SynPS/2 Synaptics TouchPad" "libinput Tapping Enabled" 111
Polkit
Saya menggunakan memilih menggunakan lxpolkit
karena lebih independen dan dapat dipasang tanpa membawa dependensi lain seperti polkit yang dimiliki oleh GNOME.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Polkit-lxsession10exec --no-startup-id /usr/bin/lxpolkit11
Window Compositor
Saya menggunakan compton
sebagai window compositor. Secara sederhaa window compositor adalah aplikasi yang memberikan efek-efek pada Window Manager kita. Seperti shadow, blur, fade, opacity, dll.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Enable Compton for compositor10exec --no-startup-id compton --config ~/.config/compton/compton.conf11
Notification
Sebelumnya saya menggunakan notify-osd
, namun setelah mengenal dunst
saya malah jatuh cinta sama kesederhanannya. Sangat simpel dan tentu saja dapat dikonfigurasi menggunakan plain text.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Enable Dunst Notifications10exec --no-startup-id dunst -config ~/.config/dunst/dunstrc11
Conky
Window Manager masih memerlukan Compton?
Ini soal selera dan kebutuhan. Saya perlu dan butuh, jadi mengapa tidak.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Start Conky10exec --no-startup-id conky -c ~/.config/conky/conkyrc11
Polybar
Polybar termasuk aplikasi pengganti bar yang dapat kita gunakan. i3wm tentu saja mengijinkan usernya untuk mengganti default bar milik mereka dengan pihak ketiga, seperti: lemonbar, tint2, dzen, polybar, dll.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Enable Polybar10exec_always --no-startup-id ~/.config/polybar/launch.sh11
Keyboard Shortcuts
Kita juga dapat menambahkan pengaturan keyboard shortcut sendiri untuk memanggil apalikasi yang kita inginkan.
System Session
Saya menggunakan script rofi-power
untuk menampilkan dialog System Session seperti Logout, Restart, dan Shut Down.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Restart, Suspend, Shutdown, Logout Dialog10bindsym $mod+Shift+End exec --no-startup-id ~/.local/bin/rofi-power "i3-msg exit"11
Saya memanggil script ini dengan menggunakan SUPER+SHIFT+END
Script ini dapat teman-teman dapatkan pada dotfiles milik saya, di sini.
Clipmenu
Sebelumnya saya sudah menuliskan cara menjalankan backend service dari clipmenud
pada bagian autostart. Pada bagian ini saya akan menunjukkan pengaturan keyboard shortcut yang saya gunakan untuk memanggil Rofi yang berisi Clipboard.
$HOME/.config/i3/config
11
223344556# ...
7# ...89bindsym $mod+p exec --no-startup-id clipmenu10bindsym $mod+Shift+p exec --no-startup-id rm -rf /tmp/clipmenu/*11
Dapat dilihat, saya menggunakan SUPER+P untuk memanggil Rofi yang menampilkan isi dari clipboard.
Gambar 13 - Clipboard dalam keadaan terisi
Sedangkan untuk menghapus seluruh isi clipboard, saya menggunakan SUPER+SHIFT+P.
Gambar 14 - Clipboard dalam keadaan kosong
Volume Control
Sudah merupakan keharusan untuk memiliki sebuah keyboard shortcut yang dapat mengatur besar dan kecilnya volume suara.
$HOME/.config/i3/config
11
223344556677889# ...
10# ...1112# Pulse Audio controls13bindsym XF86AudioRaiseVolume exec --no-startup-id pamixer --increase 214bindsym XF86AudioLowerVolume exec --no-startup-id pamixer --decrease 215bindsym XF86AudioMute exec --no-startup-id pamixer --toggle-mute16bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute 1 toggle17
Dapat dilihat, kode dari keyboard di atas sangat aneh. Itu adalah penamaan dari function keyboard. Setiap laptop biasanya memiliki function keyboard seperti ini.
Di sini saya menggunakan paket pamixer
.
Audio Mixer
Audio mixer adalah aplikasi yang saya perlukan. Sebenarnya teman-teman juga memerlukan ini dan perlu mengetahui akan hal ini.
Karena tidak jarang saya mendapati pertanyaan seputar audio pada group Telegram Belajar GNU/Linux Indonesia, yang mempersoalkan tentang audio.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Pavucontrol10bindsym $mod+F3 exec --no-startup-id pavucontrol11
Saya menggunakan SUPER+F3 untuk memanggil pavucontrol
karena tombol F3 pada ThinkPad saya memiliki gambar Speaker. Untuk mempermudah dalam mengingat jadi saya manfaatkan.
Namun, belakangan ini sudah sangat jarang saya menggunakan pavucontrol
, lebih sering menggunakan ncpamixer
, tapi enah mengapa, aplikasi ini tidak dapat dijalankan dengan keybinding.
Gambar 5 - Tampilan TUI dari ncpamixer
Brightness Control
Kita juga memerlukan pengaturan pencahayaan pada layar agar tetap nyaman menggunakan laptop dalam waktu lama dan dapat menyesuaikan dengan kondisi cahaya dari lingkungan sekitar.
$HOME/.config/i3/config
11
22334455667# ...
8# ...910# Screen Brightness controls11bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 212bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 213
Saya mendapati informasi, bahwa beberapa distribusi sistem operasi sudah tidak dapat menggunakan perintah xbacklight
.
Apabila ini terjadi pada teman-teman, mungkin bisa mencari solusinya sendiri. Karena saya belum mengalaminya. Akan sangat sulit bagi saya melakukan perbaikan apabila saya belum mengalami pada sistem saya. Hehe.
Arandr
Arandr adalah aplikasi GUI untuk Xrandr. Sederhananya aplikasi ini saya gunakan untuk mengatur monitor apabila sedang menggunakan dual monitor.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Arandr10bindsym $mod+F7 exec --no-startup-id arandr11
Saya menggunakan SUPER+F7.
Lagi-lagi, karena tombol F7 saya bergambar projector, maka saya letakkan kombinasi untuk memanggil Arandr pada tombol ini.
Gambar 6 - Tampilan GUI dari Arandr
Network Manager
Saya tidak menggunakan trayicon untuk memilih network dan memanggil Network Manager Settings. Saya lebih senang tidak menggunakan trayicon agar tampilan desktop tetap clean dan tidak terlalu banyak icon yang tidak konvergen dengan theme.
Sebelumnya, saya menggunakan aplikasi nmtui
untuk melakukan konfigurasi jaringan, seperti: memilih-milih SSID. Namun, baru-baru saja saya menggunakan networkmanager_dmenu
.
Untuk memanggilnya, saya menggunakan SUPER+F8.
$HOME/.config/i3/config
11
223344556# ...
7# ...89# Network Manager Dmenu10bindsym $mod+F8 exec --no-startup-id networkmanager_dmenu11
Aplikasi ini dapat kita gunakan untuk memilih-mili jaringan dan beberapa menu jaringan. Dapat menggunakan dmenu
atau rofi
sebagai frontend nya. Tentu saja saya memilih menggunakan rofi
agar seragam dengan theme. Hehehe.
Instalasi
$ mkdir -p ~/.config/networkmanager-dmenu
$ git clone https://github.com/firecat53/networkmanager-dmenu.git ~/.config/networkmanager-dmenu
Konfigurasi
$ cd ~/.config/networkmanager-dmenu
$ cp config.ini.example config.ini
Edit file config.ini
untuk konfigurasi sesuai preferensi pribadi.
Contohnya seprti saya, yang ingin menggunakan Rofi sebagai user interface.
$ vim ~/.config/rofi/config.ini
$HOME/.config/rofi/config.ini
11
223344556677889910101111121213131414151516161717181819192020212122222323242425252626272728282929303031[dmenu]
32fn = Fantasque Sans Mono33dmenu_command = /usr/bin/rofi -width 2534# # Note that dmenu_command can contain arguments as well like `rofi -width 30`35# # Rofi and dmenu are set to case insensitive by default `-i`36# l = number of lines to display, defaults to number of total network options37# fn = font string38# nb = normal background (name, #RGB, or #RRGGBB)39# nf = normal foreground40# sb = selected background41# sf = selected foreground42# b = (just set to empty value and menu will appear at the bottom43# m = number of monitor to display on44# p = Custom Prompt for the networks menu45p = NETWORKS46# pinentry = Pinentry command47# rofi_highlight = <True or False> # (Default: False) use rofi highlighting instead of '**'4849# # override normal foreground and background colors (dmenu) or use the50# # -password option (rofi) to obscure passphrase entry51# [dmenu_passphrase]52# nf = #22222253# nb = #22222254# rofi_obscure = True5556[editor]57terminal = st58gui_if_available = True59# terminal = <name of terminal program>60# gui_if_available = <True or False>61
Hasilnya, akan seperti di bawah ini.
Gambar 7 - Tampilan NetworkManager_dmenu dengan Rofi
Dotfiles
Bagi yang memerlukan contoh file konfig secara lengkap, dapat melihat pada dotfiles milik saya, di sini. (Sedang Diperbaiki)
Pesan Penulis
i3wm dapat dikatakan Window Manager yang cukup kaya fitur, ada beberapa orang yang tidak menyukai hal ini, karena dianggap terlalu bloated.
Bagi yang sudah mengenal banyak Window Manager mungkin dapat secara mandiri menanamkan fitur-fitur yang mereka perlukan, namun bagi saya yang baru pertama kali belajar menggunakan Window Manager, adanya fitur-fitur ini dapat menjadi jembatan belajar untuk mengerti apa saja fitur-fitur yang diperlukan oleh sebuah Window Manager.
Bagi teman-teman yang membutuhkan workflow yang efisien dan efektif. Saya sangat merekomendasikan untuk menggunakan i3wm.
Selama setahun terakhir, saya sudah merasakan manfaatnya. Tentu saja akan terasa sulit pada awalnya. Semua hal juga seperti itu. Jadi, paksakan dan biasakan saja, karena nikmatnya akan kamu petik tidak akan lama lagi.
Tulisan ini bukan merupakan tandingan dari dokumentasi resmi yang sudah ada. i3wm disebut sebagai Window Manager yang memiliki dokumentasi yang baik, lengkap dan up to date. Jadi, sangat saya rekomendasikan untuk berekplorasi menggunakan dokumentasi resmi.
Banyak sekali hal-hal teknis yang tidak atau belum sempat saya tuliskan. Seperti halnya aplikasi-aplikasi pendukung yang perlu dijalankan saat startup session, seperti: keyring, ssh-agent, gpg-agent, dll.
Tapi tidak mengapa. Saya yakin teman-teman dapat mencarinya sendiri pada referensi yang lain.
Sekiranya seperti ini saja.
Mudah-mudahan dapat bermanfaat bagi teman-teman.
Terima kasih.
Per-April 2019, saya sudah berpindah menggunakan BSPWM (Binary Space Partition Window Manager)
Per-April 2020, saya sudah beralih menggunakan DWM (Dynamic Window Manager)
Referensi
-
wiki.archlinux.org/index.php/Window_manager
Diakses tanggal: 2019/02/26 -
wiki.archlinux.org/index.php/Desktop_environment
Diakses tanggal: 2019/02/26 -
www.youtube.com/watch?v=j1I63wGcvU4&list=PL5ze0DjYv5DbCv9vNEzFmP6sU7ZmkGzcf
Diakses tanggal: 2019/02/26 -
i3wm.org/docs/
Diakses tanggal: 2019/02/26 -
i3wm.org/docs/userguide.html
Diakses tanggal: 2019/02/26 -
github.com/Airblader/i3
Diakses tanggal: 2019/02/26