بسم الله الرحمن الرحيم

Informasi

Sudah ada versi yang lebih baru dari topik ini.

Silahkan mengunjungi alamat di bawah.

"Memanfaatkan Dunst Sebagai PopUp Notifikasi Bantuan Keyboard Shortcut (ver. 2)"

Prakata

Sebenarnya agak malu menuliskan dokumentasi kali ini. Karena merasa algoritma pemecahan solusinya terlalu bertele-tele. Hihihi. Tapi ah sudahlah! Namanya juga belajar.

Mungkin sebagian dari teman-teman yang menggunakan environment sistem yang mirip seperti saya, pernah mengalami “lupa” terhadap beberapa keyboard shortcut yang jarang digunakan.

Hal ini sangat wajar – setidaknya menurut saya. Karena environment kami dalam menggunakan aplikasi mengharuskan untuk menggunakan keyboard shortcut.

Sebentar…

Mungkin ada beberapa dari teman-teman yang belum mengerti. Environment seperti apa sih itu?

  1. i3 Window Manager
  2. Tmux
  3. Vim
  4. Ranger
  5. Neomutt
  6. Newsboat
  7. MPV
  8. st Terminal
  9. dst…

Di atas adalah contoh dari beberapa aplikasi yang memiliki konfigurasi keyboard shortcut agar dapat digunakan.

Memang tidak semua kita gunakan dan kita perlukan.

Maka dari itu, tujuan tulisan kali ini adalah untuk memecahkan permasalahan apabila kita mengalami kelupaan dan tidak ingin repot membuka man (manual) dari aplikasi tersebut. Cukup dengan membuat script sederhana untuk memanggil “catatan” berisi keyboard shortcut yang sudah kita rangkum sebelumnya.

Sangat memudahkan sekali (menurut saya). Hehe.

Sekenario

Ada banyak sekali blueprint yang terpikirkan, namun untuk saat ini, saya menggunakan cara yang akan saya tuliskan ini terlebih dahulu.

Karena daripada menunggu sampai berhasil menerapkan rancangan yang ideal namun tidak sempat menuliskan proses awalnya. Saya memutuskan untuk langsung menuliskan catatan di blog ini.

Sekenarionya secara sederhana akan seperti ini:

  1. Membuat Shell script yang digunakan untuk menampilkan isi dari sebuah direktori, sekaligus dapat mengeksekusi isi file yang ada di dalamnya apabila dipilih.
  2. Membuat Shell script yang digunakankan untuk memanggil dunstify yang akan menampilkan file text yang berisi daftar keyboard shortcut.
  3. Membuat file text berisi daftar keyboard shortcut.

Eksekusi

Membuat Script File Browser

Pada tahap ke-1 ini, saya menyebut ini sebagai file browser karena secara global memang menggunakan perintah ls yang berarti list atau daftar. Namun dengan menambahkan kemampuan untuk eksekusi file yang dipilih.

  1. Buat file bernama help-script-browser.sh.

    Saya memilih untuk meletakannya pada direktori ~/.config/rofi/.

    $ cd ~/.config/rofi
    $ touch help-script-browser.sh
    $ chmod +x help-script-browser.sh
    $ vim help-script-browser.sh

    Isikan di dalamnya seperti ini.

    #!/bin/env sh
    
    # direktori target tempat script dunstify berada
    helpDir=~/.config/rofi-help
    
    # untuk menghandle argument
    if [ -n "$@" ]; then
    helpDir="${helpDir}/$@"
    fi
    
    # untuk menghandle apabila argument bukan merupakan direktori
    if [ ! -d "${helpDir}" ]; then
        coproc ( "${helpDir}" & > /dev/null  2>&1 )
        exit;
    fi
    
    # proses direktori target
    helpDir=$(readlink -e "${helpDir}")
    pushd "${helpDir}" >/dev/null
    
    # tampilkan hanya shell script kecuali file text
    ls --group-directories-first --hide="keybinds-*"
    
  2. Apabila teman-teman menggunakan i3wm dan Rofi, tinggal kita buatkan konfigurasi bindkey nya saja. Pada konfigurasi i3wm.

    $ vim ~/.config/i3/config

    Tambahkan seperti ini, kira-kira.

    # ...
    # ...
    
    # Keybind Bantuan
    bindsym $mod+F10 exec --no-startup-id rofi -modi "KEYBINDS:~/.config/rofi/help-script-browser.sh" -show KEYBINDS -lines 6 -width 300
    

    Dapat dilihat bahwa saya meletakkannya pada SUPER+F10.

    Silahkan menyesuaikan dengan preferensi masing-masing.

    Tahap ke-1, telah selesai.

Membuat Script Dunstify

Pada tahap ke-2, saya akan membuat Shell script yang akan berpasangan dengan file text berisi daftar keyboard shortcut.

Jadi, pada tahap ini, satu Shell script mewakili satu file text.

Misalnya,

Shell Script
File Text
i3 Window Manager.sh keybinds-i3.txt
MPV Video Player.sh keybinds-mpv.txt
VIM Text Editor.sh keybinds-vim.txt
dst… dst…
  1. Buat direktori khusus untuk menyimpan Shell script ini. Saya akan memilih membuat direktori baru dengan nama ~/.config/rofi-help/.

    $ mkdir -p ~/.config/rofi-help
  2. Buat file Shell script dari keyboard shortcut yang akan kita gunakan.

    Misalkan i3wm. Namun, jangan berikan ekstensi .sh agar tampilannya lebih rapi.

    $ cd ~/.config/rofi-help
    $ touch "I3WM Window Manager"
    $ chmod +x "I3WM Window Manager"
    $ vim "I3 Window Manager"

    Kemudian isikan seperti ini.

    #!/bin/env sh
    dunstify "i3WM KEYBINDS:" "`tail -n 50 $HOME/.config/rofi-help/keybinds-i3`"
    

    Shell script di atas, memanggil file text dengan nama keybinds-i3 yang akan kita buat setelah ini.

Membuat Daftar Keyboard Shortcut

Pada tahap ke-3, kita perlu membuat file text yang berisi daftar dari keyboard shortcut.

Saya akan melanjutkan proses di atas. Yaitu membuat file text untuk daftar keyboard shortcut dari i3wm.

  1. Masih pada direktori sebelumnya, yaitu di ~/.config/rofi-help/.

    Buat file text dengan nama yang relevan dengan Shell script yang kita buat di atas.

    Dalam konteks ini, kita sedang membuat untuk daftar keyboard shortcut dari i3wm.

    $ touch keybinds-i3

    Perhatian! Saya menggunakan aturan penamaan yang sama pada setiap file text. Yaitu, dengan memberikan awalan keybinds-.

    Tujuannya agar saat dipanggil dengan program help-script-browser.sh, semua file yang tidak berawalan keybinds-, tidak ikut ditampilkan di dalam rofi.

  2. Selanjutnya tinggal mengisi daftar dari keyboard shortcut dari i3wm yang kita perlukan.

    Sebagai contoh, ini adalah beberapa daftar keyboard shortcut i3wm yang saya perlukan.

    <b>LAUNCHER--------------------------------</b>
    mod+Enter          Terminal
    mod+Shift+End      Sessions Dialog
    mod+Shift+x        Lock Screen
    mod+Shift+q        Kill Window Focus
    mod+Shift+r        Restart i3 Config
    mod+d              Rofi: App Launcher
    mod+Tab            Rofi: Window Switcher
    mod+/              Rofi: Help
    mod+p              Rofi: Clipboard
    mod+Shift+p        Clipboard Cleared
    mod+Print          Screenshot Silently
    mod+Shift+Print    Screenshot GUI
    mod+F7             Arandr
    mod+F8             Wifi ON/OFF [T]
    <b>LAYOUT----------------------------------</b>
    mod+s              Layout: Stacking
    mod+w              Layout: Tabbed
    mod+e              layout: Split [T]
    mod+b              Split Horizontal
    mod+v              Split Vertical
    mod+o              Blank Space
    <b>WINDOW----------------------------------</b>
    mod+f              Fullscreen Window [T]
    mod+r              Resize Window
    mod+Shift+Plus     Sticky Window [T]
    mod+Shift+Minus    Scratchpad Mode [T]
    mod+Minus          Scratchpad Show [T]
    mod+Shift+Space    Floating Window [T]
    mod+Space          Change Focus [T]
    mod+a              Focus Parent
    mod+Shidt+a        Focus Child
    <b>BORDER----------------------------------</b>
    mod+t              Border Normal 1
    mpd+shift+t        Border Normal 0
    mod+y              Border None
    mod+shift+y        Border Pixer 1
    <b>WALLPAPER-------------------------------</b>
    mod+F5             Blogging Mode
    mod+F6             Unixporn Mode
    

    Tinggi dari notifikasi ini tidak kurang dari 50 baris dan lebarnya tidak lebih dari 40 karakter.

    Pengaturan lebar dari notifikasi Dunst ini akan berbeda setiap dari teman-teman. Bergantung pada konfigurasi lebar notifikasi dunst yang teman-teman pergunakan (pada dunstrc bagian geometry = ).

    Contoh-contoh daftar keboard shortcut yang saya pergunakan dapat di lihat pada dotfiles milik saya, di sini.


Silahkan menambahkan menambahkan sendiri untuk membuat daftar keyboard shortcut aplikasi yang lain. Dengan mengulang tahap ke-2 dan ke-3.

Hasilnya

gambar_1

Gambar 1 - Demonstrasi hasil akhir dari semua proses di atas

Pesan Penulis

Saya menyadari bahwa masih terdapat banyak kekurangan dari metode yang saya gunakan untuk membuat “bantuan pengingat keyboard shortcut” ini. Sehingga tidak menutup kemungkinan pada kesempatan berikutnya akan ada metode lain yang saya tulisakan kembali.

Mudah-mudahan catatan saya yang sederhana ini dapat memberikan inspirasi kepada teman-teman untuk membuat metode yang lebih baik.

Saya rasa, seperti ini saja.


Penulis

bandithijo

My journey kicks off from reading textbooks as a former Medical Student to digging bugs as a Software Engineer – a delightful rollercoaster of career twists. Embracing failure with the grace of a Cat avoiding water, I've seamlessly transitioned from Stethoscope to Keyboard. Armed with ability for learning and adapting faster than a Heart Beat, I'm on a mission to turn Code into a Product.

- Rizqi Nur Assyaufi

dccdf58fd8b5291092f9298491df3aa00affca3f